diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-07-23 20:56:17 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-07-23 20:56:17 -0700 |
commit | b18c74c92f53572896b6f98cf69fe08c65ae2455 (patch) | |
tree | 46f2149caf3e00637216405a717fd4bb364a277f | |
parent | Merge branch 'sl/autoconf' (diff) | |
parent | difftool: only copy back files modified during directory diff (diff) | |
download | tgif-b18c74c92f53572896b6f98cf69fe08c65ae2455.tar.xz |
Merge branch 'th/difftool-diffall'
Finishing touches to difftool --dirdiff.
* th/difftool-diffall:
difftool: only copy back files modified during directory diff
-rwxr-xr-x | git-difftool.perl | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/git-difftool.perl b/git-difftool.perl index ae1e0525d8..c0798540ad 100755 --- a/git-difftool.perl +++ b/git-difftool.perl @@ -15,6 +15,7 @@ use strict; use warnings; use File::Basename qw(dirname); use File::Copy; +use File::Compare; use File::Find; use File::stat; use File::Path qw(mkpath); @@ -336,8 +337,10 @@ if (defined($dirdiff)) { # files were modified during the diff, then the changes # should be copied back to the working tree for my $file (@working_tree) { - copy("$b/$file", "$workdir/$file") or die $!; - chmod(stat("$b/$file")->mode, "$workdir/$file") or die $!; + if (-e "$b/$file" && compare("$b/$file", "$workdir/$file")) { + copy("$b/$file", "$workdir/$file") or die $!; + chmod(stat("$b/$file")->mode, "$workdir/$file") or die $!; + } } } else { if (defined($prompt)) { |