mirror of
https://github.com/git/git
synced 2024-10-30 04:01:21 +00:00
Merge branch 'jc/add-refresh-unmerged'
* jc/add-refresh-unmerged: refresh_index: do not show unmerged path that is outside pathspec
This commit is contained in:
commit
883a2a3504
2 changed files with 24 additions and 2 deletions
11
read-cache.c
11
read-cache.c
|
@ -1120,11 +1120,16 @@ int refresh_index(struct index_state *istate, unsigned int flags, const char **p
|
|||
struct cache_entry *ce, *new;
|
||||
int cache_errno = 0;
|
||||
int changed = 0;
|
||||
int filtered = 0;
|
||||
|
||||
ce = istate->cache[i];
|
||||
if (ignore_submodules && S_ISGITLINK(ce->ce_mode))
|
||||
continue;
|
||||
|
||||
if (pathspec &&
|
||||
!match_pathspec(pathspec, ce->name, strlen(ce->name), 0, seen))
|
||||
filtered = 1;
|
||||
|
||||
if (ce_stage(ce)) {
|
||||
while ((i < istate->cache_nr) &&
|
||||
! strcmp(istate->cache[i]->name, ce->name))
|
||||
|
@ -1132,12 +1137,14 @@ int refresh_index(struct index_state *istate, unsigned int flags, const char **p
|
|||
i--;
|
||||
if (allow_unmerged)
|
||||
continue;
|
||||
show_file(unmerged_fmt, ce->name, in_porcelain, &first, header_msg);
|
||||
if (!filtered)
|
||||
show_file(unmerged_fmt, ce->name, in_porcelain,
|
||||
&first, header_msg);
|
||||
has_errors = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (pathspec && !match_pathspec(pathspec, ce->name, strlen(ce->name), 0, seen))
|
||||
if (filtered)
|
||||
continue;
|
||||
|
||||
new = refresh_cache_ent(istate, ce, options, &cache_errno, &changed);
|
||||
|
|
|
@ -179,6 +179,21 @@ test_expect_success 'git add --refresh' '
|
|||
test -z "`git diff-index HEAD -- foo`"
|
||||
'
|
||||
|
||||
test_expect_success 'git add --refresh with pathspec' '
|
||||
git reset --hard &&
|
||||
echo >foo && echo >bar && echo >baz &&
|
||||
git add foo bar baz && H=$(git rev-parse :foo) && git rm -f foo &&
|
||||
echo "100644 $H 3 foo" | git update-index --index-info &&
|
||||
test-chmtime -60 bar baz &&
|
||||
>expect &&
|
||||
git add --refresh bar >actual &&
|
||||
test_cmp expect actual &&
|
||||
|
||||
git diff-files --name-only >actual &&
|
||||
! grep bar actual&&
|
||||
grep baz actual
|
||||
'
|
||||
|
||||
test_expect_success POSIXPERM,SANITY 'git add should fail atomically upon an unreadable file' '
|
||||
git reset --hard &&
|
||||
date >foo1 &&
|
||||
|
|
Loading…
Reference in a new issue