Re: [PATCH 7/9] difftool: teach difftool to handle directory diffs

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH 7/9] difftool: teach difftool to handle directory diffs

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:53:21

Tim Henigan [off-list ref] writes:
However, when 'difftool --dir-diff' is run from a subdirectory of the
Git repository, there are problems.
  - The temporary index file generated by 'git update-index' appears
to be correct.
  - 'git checkout-index --all --prefix=$tmp' command does not work
(output tmp dir is empty).
Hrmph.

$ rm -fr /tmp/xyz
$ cd Documentation
$ git checkout-index --all --prefix=/tmp/xyz/
$ ls -F /tmp/xyz
Documentation/
$ rm -fr /tmp/xyz
$ GIT_DIR=$(pwd)/../.git GIT_WORK_TREE=$(pwd) \
  git checkout-index --all --prefix=/tmp/xyz/
$ ls -FC /tmp/xyz | head -2 
abspath.c                   git-merge-octopus.sh*       reflog-walk.c
aclocal.m4                  git-merge-one-file.sh*      reflog-walk.h

Be sure to have the trailing slash in $tmp.

Re: [PATCH 7/9] difftool: teach difftool to handle directory diffs

From: Tim Henigan <hidden>
Date: 2016-06-15 22:53:21

On Tue, Mar 20, 2012 at 2:35 PM, Junio C Hamano [off-list ref] wrote:
Tim Henigan [off-list ref] writes:
quoted
However, when 'difftool --dir-diff' is run from a subdirectory of the
Git repository, there are problems.
  - The temporary index file generated by 'git update-index' appears
to be correct.
  - 'git checkout-index --all --prefix=$tmp' command does not work
(output tmp dir is empty).
Hrmph.

$ rm -fr /tmp/xyz
$ cd Documentation
$ git checkout-index --all --prefix=/tmp/xyz/
$ ls -F /tmp/xyz
Documentation/
$ rm -fr /tmp/xyz
$ GIT_DIR=$(pwd)/../.git GIT_WORK_TREE=$(pwd) \
 git checkout-index --all --prefix=/tmp/xyz/
$ ls -FC /tmp/xyz | head -2
abspath.c                   git-merge-octopus.sh*       reflog-walk.c
aclocal.m4                  git-merge-one-file.sh*      reflog-walk.h

Be sure to have the trailing slash in $tmp.
It turns out that 'Git::command_oneline()' does not honor environment
variables set prior to calling the function.

This change fixed the problem:

- $repo->command_oneline(["checkout-index", "-a", "--prefix=$ldir/"]);
+ $ENV{GIT_DIR} = $repo->repo_path();
+ system(('git', 'checkout-index', '-a', "--prefix=$ldir/"));

I'm still testing, but will submit an updated patch soon.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help