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.
--- 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