bookmarks: Use dirstate to determine the current node in addchangegroup
Using the changectx might result in a lookup error during the strip command.
Thefore we use the current dirstate to get the parents of the working directory.
--- a/hgext/bookmarks.py Mon Nov 03 16:01:24 2008 -0600
+++ b/hgext/bookmarks.py Wed Nov 05 03:53:34 2008 +0100
@@ -200,10 +200,7 @@
return node
def addchangegroup(self, source, srctype, url, emptyok=False):
- try:
- onode = repo.changectx('.').node()
- except RepoError, inst:
- pass
+ parents = repo.dirstate.parents()
result = super(bookmark_repo, self).addchangegroup(
source, srctype, url, emptyok)
@@ -214,7 +211,7 @@
marks = parse(repo)
update = False
for mark, n in marks.items():
- if n == onode:
+ if n in parents:
marks[mark] = node
update = True
if update:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-bookmarks-strip Wed Nov 05 03:53:34 2008 +0100
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+echo "[extensions]" >> $HGRCPATH
+echo "bookmarks=" >> $HGRCPATH
+echo "mq=" >> $HGRCPATH
+
+hg init
+
+echo qqq>qqq.txt
+
+echo % add file
+hg add
+
+echo % commit first revision
+hg ci -m 1 -u user -d "1 0"
+
+echo % set bookmark
+hg book test
+
+echo www>>qqq.txt
+
+echo % commit second revision
+hg ci -m 2 -u usr -d "1 0"
+
+echo % set bookmark
+hg book test2
+
+echo % update to -2
+hg update -r -2
+
+echo eee>>qqq.txt
+
+echo % commit new head
+hg ci -m 3 -u user -d "1 0"
+
+echo % bookmarks updated?
+hg book
+
+echo % strip to revision 1
+hg strip 1 2>&1 | sed 's/\(saving bundle to \).*/\1/'
+
+echo % list bookmarks
+hg book
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-bookmarks-strip.out Wed Nov 05 03:53:34 2008 +0100
@@ -0,0 +1,24 @@
+% add file
+adding qqq.txt
+% commit first revision
+% set bookmark
+% commit second revision
+% set bookmark
+% update to -2
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+% commit new head
+created new head
+% bookmarks updated?
+ test 1:16b24da7e457
+ test2 1:16b24da7e457
+% strip to revision 1
+saving bundle to
+saving bundle to
+adding branch
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 1 changes to 1 files
+% list bookmarks
+ * test 1:9f1b7e78eff8
+ * test2 1:9f1b7e78eff8