Re: [PATCH v2 2/2] submodules: always use a relative path from gitdir to work tree
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 14, 2012, 20:24 UTC
- Message-ID
- <7v4nut6u4s.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <4F3A9B98.6040908@web.de>
Jens Lehmann <Jens.Lehmann@web.de> writes:
> After adding a comment, using test instead of [], testing both $a and > $b and assigning each variable on it's own line I get the following > interdiff. Does that make more sense?
My earlier request for comment was to say
# $a is always longer than $b for such and such reasons
to explain why testing $b without testing $a was sufficient.
It is obvious (at least to me) that the loop continues as long as $a and $b begin with the same string before their first '/' and removes that common segment from both of them, so I do not think the new comment is absolutely necessary, but it would not hurt to have it, especially it is short enough and to the point.
Thanks.
Show 18 quoted lines
> diff --git a/git-submodule.sh b/git-submodule.sh
> index 3463d6d..ed76ce2 100755
> --- a/git-submodule.sh
> +++ b/git-submodule.sh
> @@ -172,9 +172,11 @@ module_clone()
>
> a=$(cd "$gitdir" && pwd)
> b=$(cd "$path" && pwd)
> - while [ "$b" ] && [ "${a%%/*}" = "${b%%/*}" ]
> + # Remove all common leading directories
> + while test -n "$a" && test -n "$b" && test "${a%%/*}" = "${b%%/*}"
> do
> - a=${a#*/} b=${b#*/};
> + a=${a#*/}
> + b=${b#*/}
> done
> rel=$(echo $a | sed -e 's|[^/]*|..|g')
> (clear_local_git_env; cd "$path" && git config core.worktree "$rel/$b")