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:
parent
629de472b6
commit
fe308f5373
@ -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());
|
||||
|
||||
|
@ -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 &&
|
||||
|
Loading…
Reference in New Issue
Block a user