#include "refs.h"
#include "revision.h"
#include "grep.h"
+#include "reflog-walk.h"
static char *path_name(struct name_path *path, const char *name)
{
void add_pending_object(struct rev_info *revs, struct object *obj, const char *name)
{
add_object_array(obj, name, &revs->pending);
+ if (revs->reflog_info && obj->type == OBJ_COMMIT)
+ add_reflog_for_walk(revs->reflog_info,
+ (struct commit *)obj, name);
}
static struct object *get_reference(struct rev_info *revs, const char *name, const unsigned char *sha1, unsigned int flags)
struct all_refs_cb cb;
cb.all_revs = revs;
cb.all_flags = flags;
- for_each_ref(handle_one_reflog, &cb);
+ for_each_reflog(handle_one_reflog, &cb);
}
static int add_parents_only(struct rev_info *revs, const char *arg, int flags)
handle_reflog(revs, flags);
continue;
}
+ if (!strcmp(arg, "-g") ||
+ !strcmp(arg, "--walk-reflogs")) {
+ init_reflog_walk(&revs->reflog_info);
+ continue;
+ }
if (!strcmp(arg, "--not")) {
flags ^= UNINTERESTING;
continue;
revs->commits = entry->next;
free(entry);
+ if (revs->reflog_info)
+ fake_reflog_parent(revs->reflog_info, commit);
+
/*
* If we haven't done the list limiting, we need to look at
* the parents here. We also need to do the date-based limiting