git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] add receive.denyNonFastforwards config variable

From
Junio C Hamano <junkio@cox.net>
Date
Sep 20, 2006, 22:44 UTC
Message-ID
<7vfyemf9ah.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<Pine.LNX.4.63.0609210027430.19042@wbgn013.biozentrum.uni-wuerzburg.de>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Show 6 quoted lines
> 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 ...
Show 17 quoted lines
> @@ -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.

Previous: Johannes SchindelinNext: Shawn Pearce
Message 2 of 18 in “add receive.denyNonFastforwards config variable”
  1. add receive.denyNonFastforwards config variableJohannes Schindelin, Sep 20, 2006
  2. Junio C HamanoSep 20, 2006
  3. Shawn PearceSep 20, 2006
  4. add receive.denyNonFastforwards config variableJohannes Schindelin, Sep 20, 2006
  5. Junio C HamanoSep 20, 2006
  6. Johannes SchindelinSep 21, 2006
  7. Junio C HamanoSep 21, 2006
  8. Johannes SchindelinSep 21, 2006
  9. Junio C HamanoSep 20, 2006
  10. Johannes SchindelinSep 21, 2006
  11. Junio C HamanoSep 21, 2006
  12. Jeff KingSep 21, 2006
  13. Junio C HamanoSep 21, 2006
  14. Johannes SchindelinSep 21, 2006
  15. Junio C HamanoSep 21, 2006
  16. Jeff KingSep 20, 2006
  17. Johannes SchindelinSep 21, 2006
  18. Junio C HamanoSep 21, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.