Browse Source

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>
maint
Junio C Hamano 17 years ago
parent
commit
fe308f5373
  1. 15
      builtin-prune.c
  2. 2
      t/t5304-prune.sh

15
builtin-prune.c

@ -140,8 +140,19 @@ int cmd_prune(int argc, const char **argv, const char *prefix) @@ -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());


2
t/t5304-prune.sh

@ -100,7 +100,7 @@ test_expect_success 'prune: prune unreachable heads' ' @@ -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…
Cancel
Save