summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2007-01-06 10:16:14 (GMT)
committerJunio C Hamano <junkio@cox.net>2007-01-07 06:57:34 (GMT)
commitca4f293fb492efdd2b984b992796b075c30e230d (patch)
treedb4f309340d1fb3f71c96417af5382b33f86871f
parent24304816141d16aacdc63612797faa1426222ef7 (diff)
downloadgit-ca4f293fb492efdd2b984b992796b075c30e230d.zip
git-ca4f293fb492efdd2b984b992796b075c30e230d.tar.gz
git-ca4f293fb492efdd2b984b992796b075c30e230d.tar.bz2
builtin-prune: separate ref walking from reflog walking.
This is necessary for the next step, because the reason I am making the connectivity walker into a library is because I want to use it for cleaning up stale reflog entries. Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--builtin-prune.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/builtin-prune.c b/builtin-prune.c
index 9522864..cd079b4 100644
--- a/builtin-prune.c
+++ b/builtin-prune.c
@@ -203,8 +203,12 @@ static int add_one_ref(const char *path, const unsigned char *sha1, int flag, vo
die("bad object ref: %s:%s", path, sha1_to_hex(sha1));
add_pending_object(revs, object, "");
- for_each_reflog_ent(path, add_one_reflog_ent, cb_data);
+ return 0;
+}
+static int add_one_reflog(const char *path, const unsigned char *sha1, int flag, void *cb_data)
+{
+ for_each_reflog_ent(path, add_one_reflog_ent, cb_data);
return 0;
}
@@ -267,12 +271,15 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
revs.blob_objects = 1;
revs.tree_objects = 1;
- /* Add all external refs, along with its reflog info */
+ /* Add all external refs */
for_each_ref(add_one_ref, &revs);
/* Add all refs from the index file */
add_cache_refs(&revs);
+ /* Add all reflog info from refs */
+ for_each_ref(add_one_reflog, &revs);
+
/*
* Set up the revision walk - this will move all commits
* from the pending list to the commit walking list.