topics: move the logic to change or clear current topic into a new function
authorPulkit Goyal <7895pulkit@gmail.com>
Sun, 25 Jun 2017 06:47:59 +0530
changeset 2662 9c0b293c2785
parent 2661 914757c70217
child 2663 c01dc624b358
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.
hgext3rd/topic/__init__.py
--- a/hgext3rd/topic/__init__.py	Mon Jun 26 17:20:17 2017 +0200
+++ b/hgext3rd/topic/__init__.py	Sun Jun 25 06:47:59 2017 +0530
@@ -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