Re: [PATCH] add receive.denyNonFastforwards config variable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes:

> If receive.denyNonFastforwards is set to true, git-receive-pack will deny
> non fast-forwards, i.e. forced updates. Most notably, a push to a repository
> which has that flag set to true will fail.
>
> As a first user, 'git-init-db --shared' sets this flag, since in a shared
> setup, you are most unlikely to want forced pushes to succeed.

I am Ok with the general idea, but ...

> @@ -127,6 +129,16 @@ static int update(struct command *cmd)
>  		return error("unpack should have generated %s, "
>  			     "but I can't find it!", new_hex);
>  	}
> +	if (deny_non_fast_forwards) {
> +		struct commit *old_commit, *new_commit;
> +		old_commit = (struct commit *)parse_object(old_sha1);
> +		new_commit = (struct commit *)parse_object(new_sha1);
> +		struct commit_list *bases = get_merge_bases(old_commit,
> +				new_commit, 1);
> +		if (!bases || hashcmp(old_sha1, bases->item->object.sha1))
> +			return error("denying non-fast forward;"
> +					" you should pull first");
> +	}
>  	safe_create_leading_directories(lock_name);
>  
>  	newfd = open(lock_name, O_CREAT | O_EXCL | O_WRONLY, 0666);

I am wondering if there can be more than one base and the old_sha1
is not returned as the first one.

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]