branch: prepare delete_branches for a bulk caller
Teach delete_branches() a new mode for the upcoming --delete-merged caller that checks whether a branch is merged into its upstream without falling back to HEAD when there is no upstream. Existing callers keep their current behavior. Signed-off-by: Harald Nordgren <haraldnordgren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
parent
91f3687761
commit
d95be30ea5
|
|
@ -168,10 +168,13 @@ static int branch_merged(int kind, const char *name,
|
|||
* upstream, if any, otherwise with HEAD", we should just
|
||||
* return the result of the repo_in_merge_bases() above without
|
||||
* any of the following code, but during the transition period,
|
||||
* a gentle reminder is in order.
|
||||
* a gentle reminder is in order. Callers that opt out of the
|
||||
* HEAD fallback by passing head_rev=NULL are not interested in
|
||||
* the reminder either: they have already established that the
|
||||
* branch has an upstream, so HEAD is irrelevant to the decision.
|
||||
*/
|
||||
if (head_rev != reference_rev) {
|
||||
int expect = head_rev ? repo_in_merge_bases(the_repository, rev, head_rev) : 0;
|
||||
if (head_rev && head_rev != reference_rev) {
|
||||
int expect = repo_in_merge_bases(the_repository, rev, head_rev);
|
||||
if (expect < 0)
|
||||
exit(128);
|
||||
if (expect == merged)
|
||||
|
|
@ -193,6 +196,7 @@ enum delete_branch_flags {
|
|||
DELETE_BRANCH_FORCE = (1 << 0),
|
||||
DELETE_BRANCH_QUIET = (1 << 1),
|
||||
DELETE_BRANCH_SKIP_UNMERGED = (1 << 2),
|
||||
DELETE_BRANCH_NO_HEAD_FALLBACK = (1 << 3),
|
||||
};
|
||||
|
||||
static int check_branch_commit(const char *branchname, const char *refname,
|
||||
|
|
@ -262,7 +266,8 @@ static int delete_branches(int argc, const char **argv, int kinds,
|
|||
}
|
||||
branch_name_pos = strcspn(fmt, "%");
|
||||
|
||||
if (!(flags & DELETE_BRANCH_FORCE))
|
||||
if (!(flags & DELETE_BRANCH_FORCE) &&
|
||||
!(flags & DELETE_BRANCH_NO_HEAD_FALLBACK))
|
||||
head_rev = lookup_commit_reference(the_repository, &head_oid);
|
||||
|
||||
for (i = 0; i < argc; i++, strbuf_reset(&bname)) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue