diff options
author | Russell Belfer <rb@github.com> | 2013-06-27 07:38:27 -0700 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2013-06-27 07:38:27 -0700 |
commit | c67ff958c4d8e37a717c77dd9cdb4bdfc88a6fd8 (patch) | |
tree | 23bb5db9b21586bf91197a31d82a9fb47731de84 /src/diff_patch.c | |
parent | c7974b49d04bc318d61a010d2c5d2e75095f410b (diff) | |
download | libgit2-c67ff958c4d8e37a717c77dd9cdb4bdfc88a6fd8.tar.gz |
Fix bug marking submodule diffs as unmodified
There was a bug where submodules whose HEAD had not been moved
were being marked as having an UNMODIFIED delta record instead
of being left MODIFIED. This fixes that and fixes the tests to
notice if a submodule has been incorrectly marked as UNMODIFIED.
Diffstat (limited to 'src/diff_patch.c')
-rw-r--r-- | src/diff_patch.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/diff_patch.c b/src/diff_patch.c index 9060d0a24..1b4adac03 100644 --- a/src/diff_patch.c +++ b/src/diff_patch.c @@ -10,6 +10,7 @@ #include "diff_driver.h" #include "diff_patch.h" #include "diff_xdiff.h" +#include "fileops.h" /* cached information about a single span in a diff */ typedef struct diff_patch_line diff_patch_line; @@ -175,9 +176,12 @@ static int diff_patch_load(git_diff_patch *patch, git_diff_output *output) goto cleanup; } - /* if we were previously missing an oid, update MODIFIED->UNMODIFIED */ + /* if previously missing an oid, and now that we have it the two sides + * are the same (and not submodules), update MODIFIED -> UNMODIFIED + */ if (incomplete_data && patch->ofile.file->mode == patch->nfile.file->mode && + patch->ofile.file->mode != GIT_FILEMODE_COMMIT && git_oid_equal(&patch->ofile.file->oid, &patch->nfile.file->oid) && patch->delta->status == GIT_DELTA_MODIFIED) /* not RENAMED/COPIED! */ patch->delta->status = GIT_DELTA_UNMODIFIED; |