Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I create a mercurial hook that prevents new heads?

I have several repositories that have been converted from SVN and moving forward we want make sure when people push to the repository they can't create additional heads. there are several hooks in the TipsAndTricks wiki page that prevent pushing if there are multiple heads, but how I can build a hook that prevents pushing new heads?

It seems like the right way to do this would be to compare the number of heads from revision 0:parent and then compare 0:tip, but I can't seem to find a way to do that. hg heads -r $HG_NODE only shows me the number of heads after the user's first commit being pushed.

like image 955
Asa Ayers Avatar asked Dec 19 '25 04:12

Asa Ayers


1 Answers

By default, hg push prevents pushing of additional heads, requiring the -f flag. You could write a Mercurial extension to make it ignore that flag, effectively disabling pushing of new heads.

That said, I would question the wisdom of mechanically disallowing new heads. Instead, I would train your team to merge properly before pushing, while still allowing them to do it on the rare occasion that it makes sense, especially since Mercurial already warns you.

like image 136
tghw Avatar answered Dec 21 '25 00:12

tghw