Hi,
On Tue, 28 Nov 2006, Junio C Hamano wrote:
Jim Meyering [off-list ref] writes:
quoted
Here's the problem:
When I try to push the new tags, git-push fails:
$ git-push -f --tags ssh+git://git.sv.gnu.org/srv/git/coreutils master:refs/heads/master
updating 'refs/tags/cvs-head'
from 2fd3fd29a8b40be695bc2327c8cd3bd33e521100
to db18f53ffb221e9957124d8af81c11a7e350ac3b
...
Total 1, written 1 (delta 0), reused 0 (delta 0)
Unpacking 1 objects
error: denying non-fast forward; you should pull first
I get the same error also when using --force.
I think this is due to overeager receive.denyNonFastForwards
configuration setting at the repository you are pushing into.
I _think_ what receive-pack does in this case is totally wrong.
It should either:
(1) deny overwriting existing tags -- tags are meant to be
immutable so it should not allow them to be "updated"
regardless of fast-forwardness, or
(2) allow overwriting things under refs/tags/ without any
fast-forward checking. After all, a tag could point at a
tree or a blob, and there is no fast-forwardness among
trees.
The client side check in "git fetch" takes the latter viewpoint,
and I think we should be consistent with it.
Johannes, what do you think? Does the following patch look sane
to you?
It does if you agree that (2) is correct.
But I don't agree. cvs-head really should be a head IMHO, not a tag,
because cvs-head really tracks a branch.
I also think that git-fetch silently updating tags is wrong. Rather, it
should warn that the tags are different. But I've been wrong before.
Ciao,
Dscho