[PATCH] convert/mtn: Add support for closing branches during conversion from monotone

daniel.atallah at gmail.com daniel.atallah at gmail.com
Fri Mar 25 14:50:00 CDT 2011


# HG changeset patch
# User Daniel Atallah <daniel.atallah at gmail.com>
# Date 1301082583 14400
# Branch stable
# Node ID 1008687ea3a4ce3e582f03cbaaf68c8df57b0bdb
# Parent  3ce8f1e70bad2cd91c588ce4bc24310ae0c6d665
convert/mtn: Add support for closing branches during conversion from monotone

Monotone treats branch closing ("suspending") in a similar manner to how we do
in mercurial - a cert is added to a revision that marks the branch to be hidden.
If a subsequent commit is made, the branch is effectively reopened.

diff --git a/hgext/convert/monotone.py b/hgext/convert/monotone.py
--- a/hgext/convert/monotone.py
+++ b/hgext/convert/monotone.py
@@ -291,14 +291,18 @@
         return data, attr
 
     def getcommit(self, rev):
-        certs   = self.mtngetcerts(rev)
+        extra = {}
+        certs = self.mtngetcerts(rev)
+        if certs.get('suspend') == certs["branch"]:
+            extra['close'] = '1'
         return commit(
             author=certs["author"],
             date=util.datestr(util.strdate(certs["date"], "%Y-%m-%dT%H:%M:%S")),
             desc=certs["changelog"],
             rev=rev,
             parents=self.mtnrun("parents", rev).splitlines(),
-            branch=certs["branch"])
+            branch=certs["branch"],
+            extra=extra)
 
     def gettags(self):
         tags = {}
diff --git a/tests/test-convert-mtn.t b/tests/test-convert-mtn.t
--- a/tests/test-convert-mtn.t
+++ b/tests/test-convert-mtn.t
@@ -208,6 +208,11 @@
   $ mtn ci -m divergentdirmove2
   mtn: beginning commit on branch 'com.selenic.test'
   mtn: committed revision 4a736634505795f17786fffdf2c9cbf5b11df6f6
+
+test suspending (closing a branch)
+
+  $ mtn suspend 4a736634505795f17786fffdf2c9cbf5b11df6f6
+  mtn: note: your workspace has not been updated
   $ cd ..
 
 convert incrementally
@@ -356,3 +361,9 @@
   dir8-2/a
   dir9-2/b
   e
+
+check branch closing
+
+  $ hg branches -a
+  $ hg branches -c | sed "s/13:[a-f0-9]\{12\}/13:deadbeef9999/"
+  com.selenic.test              13:deadbeef9999 (closed)
\ No newline at end of file


More information about the Mercurial-devel mailing list