update-index --again: take optional pathspecs

When pathspecs are given, update-index --again further limits
the set of paths to be updated to those that match them.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2006-05-05 23:09:05 -07:00
Родитель 83e77a25dc
Коммит 22293b9c41
2 изменённых файлов: 13 добавлений и 2 удалений

Просмотреть файл

@ -69,5 +69,14 @@ test_expect_success 'update-index --update from subdir' \
100644 0f1ae1422c2bf43f117d3dbd715c988a9ed2103f 0 file2 100644 0f1ae1422c2bf43f117d3dbd715c988a9ed2103f 0 file2
EOF' EOF'
test_done test_expect_success 'update-index --update with pathspec' \
'echo very happy >file2 &&
cat file2 >dir1/file3 &&
git-update-index --again dir1/ &&
git-ls-files -s >current &&
cmp current - <<\EOF
100644 594fb5bb1759d90998e2bf2a38261ae8e243c760 0 dir1/file3
100644 0f1ae1422c2bf43f117d3dbd715c988a9ed2103f 0 file2
EOF'
test_done

Просмотреть файл

@ -610,6 +610,7 @@ static int do_reupdate(int ac, const char **av,
*/ */
int pos; int pos;
int has_head = 1; int has_head = 1;
char **pathspec = get_pathspec(prefix, av + 1);
if (read_ref(git_path("HEAD"), head_sha1)) if (read_ref(git_path("HEAD"), head_sha1))
/* If there is no HEAD, that means it is an initial /* If there is no HEAD, that means it is an initial
@ -621,7 +622,8 @@ static int do_reupdate(int ac, const char **av,
struct cache_entry *ce = active_cache[pos]; struct cache_entry *ce = active_cache[pos];
struct cache_entry *old = NULL; struct cache_entry *old = NULL;
int save_nr; int save_nr;
if (ce_stage(ce))
if (ce_stage(ce) || !ce_path_match(ce, pathspec))
continue; continue;
if (has_head) if (has_head)
old = read_one_ent(NULL, head_sha1, old = read_one_ent(NULL, head_sha1,