All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Lehmann <Jens.Lehmann@web.de>
To: Johannes Sixt <j6t@kdbg.org>
Cc: Junio C Hamano <gitster@pobox.com>,
	Git Mailing List <git@vger.kernel.org>,
	Bob Halley <halley@play-bow.org>, Phil Hord <phil.hord@gmail.com>
Subject: Re: [PATCH] submodules: don't stumble over symbolic links when cloning recursively
Date: Wed, 11 Jul 2012 22:06:05 +0200	[thread overview]
Message-ID: <4FFDDCAD.5080001@web.de> (raw)
In-Reply-To: <4FFDCFA4.9060602@kdbg.org>

Am 11.07.2012 21:10, schrieb Johannes Sixt:
> Am 11.07.2012 20:11, schrieb Jens Lehmann:
>> Since 69c305178 (submodules: refactor computation of relative gitdir path)
>> cloning a submodule recursively fails for recursive submodules when a
>> symbolic link is part of the path to the work tree of the superproject.
>>
>> This happens when module_clone() tries to find the relative paths between
>> work tree and git dir. When a symbolic link in current $PWD points to a
>> directory in a different level determining the number of "../" needed to
>> traverse to the superprojects work tree leads to a wrong result.
>>
>> As there is no portable way to say "pwd -P" use cd_to_toplevel to remove
>> the link from the pwd, which fixes this problem.
> ...
>> -	a=$(cd "$gitdir" && pwd)/
>> -	b=$(cd "$sm_path" && pwd)/
>> +	a=$(cd_to_toplevel && cd "$gitdir" && pwd)/
>> +	b=$(cd_to_toplevel && cd "$sm_path" && pwd)/
> 
> But if you cd out, how can it be correct not to cd in again if $gitdir
> and/or $sm_path are relative?

I'm not sure what you mean by "cd out", but the two "cd_to_toplevel"
make sure that when $gitdir or $sm_path are relative the symbolic link
gets removed from the output of pwd. So it's rather "cd into the path
where the symlink is resolved".

> And if $gitdir and/or $sm_path are absolute, how can the earlier
> cd_to_toplevel make a difference?

Then it doesn't, but $sm_path is always relative while $gitdir is
sometimes (in the superproject it returns ".git"). Just drop either
of the "cd_to_toplevel" and run the test ;-)

But it looks like the commit message could use some tuning ...

>> +test_expect_success 'submodule update can handle symbolic links in pwd' '
> 
> Please add a SYMLINKS prerequisite.

Oops. Thanks, will add that.

Will wait some time for other comments before preparing v2.

  reply	other threads:[~2012-07-11 20:06 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-11 18:11 [PATCH] submodules: don't stumble over symbolic links when cloning recursively Jens Lehmann
2012-07-11 19:10 ` Johannes Sixt
2012-07-11 20:06   ` Jens Lehmann [this message]
2012-07-11 20:39     ` Johannes Sixt
2012-07-11 21:08       ` Jens Lehmann
2012-07-12 17:12         ` Johannes Sixt

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=4FFDDCAD.5080001@web.de \
    --to=jens.lehmann@web.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=halley@play-bow.org \
    --cc=j6t@kdbg.org \
    --cc=phil.hord@gmail.com \
    /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.