Bazaar Mercurial Plugin to access BitBucket

Martin Geisler mg at lazybytes.net
Tue Oct 25 15:36:01 UTC 2011


Barry Warsaw <barry at canonical.com> writes:

> On Oct 25, 2011, at 04:26 PM, Stephen J. Turnbull wrote:
>
>> And of course as a technical matter git requires colocated branches
>> for diff'ing and merge'ing, but that's an occasional annoyance to me,
>> not a feature I explicitly use.
>
> Doesn't hg also require that.  I could be totally wrong here, but I seem to
> remember that I could not hg diff between clone-per-directory.

No, you're right -- diff is a local operation. There is an rdiff
extension for remote diffs, but I've never tried it:

  http://mercurial.selenic.com/wiki/RdiffExtension

> Right.  It's a structure I mostly manage by having one directory-per-branch
> nailed to the major version's head.  Then I have a clone of cpython, which is
> where I'll `hg pull -u` when starting new work.  If I have to hack on a
> particular version, I cd to that directory, hg pull -u it in and start.  Where
> things get icky is the need to go back to the cpython clone, pull in the
> changes and then merge them.

I don't think you need that complete cpython clone. If you have a clones
for 2.6 and 2.7, then you can do

  $ cd 2.6
  $ ... fix some bug
  $ hg commit
  $ hg push
  pushing to hg.python.org ...

  $ cd ../2.7
  $ hg pull ../2.6
  $ hg merge 2.6

It is not important where the merge is done -- nobody can tell which
clone you used after the fact.

> I personally believe that using a Bazaar shared repo is the only way
> to go. OTOH, that might not even help with a project the size of the
> kernel or OOo.

If I understand the terminology correctly, then a "shared repo" in
Bazaar is a container for revisions -- shared by several "branches"?

That is close to what you get by default with Mercurial, except that

  $ hg clone http://hg-project.example.com/foo.stable/
  $ hg clone http://hg-project.example.com/foo.dev/

will make you download things twice. To save bandwidth you can do:

  $ hg clone http://hg-project.example.com/foo.stable/
  $ hg clone foo.stable foo.dev
  $ cd foo.dev
  $ hg pull http://hg-project.example.com/foo.dev/

There is also an extension called share that makes Mercurial behave as
if there is a symlink between the .hg folders. That let's you commit in
the foo.stable clone and directly see the changeset in foo.dev (without
any push/pull between the two repositories).

-- 
Martin Geisler

Mercurial links: http://mercurial.ch/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <https://lists.ubuntu.com/archives/bazaar/attachments/20111025/9d13fdae/attachment.pgp>


More information about the bazaar mailing list