hg equivalent of git push -f?
Jeremy .
voldermort at hotmail.com
Tue Mar 7 11:43:25 UTC 2017
> I've been thinking of what it would take to convert my work place from
> git to hg, and the one thing which doesn't seem to have any equivalent
> is git push -f. hg may also have a push -f, but it leaves dangling
> anonymous heads which have to be stripped on the server. Evolve may
> help, but it doesn't like changing branches which have been pushed to
> a publishing repository, and we don't need or want the overhead of
> keeping obsolete changesets and markers.
> One solution is already in there: You can make the remote repository
> non-publishing. The obsoletes do not leave that server.
> # with evolve
cd /tmp
hg init moo
cd moo
echo 1 > 1
hg ci -Am 1
echo 2 > 1
hg ci --amend -Am 1
hg log --hidden
# three changesets
cd ../
hg clone moo goo
cd goo
hg log --hidden
# only the final changeset
The clones don't have the obsolete clutter, but the original repo and the server do. I suspect that there would be resistance to this, although I don't know how much of an issue it would be in practice.
Making the repository non-publishing is interesting, because what we really want is to state that only certain branches are publishing. GitHub & Bitbucket allow something like this with branch protections, but as far as I know no vcs has this build in (other than the possibility of doing it yourself with hg hooks).
> Alternatively you could create a push hook which automatically strips
> the old changesets. The following example is for bookmarks, but you
> could also just strip away the non-tip head on a force-push.
> [hooks]
> pushkey.delete-old-history = if test x"$HG_NAMESPACE" = x"bookmarks"; then $HG strip --hidden -r "::$HG_OLD - ::$HG_NEW"; hg update $HG_KEY; fi
This would give the same workflow as git, other than that they are moved immediately to a backup file instead of being hidden until GC. I wonder if it could be done as an extension?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial/attachments/20170307/f232402b/attachment-0002.html>
More information about the Mercurial
mailing list