Merge branch 'jk/difftool-dir-diff-edit-fix'
authorJunio C Hamano <gitster@pobox.com>
Thu, 28 Mar 2013 21:37:22 +0000 (14:37 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 28 Mar 2013 21:37:22 +0000 (14:37 -0700)
"git difftool --dir-diff" made symlinks to working tree files when
preparing a temporary directory structure, so that accidental edits
of these files in the difftool are reflected back to the working
tree, but the logic to decide when to do so was not quite right.

* jk/difftool-dir-diff-edit-fix:
  difftool --dir-diff: symlink all files matching the working tree
  difftool: avoid double slashes in symlink targets
  git-difftool(1): fix formatting of --symlink description

1  2 
git-difftool.perl
t/t7800-difftool.sh

Simple merge
index 3aab6e15000f57e76d05f70920525d5734e20ef7,db3d3d6bd1d8a979ee757bb7faca0adec853485b..c6d6b1c99fe98b7dc692eaf3828a08696bfb5e10
@@@ -335,15 -365,37 +335,37 @@@ test_expect_success PERL 'difftool -d' 
  '
  
  test_expect_success PERL 'difftool --dir-diff' '
 -      diff=$(git difftool --dir-diff --extcmd ls branch) &&
 -      echo "$diff" | stdin_contains sub &&
 -      echo "$diff" | stdin_contains file
 +      git difftool --dir-diff --extcmd ls branch >output &&
 +      stdin_contains sub <output &&
 +      stdin_contains file <output
  '
  
+ write_script .git/CHECK_SYMLINKS <<\EOF
+ for f in file file2 sub/sub
+ do
+       echo "$f"
+       readlink "$2/$f"
+ done >actual
+ EOF
+ test_expect_success PERL,SYMLINKS 'difftool --dir-diff --symlink without unstaged changes' '
+       cat >expect <<-EOF &&
+       file
+       $(pwd)/file
+       file2
+       $(pwd)/file2
+       sub/sub
+       $(pwd)/sub/sub
+       EOF
+       git difftool --dir-diff --symlink \
+               --extcmd "./.git/CHECK_SYMLINKS" branch HEAD &&
+       test_cmp actual expect
+ '
  test_expect_success PERL 'difftool --dir-diff ignores --prompt' '
 -      diff=$(git difftool --dir-diff --prompt --extcmd ls branch) &&
 -      echo "$diff" | stdin_contains sub &&
 -      echo "$diff" | stdin_contains file
 +      git difftool --dir-diff --prompt --extcmd ls branch >output &&
 +      stdin_contains sub <output &&
 +      stdin_contains file <output
  '
  
  test_expect_success PERL 'difftool --dir-diff from subdirectory' '