Merge branch 'rs/pending'
* rs/pending:
commit: factor out clear_commit_marks_for_object_array
checkout: use leak_pending flag
bundle: use leak_pending flag
bisect: use leak_pending flag
revision: add leak_pending flag
checkout: use add_pending_{object,sha1} in orphan check
revision: factor out add_pending_sha1
checkout: check for "Previous HEAD" notice in t2020
Conflicts:
builtin/checkout.c
revision.c
This commit is contained in:
@ -589,23 +589,11 @@ static void update_refs_for_switch(struct checkout_opts *opts,
|
||||
report_tracking(new);
|
||||
}
|
||||
|
||||
static int add_one_ref_to_rev_list_arg(const char *refname,
|
||||
const unsigned char *sha1,
|
||||
int flags,
|
||||
void *cb_data)
|
||||
static int add_pending_uninteresting_ref(const char *refname,
|
||||
const unsigned char *sha1,
|
||||
int flags, void *cb_data)
|
||||
{
|
||||
argv_array_push(cb_data, refname);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int clear_commit_marks_from_one_ref(const char *refname,
|
||||
const unsigned char *sha1,
|
||||
int flags,
|
||||
void *cb_data)
|
||||
{
|
||||
struct commit *commit = lookup_commit_reference_gently(sha1, 1);
|
||||
if (commit)
|
||||
clear_commit_marks(commit, -1);
|
||||
add_pending_sha1(cb_data, refname, sha1, flags | UNINTERESTING);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -674,18 +662,21 @@ static void suggest_reattach(struct commit *commit, struct rev_info *revs)
|
||||
*/
|
||||
static void orphaned_commit_warning(struct commit *commit)
|
||||
{
|
||||
struct argv_array args = ARGV_ARRAY_INIT;
|
||||
struct rev_info revs;
|
||||
|
||||
argv_array_push(&args, "(internal)");
|
||||
argv_array_push(&args, sha1_to_hex(commit->object.sha1));
|
||||
argv_array_push(&args, "--not");
|
||||
for_each_ref(add_one_ref_to_rev_list_arg, &args);
|
||||
argv_array_push(&args, "--");
|
||||
struct object *object = &commit->object;
|
||||
struct object_array refs;
|
||||
|
||||
init_revisions(&revs, NULL);
|
||||
if (setup_revisions(args.argc - 1, args.argv, &revs, NULL) != 1)
|
||||
die(_("internal error: only -- alone should have been left"));
|
||||
setup_revisions(0, NULL, &revs, NULL);
|
||||
|
||||
object->flags &= ~UNINTERESTING;
|
||||
add_pending_object(&revs, object, sha1_to_hex(object->sha1));
|
||||
|
||||
for_each_ref(add_pending_uninteresting_ref, &revs);
|
||||
|
||||
refs = revs.pending;
|
||||
revs.leak_pending = 1;
|
||||
|
||||
if (prepare_revision_walk(&revs))
|
||||
die(_("internal error in revision walk"));
|
||||
if (!(commit->object.flags & UNINTERESTING))
|
||||
@ -693,9 +684,8 @@ static void orphaned_commit_warning(struct commit *commit)
|
||||
else
|
||||
describe_detached_head(_("Previous HEAD position was"), commit);
|
||||
|
||||
argv_array_clear(&args);
|
||||
clear_commit_marks(commit, -1);
|
||||
for_each_ref(clear_commit_marks_from_one_ref, NULL);
|
||||
clear_commit_marks_for_object_array(&refs, ALL_REV_FLAGS);
|
||||
free(refs.objects);
|
||||
}
|
||||
|
||||
static int switch_branches(struct checkout_opts *opts, struct branch_info *new)
|
||||
|
||||
Reference in New Issue
Block a user