view tests/test-convert-clonebranches.t @ 18316:f36375576ed5

filecache: create an entry in _filecache when __set__ is called for a missing one Preserve the invariant that if P is a filecached property on X then P in X.__dict__ => P in X._filecache. Previously, it was possible for a filecached property to become out of sync with the filesystem if it was set before getting it first, since the initial filecacheentry was created in __get__. Old behaviour: repo.prop = x repo.invalidate() # prop has no entry in _filecache, it's not removed # from __dict__ repo.prop # returns x like before without checking with the # filesystem New: repo.prop = x # an empty entry is created in _filecache repo.invalidate() # prop is removed from __dict__ repo.prop # recreates prop
author Idan Kamara <idankk86@gmail.com>
date Mon, 17 Dec 2012 15:25:45 +0200
parents 41885892796e
children 687ed69f6fdf
line wrap: on
line source


  $ echo "[extensions]" >> $HGRCPATH
  $ echo "convert = " >> $HGRCPATH
  $ echo "[convert]" >> $HGRCPATH
  $ echo "hg.tagsbranch=0" >> $HGRCPATH
  $ hg init source
  $ cd source
  $ echo a > a
  $ hg ci -qAm adda

Add a merge with one parent in the same branch

  $ echo a >> a
  $ hg ci -qAm changea
  $ hg up -qC 0
  $ hg branch branch0
  marked working directory as branch branch0
  (branches are permanent and global, did you want a bookmark?)
  $ echo b > b
  $ hg ci -qAm addb
  $ hg up -qC
  $ hg merge default
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (branch merge, don't forget to commit)
  $ hg ci -qm mergeab
  $ hg tag -ql mergeab
  $ cd ..

Miss perl... sometimes

  $ cat > filter.py <<EOF
  > import sys, re
  > 
  > r = re.compile(r'^(?:\d+|pulling from)')
  > sys.stdout.writelines([l for l in sys.stdin if r.search(l)])
  > EOF

convert

  $ hg convert -v --config convert.hg.clonebranches=1 source dest |
  >     python filter.py
  3 adda
  2 changea
  1 addb
  pulling from default into branch0
  1 changesets found
  0 mergeab
  pulling from default into branch0
  1 changesets found

Add a merge with both parents and child in different branches

  $ cd source
  $ hg branch branch1
  marked working directory as branch branch1
  (branches are permanent and global, did you want a bookmark?)
  $ echo a > file1
  $ hg ci -qAm c1
  $ hg up -qC mergeab
  $ hg branch branch2
  marked working directory as branch branch2
  (branches are permanent and global, did you want a bookmark?)
  $ echo a > file2
  $ hg ci -qAm c2
  $ hg merge branch1
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (branch merge, don't forget to commit)
  $ hg branch branch3
  marked working directory as branch branch3
  (branches are permanent and global, did you want a bookmark?)
  $ hg ci -qAm c3
  $ cd ..

incremental conversion

  $ hg convert -v --config convert.hg.clonebranches=1 source dest |
  >     python filter.py
  2 c1
  pulling from branch0 into branch1
  4 changesets found
  1 c2
  pulling from branch0 into branch2
  4 changesets found
  0 c3
  pulling from branch2 into branch3
  5 changesets found
  pulling from branch1 into branch3
  1 changesets found