mirror of
https://git.proxmox.com/git/libgit2
synced 2025-07-04 20:06:24 +00:00
Merge pull request #1684 from libgit2/fix-dirty-submodule-diff
Dirty submodules do not correctly appear in diffs
This commit is contained in:
commit
c8a39f9ee3
@ -10,6 +10,7 @@
|
|||||||
#include "diff_driver.h"
|
#include "diff_driver.h"
|
||||||
#include "diff_patch.h"
|
#include "diff_patch.h"
|
||||||
#include "diff_xdiff.h"
|
#include "diff_xdiff.h"
|
||||||
|
#include "fileops.h"
|
||||||
|
|
||||||
/* cached information about a single span in a diff */
|
/* cached information about a single span in a diff */
|
||||||
typedef struct diff_patch_line diff_patch_line;
|
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;
|
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 &&
|
if (incomplete_data &&
|
||||||
patch->ofile.file->mode == patch->nfile.file->mode &&
|
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) &&
|
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_MODIFIED) /* not RENAMED/COPIED! */
|
||||||
patch->delta->status = GIT_DELTA_UNMODIFIED;
|
patch->delta->status = GIT_DELTA_UNMODIFIED;
|
||||||
|
@ -47,8 +47,10 @@ static void check_diff_patches(git_diff_list *diff, const char **expected)
|
|||||||
for (d = 0; d < num_d; ++d, git_diff_patch_free(patch)) {
|
for (d = 0; d < num_d; ++d, git_diff_patch_free(patch)) {
|
||||||
cl_git_pass(git_diff_get_patch(&patch, &delta, diff, d));
|
cl_git_pass(git_diff_get_patch(&patch, &delta, diff, d));
|
||||||
|
|
||||||
if (delta->status == GIT_DELTA_UNMODIFIED)
|
if (delta->status == GIT_DELTA_UNMODIFIED) {
|
||||||
|
cl_assert(expected[d] == NULL);
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (expected[d] && !strcmp(expected[d], "<SKIP>"))
|
if (expected[d] && !strcmp(expected[d], "<SKIP>"))
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
Reference in New Issue
Block a user