[PATCH] Make next/prev only move bookmarks optionally
Ryan McElroy
rm at fb.com
Tue Nov 11 17:15:07 UTC 2014
Argh, disregard this. I'm no good at following instructions. I forgot to update the message to conform with the submission parameters. V2 will be coming up shortly.
-----Original Message-----
From: Ryan McElroy [mailto:rm at fb.com]
Sent: Tuesday, November 11, 2014 9:07 AM
To: mercurial-devel at selenic.com
Cc: Ryan McElroy
Subject: [PATCH] Make next/prev only move bookmarks optionally
# HG changeset patch
# User Ryan McElroy <rmcelroy at fb.com>
# Date 1414604048 25200
# Wed Oct 29 10:34:08 2014 -0700
# Node ID 00e1c4b915b398ef0cefd3125cbc3d34c50ed270
# Parent b7d85cd8ec7bd5a4ba5a61d156745269a999450b
Make next/prev only move bookmarks optionally
diff --git a/hgext/evolve.py b/hgext/evolve.py
--- a/hgext/evolve.py
+++ b/hgext/evolve.py
@@ -1574,9 +1574,10 @@
shorttemplate = '[{rev}] {desc|firstline}\n'
@command('^previous',
- [],
- '')
-def cmdprevious(ui, repo):
+ [('B', 'move-bookmark', False,
+ _('Move current active bookmark after update'))],
+ '[-B]')
+def cmdprevious(ui, repo, **opts):
"""update to parent and display summary lines"""
wkctx = repo[None]
wparents = wkctx.parents()
@@ -1588,11 +1589,14 @@
if len(parents) == 1:
p = parents[0]
bm = bookmarks.readcurrent(repo)
- shouldmove = bm is not None and bookmarks.iscurrent(repo, bm)
+ shouldmove = opts.get('move_bookmark') and bm is not None
ret = hg.update(repo, p.rev())
- if not ret and shouldmove:
- repo._bookmarks[bm] = p.node()
- repo._bookmarks.write()
+ if not ret:
+ if shouldmove:
+ repo._bookmarks[bm] = p.node()
+ repo._bookmarks.write()
+ else:
+ bookmarks.unsetcurrent(repo)
displayer.show(p)
return 0
else:
@@ -1602,9 +1606,10 @@
return 1
@command('^next',
- [],
- '')
-def cmdnext(ui, repo):
+ [('B', 'move-bookmark', False,
+ _('Move current active bookmark after update'))],
+ '[-B]')
+def cmdnext(ui, repo, **opts):
"""update to child and display summary lines"""
wkctx = repo[None]
wparents = wkctx.parents()
@@ -1619,11 +1624,14 @@
if len(children) == 1:
c = children[0]
bm = bookmarks.readcurrent(repo)
- shouldmove = bm is not None and bookmarks.iscurrent(repo, bm)
+ shouldmove = opts.get('move_bookmark') and bm is not None
ret = hg.update(repo, c.rev())
- if not ret and shouldmove:
- repo._bookmarks[bm] = c.node()
- repo._bookmarks.write()
+ if not ret:
+ if shouldmove:
+ repo._bookmarks[bm] = c.node()
+ repo._bookmarks.write()
+ else:
+ bookmarks.unsetcurrent(repo)
displayer.show(c)
return 0
else:
diff --git a/tests/test-prev-next.t b/tests/test-prev-next.t
--- a/tests/test-prev-next.t
+++ b/tests/test-prev-next.t
@@ -5,7 +5,7 @@
> EOF
$ echo "evolve=$(echo $(dirname $TESTDIR))/hgext/evolve.py" >> $HGRCPATH
-hg prev should move active bookmark
+hg prev -B should move active bookmark
$ hg init
$ touch a
$ hg add a
@@ -16,31 +16,53 @@
$ hg bookmark mark
$ hg bookmarks
* mark 1:6e742c9127b3
- $ hg prev
+ $ hg prev -B
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
[0] added a
$ hg bookmarks
* mark 0:a154386e50d1
+hg next -B should move active bookmark
+ $ hg next -B
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ [1] added b
+ $ hg bookmarks
+ * mark 1:6e742c9127b3
+
+hg prev should unset active bookmark
+ $ hg prev
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ [0] added a
+ $ hg bookmarks
+ mark 1:6e742c9127b3
+
hg next should move active bookmark
+ $ hg bookmark mark2
+ $ hg bookmarks
+ mark 1:6e742c9127b3
+ * mark2 0:a154386e50d1
$ hg next
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
[1] added b
$ hg bookmarks
- * mark 1:6e742c9127b3
+ mark 1:6e742c9127b3
+ mark2 0:a154386e50d1
+
+ $ hg bookmark -d mark2
+ $ hg bookmark mark
hg next/prev should not interfere with inactive bookmarks
$ touch c
$ hg add c
$ hg commit -m 'added c'
$ hg bookmark -r2 no-move
- $ hg prev
+ $ hg prev -B
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
[1] added b
$ hg bookmarks
* mark 1:6e742c9127b3
no-move 2:4e26ef31f919
- $ hg next
+ $ hg next -B
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
[2] added c
$ hg bookmarks
@@ -49,13 +71,13 @@
$ hg up 1
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
(leaving bookmark mark)
- $ hg next
+ $ hg next -B
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
[2] added c
$ hg bookmarks
mark 2:4e26ef31f919
no-move 2:4e26ef31f919
- $ hg prev
+ $ hg prev -B
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
[1] added b
$ hg bookmarks
More information about the Mercurial-devel
mailing list