From: Bert Wesarg Date: Mon, 16 Mar 2009 23:25:38 GMT Subject: Re: [TopGit PATCH] tg-patch: fix invocation in sub working tree directory Message-ID: <36ca99e90903161625x317556f4hc826aabd01494ca0@mail.gmail.com> In-Reply-To: <7vbps1umg9.fsf@gitster.siamese.dyndns.org> On Mon, Mar 16, 2009 at 23:33, Junio C Hamano wrote: > Bert Wesarg writes: > >> tg patch won't work in a sub directory of the working tree, because 'git diff >> --name-only' prints the names relative to the top working tree. > > "diff --relative --name-only"? No, unfortunately. In my bug case the changed file was in another subtree, and --relative restricts the output to only files under the current subtree. > >> This is only a quick fix which prefixes all file names with 'git rev-parse >> --show-cdup'. The right solution would be to cd into the top working tree >> somewhere in tg.sh. >> >> Signed-off-by: Bert Wesarg >> >> --- >>  tg-patch.sh |    7 ++++++- >>  1 files changed, 6 insertions(+), 1 deletions(-) >> >> diff --git a/tg-patch.sh b/tg-patch.sh >> index d701c54..e33bab2 100644 >> --- a/tg-patch.sh >> +++ b/tg-patch.sh >> @@ -50,13 +50,18 @@ cat_file "$topic:.topmsg" >>  echo >>  [ -n "$(git grep $diff_opts '^[-]--' ${diff_committed_only:+"$name"} -- ".topmsg")" ] || echo '---' >> >> +# if we are in a sub working tree dir, we need to prefix all file names from >> +# git diff --name-only with this cdup >> +cdup=$(git rev-parse --show-cdup) >> ... >> +     sed -e "s#^#$cdup#" "$git_is_stupid" | > > Do TopGit folks care about special characters in pathnames? Do 'git rev-parse --show-cdup' return anything other than slashes and dots? Bert