Skip to content

Commit

Permalink
push: further clean up fields of "struct ref"
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Junio C Hamano committed Jan 24, 2013
1 parent 256b9d7 commit 5ece083
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 14 deletions.
4 changes: 1 addition & 3 deletions cache.h
Original file line number Diff line number Diff line change
Expand Up @@ -1001,10 +1001,8 @@ struct ref {
char *symref;
unsigned int
force:1,
requires_force:1,
forced_update:1,
merge:1,
nonfastforward:1,
update:1,
deletion:1;
enum {
REF_STATUS_NONE = 0,
Expand Down
16 changes: 6 additions & 10 deletions remote.c
Original file line number Diff line number Diff line change
Expand Up @@ -1317,27 +1317,23 @@ void set_ref_status_for_push(struct ref *remote_refs, int send_mirror,
* passing the --force argument
*/

ref->update =
!ref->deletion &&
!is_null_sha1(ref->old_sha1);

if (ref->update) {
ref->nonfastforward =
if (!ref->deletion && !is_null_sha1(ref->old_sha1)) {
int nonfastforward =
!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/")) {
ref->requires_force = 1;
if (!force_ref_update) {
ref->status = REF_STATUS_REJECT_ALREADY_EXISTS;
continue;
}
} else if (ref->nonfastforward) {
ref->requires_force = 1;
ref->forced_update = 1;
} else if (nonfastforward) {
if (!force_ref_update) {
ref->status = REF_STATUS_REJECT_NONFASTFORWARD;
continue;
}
ref->forced_update = 1;
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion transport.c
Original file line number Diff line number Diff line change
Expand Up @@ -659,7 +659,7 @@ static void print_ok_ref_status(struct ref *ref, int porcelain)
const char *msg;

strcpy(quickref, status_abbrev(ref->old_sha1));
if (ref->requires_force) {
if (ref->forced_update) {
strcat(quickref, "...");
type = '+';
msg = "forced update";
Expand Down

0 comments on commit 5ece083

Please sign in to comment.