diff options
author | Junio C Hamano <junkio@cox.net> | 2005-05-26 02:24:30 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-26 15:18:55 -0700 |
commit | 4130b99571903fb93e4c6e0d6677be7b6b986426 (patch) | |
tree | 4f330570b0cbf3edceaef05ca97e4d255afd48e4 /diffcore.h | |
parent | a577284aee793d71982e896b711c7b3d57e6bcf2 (diff) | |
download | git-4130b99571903fb93e4c6e0d6677be7b6b986426.tar.gz |
[PATCH] Diff updates to express type changes
With the introduction of type 'T' in the diff-raw output, and
the "apply-patch" program Linus has been quietly working on
without much advertisement, it started to make sense to emit
usable information in the "diff --git" patch output format as
well. Earlier built-in diff driver punted and did not say
anything about a symbolic link changing into a file or vice
versa, but this version represents it as a pair of deletion
and creation.
It also fixes a minor problem dealing with old archive created
with ancient git. The earlier code was reporting file mode
change between 100664 and 100644 (we shouldn't). The linux-2.6
git tree has a good example that exposes this problem. A good
test case is commit ce1dc02f76432a46db149241e015a4f782974623.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'diffcore.h')
-rw-r--r-- | diffcore.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/diffcore.h b/diffcore.h index 092eecce23..ee1955bf38 100644 --- a/diffcore.h +++ b/diffcore.h @@ -48,6 +48,12 @@ struct diff_filepair { #define DIFF_PAIR_TYPE_CHANGED(p) \ ((S_IFMT & (p)->one->mode) != (S_IFMT & (p)->two->mode)) +#define DIFF_PAIR_MODE_CHANGED(p) ((p)->one->mode != (p)->two->mode) + +#define DIFF_FILE_CANON_MODE(mode) \ + (S_ISREG(mode) ? (S_IFREG | ce_permissions(mode)) : \ + S_ISLNK(mode) ? S_IFLNK : S_IFDIR) + extern int diff_unmodified_pair(struct diff_filepair *); struct diff_queue_struct { |