[PATCH 1 of 4 topic-experiment] topics: move the logic to change or clear current topic into a new function

Pulkit Goyal 7895pulkit at gmail.com
Mon Jun 26 08:28:50 UTC 2017


# HG changeset patch
# User Pulkit Goyal <7895pulkit at gmail.com>
# Date 1498353479 -19800
#      Sun Jun 25 06:47:59 2017 +0530
# Node ID bd206f38dda1391cb6e0114d483c8f2fa00a9feb
# Parent  a51970c0749214d5d5662f15f818fefb2f0c100a
topics: move the logic to change or clear current topic into a new function

It adds a new _changecurrenttopic which changes or clears the current topic.

diff --git a/hgext3rd/topic/__init__.py b/hgext3rd/topic/__init__.py
--- a/hgext3rd/topic/__init__.py
+++ b/hgext3rd/topic/__init__.py
@@ -288,14 +288,11 @@
             raise error.Abort("can't change topic of a public change")
         _changetopics(ui, repo, rev, topic)
     if clear:
-        if repo.vfs.exists('topic'):
-            repo.vfs.unlink('topic')
-        return
+        return _changecurrenttopic(repo, None)
+
     if topic:
-        with repo.wlock():
-            with repo.vfs.open('topic', 'w') as f:
-                f.write(topic)
-        return
+        return _changecurrenttopic(repo, topic)
+
     _listtopics(ui, repo, opts)
 
 @command('stack [TOPIC]', [] + commands.formatteropts)
@@ -309,6 +306,17 @@
         raise error.Abort(_('no active topic to list'))
     return stack.showstack(ui, repo, topic, opts)
 
+def _changecurrenttopic(repo, newtopic):
+    """changes the current topic."""
+
+    if newtopic:
+        with repo.wlock():
+            with repo.vfs.open('topic', 'w') as f:
+                f.write(newtopic)
+    else:
+        if repo.vfs.exists('topic'):
+            repo.vfs.unlink('topic')
+
 def _changetopics(ui, repo, revset, newtopic):
     rewrote = 0
     needevolve = False


More information about the Mercurial-devel mailing list