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

Re: discussion: an option to fail git fetch if a pulled branch tip is not a fast forward of the existing remote tip?

From
Jon Seymour <jon.seymour@gmail.com>
Date
Jan 13, 2010, 17:14 UTC
Message-ID
<230F8BFF-7F59-47DB-9E97-D8E081D2597B@gmail.com>
In-Reply-To
<201001131359.09613.trast@student.ethz.ch>
Thomas,
Ah - thanks for your very helpful response!
jon.
On 13/01/2010, at 23:59, Thomas Rast <trast@student.ethz.ch> wrote:
Show 49 quoted lines
> Jon Seymour wrote:
> [discussion of a case of branch rewriting, called "backtracking" here]
>> Now clearly the upstream developer should not have backtracked. That
>> said, it would have been nice if I could have easily configured my
>> porcelain to detect the backtracking condition. An option on git  
>> fetch
>> that implemented something similar to the git push check would have
>> made this easy to achieve.
>
> This is an instance of a non-fast-foward update, which is indicated by
> the little "+" in git-fetch's output.  E.g., fetching git.git a moment
> ago gave me
>
> From git://git.kernel.org/pub/scm/git/git
>   fbb9971..8efa5f6  maint      -> origin/maint
>   c0eb604..054d2fa  master     -> origin/master
>   e295b7f..e84eab0  next       -> origin/next
> + 10659b7...6a048fc pu         -> origin/pu  (forced update)
>
> which means that the 'pu' branch was a non-fast-forward update.
>
> If you do not want to rely on checking the results manually, you can
> edit the remote configuration.  Normally, it will look like
>
> [remote "origin"]
>        url = git://git.kernel.org/pub/scm/git/git.git
>        fetch = +refs/heads/*:refs/remotes/origin/*
>
> Note the "+" in the 'fetch' line, which means "allow non-fast-forward
> updates".  Removing the + (leaving the rest intact) results in
>
> From git://git.kernel.org/pub/scm/git/git
> ! [rejected]        pu         -> origin/pu  (non-fast-forward)
>
> You can then manually add lines _with_ the "+" for branches where you
> do want to allow non-ff updates, e.g., for git.git I might say
>
> [remote "origin"]
>        url = git://git.kernel.org/pub/scm/git/git.git
>        fetch = +refs/heads/pu:refs/remotes/origin/pu
>        fetch = refs/heads/*:refs/remotes/origin/*
>
> since only 'pu' will be rewritten regularly. ('next' gets the
> occasional treatment too, so that config would not be very
> futureproof.)
>
> -- 
> Thomas Rast
> trast@{inf,student}.ethz.ch
Previous: Thomas Rast
Message 3 of 3 in “discussion: an option to fail git fetch if a pulled branch tip is not a fast forward of the existing remote tip?”
  1. Jon SeymourJan 13, 2010
  2. Thomas RastJan 13, 2010
  3. Jon SeymourJan 13, 2010

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.