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

Re: [PATCH] add receive.denyNonFastforwards config variable

From
Shawn Pearce <spearce@spearce.org>
Date
Sep 20, 2006, 22:46 UTC
Message-ID
<20060920224640.GH24415@spearce.org>
In-Reply-To
<7vfyemf9ah.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano <junkio@cox.net> wrote:
Show 31 quoted lines
> Johannes Schindelin <Johannes.Schindelin@gmx.de> 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.

Not to mention how does this work when the ref didn't exist? Is this entire block of code being bypassed by something not show in the context?

-- 
Shawn.
Previous: Junio C HamanoNext: Johannes Schindelin
Message 3 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.