Mercurial > hg-stable
changeset 5279:2dbd750b3ddd
convert: clear the dirstate before a conversion, invalidate it afterwards
Clearing it before the conversion protects us from whatever data were
there (file copies in particular).
Invalidating it after the conversion avoids writing a possibly
inconsistent dirstate to disk.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Sat, 01 Sep 2007 02:49:18 -0300 |
parents | 70e9a527cc61 |
children | 11e1e574da02 |
files | hgext/convert/hg.py tests/test-convert-hg-sink tests/test-convert-hg-sink.out |
diffstat | 3 files changed, 47 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/convert/hg.py Sat Sep 01 02:49:18 2007 -0300 +++ b/hgext/convert/hg.py Sat Sep 01 02:49:18 2007 -0300 @@ -32,8 +32,10 @@ def before(self): self.wlock = self.repo.wlock() self.lock = self.repo.lock() + self.repo.dirstate.clear() def after(self): + self.repo.dirstate.invalidate() self.lock = None self.wlock = None
--- a/tests/test-convert-hg-sink Sat Sep 01 02:49:18 2007 -0300 +++ b/tests/test-convert-hg-sink Sat Sep 01 02:49:18 2007 -0300 @@ -24,4 +24,30 @@ hg convert orig new 2>&1 | grep -v 'subversion python bindings could not be loaded' cd new hg out ../orig -true + +echo '% dirstate should be empty:' +hg debugstate +hg parents -q + +hg up -C +hg copy bar baz +echo '% put something in the dirstate:' +hg debugstate > debugstate +grep baz debugstate + +echo '% add a new revision in the original repo' +cd ../orig +echo baz > baz +hg ci -qAm 'add baz' + +cd .. +hg convert orig new 2>&1 | grep -v 'subversion python bindings could not be loaded' +cd new +hg out ../orig +echo '% dirstate should be the same (no output below):' +hg debugstate > new-debugstate +diff debugstate new-debugstate + +echo '% no copies' +hg up -C +hg debugrename baz
--- a/tests/test-convert-hg-sink.out Sat Sep 01 02:49:18 2007 -0300 +++ b/tests/test-convert-hg-sink.out Sat Sep 01 02:49:18 2007 -0300 @@ -31,3 +31,21 @@ comparing with ../orig searching for changes no changes found +% dirstate should be empty: +3 files updated, 0 files merged, 0 files removed, 0 files unresolved +% put something in the dirstate: +a 0 -1 unset baz +copy: bar -> baz +% add a new revision in the original repo +destination new is a Mercurial repository +scanning source... +sorting... +converting... +0 add baz +comparing with ../orig +searching for changes +no changes found +% dirstate should be the same (no output below): +% no copies +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +baz not renamed