Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-03-25 09:20:51 +0300
committerJunio C Hamano <gitster@pobox.com>2008-03-28 01:39:57 +0300
commitfe308f53730f168be65c57c46e5c573b449b3e32 (patch)
treecfadcf52fb96445c230f4e60bd77d7cc39a21b73
parent629de472b67bdb6b1fbdc72a95e1f569e3b8f02d (diff)
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>
-rw-r--r--builtin-prune.c15
-rw-r--r--t/t5304-prune.sh2
2 files changed, 14 insertions, 3 deletions
diff --git a/builtin-prune.c b/builtin-prune.c
index 71caac578d..25f9304b82 100644
--- a/builtin-prune.c
+++ b/builtin-prune.c
@@ -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());
diff --git a/t/t5304-prune.sh b/t/t5304-prune.sh
index 3d81e1f19a..9fd9d07000 100644
--- a/t/t5304-prune.sh
+++ b/t/t5304-prune.sh
@@ -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 &&