From: Junio C Hamano <gitster@pobox.com>
To: Martin Erik Werner <martinerikwerner@gmail.com>
Cc: git@vger.kernel.org, richih@debian.org, tboegi@web.de,
pclouds@gmail.com, dak@gnu.org
Subject: Re: [PATCH v5 4/5] setup: Add 'abspath_part_inside_repo' function
Date: Tue, 04 Feb 2014 10:09:38 -0800 [thread overview]
Message-ID: <xmqqlhxqagwt.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <20140203231659.GC15607@mule> (Martin Erik Werner's message of "Tue, 4 Feb 2014 00:16:59 +0100")
Martin Erik Werner <martinerikwerner@gmail.com> writes:
> Will you add that test or should I place it in the series with you as
> author?
Either is fine. Thanks.
> On Mon, Feb 03, 2014 at 01:00:48PM -0800, Junio C Hamano wrote:
>> Martin Erik Werner <martinerikwerner@gmail.com> writes:
>>
>> > The path being exactly equal to the work tree is handled separately,
>> > since then there is no directory separator between the work tree and
>> > in-repo part.
>>
>> What is an "in-repo part"? Whatever it is, I am not sure if I
>> follow that logic. After the while (*path) loop checks each level,
>> you check the whole path---wouldn't that code handle that special
>> case already?
>
> Given "/dir1/repo/dir2/file" I've used 'in-repo' to refer to
> "dir2/file", sometimes interchangably with "part inside the work tree"
> which might be better terminology, and should replace it?
Yes, "inside the working tree" is much clearer than "inside repo",
because the word "repository" often is used to mean only the stuff
inside $GIT_DIR, i.e. what controls the working tree files.
> I was trying to convey that if path is simply "/dir/repo", then the while
> loop method of replacing a '/' and checking from the beginning won't
> work for the last level, since it has no terminating '/' to replace, so
> hence it's a special case, mentioning the "part inside the work tree"
> is arguably confusing in that case, since there isn't really one, maybe
> it should be left out completely, since the "check each level"
> explanation covers it already?
I dunno about the explanation, but it still looks strange to have
the special case to deal with "/dir/repo" before you enter the while
loop, and then also have code immediately after the loop that seems
to handle the same case. Isn't the latter one redundant?
>> Because it is probably the normal case not to have any symbolic link
>> in the leading part (hence not having to dereference them), I think
>> checking "is work_tree[] a prefix of path[]" early is justified from
>> performance point of view, though.
>>
>> > /*
>> > + * No checking if the path is in fact an absolute path is done, and it must
>> > + * already be normalized.
>>
>> This is not quite parsable to me.
> Hmm, what about
> The input parameter must contain an absolute path, and it must
> already be normalized.
OK.
>> > + const char* work_tree = get_git_work_tree();
>> > + if (!work_tree)
>> > + return -1;
>> > + wtlen = strlen(work_tree);
>> > + len = strlen(path);
>>
>> I expect that this is called from a callsite that _knows_ how long
>> path[] is. Shouldn't len be a parameter to this function instead?
>
> Currently, it actually doesn't, since 'normalize_path_copy_len' is
> called on it prior, which can mess with the string length.
OK, strlen() here is perfectly fine, then.
>> Hmph.... How do our callers treat an empty path? In other words,
>> should these three be equivalent?
>>
>> cd /a && git ls-files /a
>> cd /a && git ls-files ""
>> cd /a && git ls-files .
>
> Here I have only gone by the assumption that previous code did the right
> thing,...
Good to know. And the answer to the above question I think is yes,
these should be equivalent.
Thanks.
next prev parent reply other threads:[~2014-02-04 18:09 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-15 12:48 git-mv with absolute path derefereces symlinks Martin Erik Werner
2014-01-26 14:22 ` [PATCH 0/2] in-tree symlink handling with absolute paths Martin Erik Werner
2014-01-26 14:22 ` [PATCH 1/2] t0060: Add test for manipulating symlinks via " Martin Erik Werner
2014-01-26 14:22 ` [PATCH 2/2] setup: Don't dereference in-tree symlinks for " Martin Erik Werner
2014-01-26 17:19 ` Torsten Bögershausen
2014-01-27 0:07 ` Martin Erik Werner
2014-01-27 0:07 ` [PATCH v2 " Martin Erik Werner
2014-01-27 0:49 ` Duy Nguyen
2014-01-27 16:31 ` Junio C Hamano
2014-01-31 20:21 ` [PATCH v3 0/4] " Martin Erik Werner
2014-02-02 1:59 ` [PATCH v4 0/4] Handling of " Martin Erik Werner
2014-02-02 1:59 ` [PATCH v4 1/4] t0060: Add test for manipulating symlinks via " Martin Erik Werner
2014-02-02 1:59 ` [PATCH v4 2/4] t0060: Add test for prefix_path when path == work tree Martin Erik Werner
2014-02-02 1:59 ` [PATCH v4 3/4] setup: Add 'abspath_part_inside_repo' function Martin Erik Werner
2014-02-02 2:19 ` Duy Nguyen
2014-02-02 2:23 ` Duy Nguyen
2014-02-02 11:13 ` Martin Erik Werner
2014-02-02 11:21 ` David Kastrup
2014-02-02 11:37 ` Torsten Bögershausen
2014-02-02 12:09 ` Martin Erik Werner
2014-02-02 12:27 ` Torsten Bögershausen
2014-02-02 12:15 ` Duy Nguyen
2014-02-02 1:59 ` [PATCH v4 4/4] setup: Don't dereference in-tree symlinks for absolute paths Martin Erik Werner
2014-02-02 16:35 ` [PATCH v5 0/5] Handling of " Martin Erik Werner
2014-02-02 16:35 ` [PATCH v5 1/5] t0060: Add test for manipulating symlinks via " Martin Erik Werner
2014-02-03 18:50 ` Junio C Hamano
2014-02-03 19:52 ` Junio C Hamano
2014-02-03 20:12 ` Martin Erik Werner
2014-02-02 16:35 ` [PATCH v5 2/5] t0060: Add test for prefix_path when path == work tree Martin Erik Werner
2014-02-02 16:35 ` [PATCH v5 3/5] t0060: Add tests for prefix_path when path begins with " Martin Erik Werner
2014-02-02 16:35 ` [PATCH v5 4/5] setup: Add 'abspath_part_inside_repo' function Martin Erik Werner
2014-02-03 21:00 ` Junio C Hamano
2014-02-03 23:16 ` Martin Erik Werner
2014-02-04 18:09 ` Junio C Hamano [this message]
2014-02-04 18:32 ` Martin Erik Werner
2014-02-02 16:35 ` [PATCH v5 5/5] setup: Don't dereference in-tree symlinks for absolute paths Martin Erik Werner
2014-02-03 4:15 ` Duy Nguyen
2014-02-03 13:17 ` Martin Erik Werner
2014-02-04 0:05 ` Junio C Hamano
2014-02-04 14:25 ` [PATCH v6 0/6] Handling of " Martin Erik Werner
2014-02-04 14:25 ` [PATCH v6 1/6] t3004: Add test for ls-files on symlinks via " Martin Erik Werner
2014-02-04 14:25 ` [PATCH v6 2/6] t0060: Add test for prefix_path " Martin Erik Werner
2014-02-04 14:25 ` [PATCH v6 3/6] t0060: Add test for prefix_path when path == work tree Martin Erik Werner
2014-02-04 14:25 ` [PATCH v6 4/6] t0060: Add tests for prefix_path when path begins with " Martin Erik Werner
2014-02-04 20:00 ` Torsten Bögershausen
2014-02-04 20:07 ` Junio C Hamano
2014-02-04 14:25 ` [PATCH v6 5/6] setup: Add 'abspath_part_inside_repo' function Martin Erik Werner
2014-02-04 19:18 ` Junio C Hamano
2014-02-04 14:25 ` [PATCH v6 6/6] setup: Don't dereference in-tree symlinks for absolute paths Martin Erik Werner
2014-01-31 20:22 ` [PATCH v3 1/4] t0060: Add test for manipulating symlinks via " Martin Erik Werner
2014-01-31 20:22 ` [PATCH v3 2/4] t0060: Add test for prefix_path when path == work tree Martin Erik Werner
2014-01-31 20:22 ` [PATCH v3 3/4] setup: Add 'abspath_part_inside_repo' function Martin Erik Werner
2014-01-31 22:37 ` Torsten Bögershausen
2014-02-01 1:31 ` Martin Erik Werner
2014-02-01 2:31 ` Duy Nguyen
2014-01-31 20:23 ` [PATCH v3 4/4] setup: Don't dereference in-tree symlinks for absolute paths Martin Erik Werner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqlhxqagwt.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=dak@gnu.org \
--cc=git@vger.kernel.org \
--cc=martinerikwerner@gmail.com \
--cc=pclouds@gmail.com \
--cc=richih@debian.org \
--cc=tboegi@web.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.