From: Jon Seymour Date: Wed, 13 Jan 2010 17:14:26 GMT Subject: Re: discussion: an option to fail git fetch if a pulled branch tip is not a fast forward of the existing remote tip? 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 wrote: > 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