Mercurial > hg
changeset 5986:a732eebf1958
hg import: write the dirstate after every commit
This allows the transaction system to backup the correct file, so
that a future rollback can do the right thing.
This should fix issue963.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Sun, 03 Feb 2008 21:03:46 -0200 |
parents | 850494d62674 |
children | f2201aee3dc8 |
files | mercurial/commands.py tests/test-import tests/test-import.out |
diffstat | 3 files changed, 21 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Sun Feb 03 21:03:46 2008 -0200 +++ b/mercurial/commands.py Sun Feb 03 21:03:46 2008 -0200 @@ -1632,6 +1632,9 @@ repo.rollback() raise util.Abort(_('patch is damaged' + ' or loses information')) + # Force a dirstate write so that the next transaction backups + # an up-do-date file. + repo.dirstate.write() finally: os.unlink(tmpname) finally:
--- a/tests/test-import Sun Feb 03 21:03:46 2008 -0200 +++ b/tests/test-import Sun Feb 03 21:03:46 2008 -0200 @@ -111,6 +111,18 @@ hg --cwd b tip --template '{desc}\n' rm -r b +# We weren't backing up the correct dirstate file when importing many patches +# (issue963) +echo '% import patch1 patch2; rollback' +echo line 3 >> a/a +hg --cwd a ci -m'third change' +hg --cwd a export -o '../patch%R' 1 2 +hg clone -qr0 a b +hg --cwd b parents --template 'parent: #rev#\n' +hg --cwd b import ../patch1 ../patch2 +hg --cwd b rollback +hg --cwd b parents --template 'parent: #rev#\n' +rm -r b # bug non regression test # importing a patch in a subdirectory failed at the commit stage
--- a/tests/test-import.out Sun Feb 03 21:03:46 2008 -0200 +++ b/tests/test-import.out Sun Feb 03 21:03:46 2008 -0200 @@ -112,6 +112,12 @@ next line --- +% import patch1 patch2; rollback +parent: 0 +applying ../patch1 +applying ../patch2 +rolling back last transaction +parent: 1 % hg import in a subdirectory requesting all changes adding changesets