branch: stop modifying log_all_ref_updates variable
In "branch.c" we modify the global `log_all_ref_updates` variable to
force creation of a reflog entry. Modifying global state like this is
discouraged, as it may have all kinds of consequences in other places of
our codebase.
Stop modifying the variable and pass the `REF_FORCE_CREATE_REFLOG` flag
instead. Setting this flag has a stronger meaning than setting the
config to `LOG_REFS_NORMAL`:
- `LOG_REFS_NORMAL` will ask us to only create reflog entries for
preexisting reflogs or branches, remote refs, note refs and HEAD.
- `REF_FORCE_CREATE_REFLOG` will unconditionally create a reflog and
is thus equivalent to `LOG_REFS_ALWAYS`.
But as we are in `create_branch()` and thus do not have to worry about
arbitrary references, but only about branches, `LOG_REFS_NORMAL` and
`LOG_REFS_ALWAYS` are indeed equivalent.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
f1d3d07900
commit
118fd1a26d
5
branch.c
5
branch.c
@@ -601,6 +601,7 @@ void create_branch(struct repository *r,
|
|||||||
int forcing = 0;
|
int forcing = 0;
|
||||||
struct ref_transaction *transaction;
|
struct ref_transaction *transaction;
|
||||||
struct strbuf err = STRBUF_INIT;
|
struct strbuf err = STRBUF_INIT;
|
||||||
|
int flags = 0;
|
||||||
char *msg;
|
char *msg;
|
||||||
|
|
||||||
if (track == BRANCH_TRACK_OVERRIDE)
|
if (track == BRANCH_TRACK_OVERRIDE)
|
||||||
@@ -619,7 +620,7 @@ void create_branch(struct repository *r,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (reflog)
|
if (reflog)
|
||||||
log_all_ref_updates = LOG_REFS_NORMAL;
|
flags |= REF_FORCE_CREATE_REFLOG;
|
||||||
|
|
||||||
if (forcing)
|
if (forcing)
|
||||||
msg = xstrfmt("branch: Reset to %s", start_name);
|
msg = xstrfmt("branch: Reset to %s", start_name);
|
||||||
@@ -630,7 +631,7 @@ void create_branch(struct repository *r,
|
|||||||
if (!transaction ||
|
if (!transaction ||
|
||||||
ref_transaction_update(transaction, ref.buf,
|
ref_transaction_update(transaction, ref.buf,
|
||||||
&oid, forcing ? NULL : null_oid(),
|
&oid, forcing ? NULL : null_oid(),
|
||||||
NULL, NULL, 0, msg, &err) ||
|
NULL, NULL, flags, msg, &err) ||
|
||||||
ref_transaction_commit(transaction, &err))
|
ref_transaction_commit(transaction, &err))
|
||||||
die("%s", err.buf);
|
die("%s", err.buf);
|
||||||
ref_transaction_free(transaction);
|
ref_transaction_free(transaction);
|
||||||
|
|||||||
Reference in New Issue
Block a user