I’m setting up a new laptop, and I didn’t want to copy a whole mercurial clone from one laptop to another. All I wanted to do was move my not-yet-public changesets from my local repo to a new clone.
Turns out, with revsets and bundle
, this isn’t too hard!
(OldRepo) $ hg bundle --base 423bdf7a802b -r 'author(mgaudet) and not public()' MattsChanges.bundle
Now, because the base revision is pretty old (because my eldest non-public change I wanted to bring along has a pretty old base), the bundle is big, relative to the number of changesets it's bringing across.
However, it applies nicely!
(NewRepo) $ hg unbundle ../MattsChanges.bundle
adding changesets
adding manifests
adding file changes
added 20 changesets with 49 changes to 83824 files (+16 heads)
I got confused briefly when I tried to use hg import
; it complained abort: ../MattsChanges.bundle: no diffs found
which isn't a great error message, but I figured it out.