changeset 7316:9737041646bc

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.
author David Soria Parra <dsp@php.net>
date Wed, 05 Nov 2008 03:53:34 +0100
parents 82f80c16fc16
children 98408cb74137
files hgext/bookmarks.py tests/test-bookmarks-strip tests/test-bookmarks-strip.out
diffstat 3 files changed, 70 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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