builtin-prune: protect objects listed on the command line

Finally, this resurrects the documented behaviour to protect other
objects listed on the command line from getting pruned.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano 2008-03-24 23:20:51 -07:00
parent 629de472b6
commit fe308f5373
2 changed files with 14 additions and 3 deletions

View File

@ -140,8 +140,19 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
init_revisions(&revs, prefix);
argc = parse_options(argc, argv, options, prune_usage, 0);
if (argc)
die ("unrecognized argument: %s", name);
while (argc--) {
unsigned char sha1[20];
const char *name = *argv++;
if (!get_sha1(name, sha1)) {
struct object *object = parse_object(sha1);
if (!object)
die("bad object: %s", name);
add_pending_object(&revs, object, "");
}
else
die("unrecognized argument: %s", name);
}
mark_reachable_objects(&revs, 1);
prune_object_dir(get_object_directory());

View File

@ -100,7 +100,7 @@ test_expect_success 'prune: prune unreachable heads' '
'
test_expect_failure 'prune: do not prune heads listed as an argument' '
test_expect_success 'prune: do not prune heads listed as an argument' '
: > file2 &&
git add file2 &&