Re: [RFC PATCH] rev-parse: add --show-superproject-working-tree
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 7, 2017, 07:23 UTC
- Message-ID
- <xmqqh935y2hc.fsf@junio-linux.mtv.corp.google.com>
- In-Reply-To
- <xmqqr329y2sm.fsf@junio-linux.mtv.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 13 quoted lines
>> - If our submodule is bound at path sub/dir in the superproject, >> the relative-path thing above would get "dir" and this ls-tree >> ends up asking what is at "dir", but the question you really want >> to ask is what is at "sub/dir", isn't it? > > IOW, the basic ontline of the idea may be OK, but I think you would > want to do something along this line: > > - chdir to .. from the root of your submodule working tree; > - in that .. directory, ask what prefix it is (you'd get > "sub/dir", or "not a git" if you are not a submodule); > - in that .. directory, ask ls-files what sub/dir is; > - if it is 160000, you're happy.
Nah, that wouldn't be necessary and would not work. --prefix would be "sub" in that case, and you'd need to concatenate the "dir" that is the basename of the path to the submodule to get "sub/dir".
Besides, output from "ls-files" by default is relative to cwd, so if you did ls-files or ls-tree HEAD in "sub/", you'll find where you came from as "dir", not "sub/dir", so the original code happens to work even from a subdirectory of a superproject, but the reason why it works is a bit subtle. Perhaps it deserves in-code comment to explain it.