Thomas,
Ah - thanks for your very helpful response!
jon.
On 13/01/2010, at 23:59, Thomas Rast <trast@xxxxxxxxxxxxxxx> 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
--
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