diff --git a/hggit/git_handler.py b/hggit/git_handler.py
index a70c1f6caead6f4d82f1bd782c1496a7e034648e_aGdnaXQvZ2l0X2hhbmRsZXIucHk=..fda82627506057bbb33b16c39adebaf2ee074079_aGdnaXQvZ2l0X2hhbmRsZXIucHk= 100644
--- a/hggit/git_handler.py
+++ b/hggit/git_handler.py
@@ -318,4 +318,7 @@
 
         self.save_map(self.map_file)
 
+        # also mark public any branches the user specified
+        blist = [self.repo[branch].node() for branch in
+                 self.ui.configlist('git', 'public')]
         if rnode and self.ui.configbool('hggit', 'usephases'):
@@ -321,6 +324,9 @@
         if rnode and self.ui.configbool('hggit', 'usephases'):
+            blist.append(rnode)
+
+        if blist:
             lock = self.repo.lock()
             try:
                 tr = self.repo.transaction("phase")
                 try:
                     phases.advanceboundary(self.repo, tr, phases.public,
@@ -322,9 +328,9 @@
             lock = self.repo.lock()
             try:
                 tr = self.repo.transaction("phase")
                 try:
                     phases.advanceboundary(self.repo, tr, phases.public,
-                                           [rnode])
+                                           blist)
                 except TypeError:
                     # hg < 3.2
                     phases.advanceboundary(self.repo, phases.public,
@@ -328,7 +334,7 @@
                 except TypeError:
                     # hg < 3.2
                     phases.advanceboundary(self.repo, phases.public,
-                                           [rnode])
+                                           blist)
                 tr.close()
             finally:
                 if tr is not None: