push: further clean up fields of "struct ref"
The "nonfastforward" and "update" fields are only used while deciding what value to assign to the "status" locally in a single function. Remove them from the "struct ref". The "requires_force" field is not used to decide if the proposed update requires a --force option to succeed, or to record such a decision made elsewhere. It is used by status reporting code that the particular update was "forced". Rename it to "forced_update", and move the code to assign to it around to further clarify how it is used and what it is used for. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
256b9d70a4
commit
5ece083fc7
4
cache.h
4
cache.h
@ -1001,10 +1001,8 @@ struct ref {
|
|||||||
char *symref;
|
char *symref;
|
||||||
unsigned int
|
unsigned int
|
||||||
force:1,
|
force:1,
|
||||||
requires_force:1,
|
forced_update:1,
|
||||||
merge:1,
|
merge:1,
|
||||||
nonfastforward:1,
|
|
||||||
update:1,
|
|
||||||
deletion:1;
|
deletion:1;
|
||||||
enum {
|
enum {
|
||||||
REF_STATUS_NONE = 0,
|
REF_STATUS_NONE = 0,
|
||||||
|
14
remote.c
14
remote.c
@ -1317,27 +1317,23 @@ void set_ref_status_for_push(struct ref *remote_refs, int send_mirror,
|
|||||||
* passing the --force argument
|
* passing the --force argument
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ref->update =
|
if (!ref->deletion && !is_null_sha1(ref->old_sha1)) {
|
||||||
!ref->deletion &&
|
int nonfastforward =
|
||||||
!is_null_sha1(ref->old_sha1);
|
|
||||||
|
|
||||||
if (ref->update) {
|
|
||||||
ref->nonfastforward =
|
|
||||||
!has_sha1_file(ref->old_sha1)
|
!has_sha1_file(ref->old_sha1)
|
||||||
|| !ref_newer(ref->new_sha1, ref->old_sha1);
|
|| !ref_newer(ref->new_sha1, ref->old_sha1);
|
||||||
|
|
||||||
if (!prefixcmp(ref->name, "refs/tags/")) {
|
if (!prefixcmp(ref->name, "refs/tags/")) {
|
||||||
ref->requires_force = 1;
|
|
||||||
if (!force_ref_update) {
|
if (!force_ref_update) {
|
||||||
ref->status = REF_STATUS_REJECT_ALREADY_EXISTS;
|
ref->status = REF_STATUS_REJECT_ALREADY_EXISTS;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
} else if (ref->nonfastforward) {
|
ref->forced_update = 1;
|
||||||
ref->requires_force = 1;
|
} else if (nonfastforward) {
|
||||||
if (!force_ref_update) {
|
if (!force_ref_update) {
|
||||||
ref->status = REF_STATUS_REJECT_NONFASTFORWARD;
|
ref->status = REF_STATUS_REJECT_NONFASTFORWARD;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
ref->forced_update = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -659,7 +659,7 @@ static void print_ok_ref_status(struct ref *ref, int porcelain)
|
|||||||
const char *msg;
|
const char *msg;
|
||||||
|
|
||||||
strcpy(quickref, status_abbrev(ref->old_sha1));
|
strcpy(quickref, status_abbrev(ref->old_sha1));
|
||||||
if (ref->requires_force) {
|
if (ref->forced_update) {
|
||||||
strcat(quickref, "...");
|
strcat(quickref, "...");
|
||||||
type = '+';
|
type = '+';
|
||||||
msg = "forced update";
|
msg = "forced update";
|
||||||
|
Loading…
Reference in New Issue
Block a user