"Stephen J. Turnbull" <stephen@xemacs.org> writes:
anatoly techtonik writes:
To be prepared for conflicts I review code with `svn log -vr base:head` before updating. But with Mercurial I see two major problems with my workflow (which I am unlikely to change for the next few weeks due to heavy automation): 1. No shallow checkouts - that means that I have to copy 200Mb+ for every patch I have
No, you don't. You make links to 200MB+ (unless you're on Windows, where I don't know how this works).
Surprisingly, it works there too due to NTFS hardlinks :-)
This is much cheaper than copying, though not as cheap as in git. I don't hesitate to make branches in Mercurial.
You can have branches inside your repository with Mercurial too, just like in Git. The bookmarks extension is for that. With Mercurial 1.6, you can push and pull bookmarks -- they are no longer local-only. I may work more sequentially than most, but I do all my work on Mercurial using a single clone.
3. There is no clear branch separation in my working copy. I don't know how to diff files in different branches without copying 200Mb+ clone. I don't know how to diff my files with remote repository without pulling it.
If you're at all serious about working with Mercurial, you don't do any operations except pull (and push, if you're a committer) against the remote. You keep a local pristine mirror of the remote repository, which you update frequently, and all of your work revolves around that rather than around contact with upstream.
This does mean that when upstream uses a repo-per-branch model you have to keep multiple mirrors. On the other hand, you can work directly in branches that you work on only infrequently, and also use Mercurial queues to avoid making branches if you don't want to.
That is one option and I think "The Definitive Guide" advocates it. However, you are free to mix the upstream clones into a single clone if you want (with 'hg pull' from different upstream repositories), or you can keep them separate. If the upstream uses a single repository with multiple named brancehs, then you can still maintain separate clones locally, say one per named branch (with 'hg clone http://...#branch' style clones). There is really no contraints on how you can setup your local repositories. -- Martin Geisler Mercurial links: http://mercurial.ch/