Deprecating fetch

Laurens Holst laurens.nospam at grauw.nl
Fri Sep 2 06:42:58 CDT 2011


Op 02-09-11 01:11, Jesse Glick schreef:
> (In fact I would appreciate a command to not just fetch but then 
> immediately push the result so long as there were no 3-way file 
> merges. Sure there _might_ be some semantic problem resulting from the 
> merge, but this is quite rare in a big repo, and anyway that is what 
> continuous integration is for. Compared to CVS/Subversion users, for 
> whom commit does an implicit merge

Afaik in SVN that isn’t true... if one of the files you’re committing 
has been changed it will tell you to update first (aka pull + 
update/merge), just like Mercurial. But since SVN basically does 
file-by-file versioning whereas Mercurial does repository-wide 
versioning, SVN does allow you to commit files if they did not change in 
the repository.

In fact, Mercurial’s update has kind of similar semantics; it will only 
tell you to merge if one of your changed files has also changed in the 
repository. So hg pull -u && hg commit -m "..." && hg push is similar to 
what svn commit -m "..." does. With the advantage that if the update 
fails, it doesn’t litter your repo with partially changed files and 
conflict markers. You could make a simple shell script for that I 
suppose, no need for an extension.

Then again, I find the fact that pushing is a separate step one of 
Mercurial’s strengths. Pushing separately allows you to commit easily 
and frequently without rigorous testing, and you only push once you’ve 
got a group of working and tested changes. This way you won’t as often 
block other developers because you committed something broken, which is 
a very common problem with SVN. Also once you’ve pushed you can’t use 
rollback anymore, and that’s something I use all the time ;p.

Anyway, I guess this is getting off-topic :).

~Laurens


More information about the Mercurial-devel mailing list