diff options
author | Junio C Hamano <junkio@cox.net> | 2007-01-06 02:16:14 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-01-06 22:57:34 -0800 |
commit | ca4f293fb492efdd2b984b992796b075c30e230d (patch) | |
tree | db4f309340d1fb3f71c96417af5382b33f86871f /builtin-prune.c | |
parent | 24304816141d16aacdc63612797faa1426222ef7 (diff) | |
download | git-ca4f293fb492efdd2b984b992796b075c30e230d.tar.gz git-ca4f293fb492efdd2b984b992796b075c30e230d.tar.xz |
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>
Diffstat (limited to 'builtin-prune.c')
-rw-r--r-- | builtin-prune.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/builtin-prune.c b/builtin-prune.c index 95228645d..cd079b419 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. |