convert: better support for CVS branchpoints (
issue1447)
This records the branches starting at individual CVS file revisions,
using the symbolic names map rather than just the branches
information. This information is used to generate Mercurial
changesets. Despite the changes, the CVS conversion still suffers
heavily from cvsps' deficiencies in generating a correct
representation of the CVS repository history.
#!/bin/sh
echo "[extensions]" >> $HGRCPATH
echo "bookmarks=" >> $HGRCPATH
hg init
echo % no bookmarks
hg bookmarks
echo % bookmark rev -1
hg bookmark X
echo % list bookmarks
hg bookmarks
echo a > a
hg add a
hg commit -m 0
echo % bookmark X moved to rev 0
hg bookmarks
echo % look up bookmark
hg log -r X
echo % second bookmark for rev 0
hg bookmark X2
echo % bookmark rev -1 again
hg bookmark -r null Y
echo % list bookmarks
hg bookmarks
echo b > b
hg add b
hg commit -m 1
echo % bookmarks X and X2 moved to rev 1, Y at rev -1
hg bookmarks
echo % bookmark rev 0 again
hg bookmark -r 0 Z
echo c > c
hg add c
hg commit -m 2
echo % bookmarks X and X2 moved to rev 2, Y at rev -1, Z at rev 0
hg bookmarks
echo % rename nonexistent bookmark
hg bookmark -m A B
echo % rename to existent bookmark
hg bookmark -m X Y
echo % force rename to existent bookmark
hg bookmark -f -m X Y
echo % list bookmarks
hg bookmark
echo % rename without new name
hg bookmark -m Y
echo % delete without name
hg bookmark -d
echo % delete nonexistent bookmark
hg bookmark -d A
echo % bookmark name with spaces should be stripped
hg bookmark ' x y '
echo % list bookmarks
hg bookmarks
echo % look up stripped bookmark name
hg log -r 'x y'
echo % reject bookmark name with newline
hg bookmark '
'
echo % bookmark with existing name
hg bookmark Z
echo % force bookmark with existing name
hg bookmark -f Z
echo % list bookmarks
hg bookmark
echo % revision but no bookmark name
hg bookmark -r .
true