Mercurial > hg
view tests/test-convert-hg-startrev.t @ 13155:f02d7a562a21
subrepo: avoids empty commit when .hgsubstate is dirty (issue2403)
This patch avoids empty commit when .hgsubstate is dirty. Empty commit
was caused by .hgsubstate being updated back to the state of the
working copy parent when committing, if a user had changed it manually
and not made any changes in subrepositories.
The subrepository state from the working copies parent is compared
with the state calculated as a result of trying to commit the
subrepositories. If the two states are the same, then return None
otherwise the commit is just done.
The line: "committing subrepository x" will be written if there is
nothing committed, but .hgsubstate is dirty for x subrepository.
author | Erik Zielke <ez@aragost.com> |
---|---|
date | Mon, 29 Nov 2010 09:37:23 +0100 |
parents | 2405b4a5964a |
children | 43b3b761d9d1 |
line wrap: on
line source
$ cat > $HGRCPATH <<EOF > [extensions] > graphlog = > convert = > [convert] > hg.saverev = yes > EOF $ glog() > { > hg -R "$1" glog --template '{rev} "{desc}" files: {files}\n' > } $ hg init source $ cd source $ echo a > a $ echo b > b $ hg ci -d '0 0' -qAm '0: add a b' $ echo c > c $ hg ci -d '1 0' -qAm '1: add c' $ hg copy a e $ echo b >> b $ hg ci -d '2 0' -qAm '2: copy e from a, change b' $ hg up -C 0 1 files updated, 0 files merged, 2 files removed, 0 files unresolved $ echo a >> a $ hg ci -d '3 0' -qAm '3: change a' $ hg merge merging a and e to e 2 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg copy b d $ hg ci -d '4 0' -qAm '4: merge 2 and 3, copy d from b' $ echo a >> a $ hg ci -d '5 0' -qAm '5: change a' $ cd .. Convert from null revision $ hg convert --config convert.hg.startrev=null source full initializing destination full repository scanning source... sorting... converting... 5 0: add a b 4 1: add c 3 2: copy e from a, change b 2 3: change a 1 4: merge 2 and 3, copy d from b 0 5: change a $ glog full o 5 "5: change a" files: a | o 4 "4: merge 2 and 3, copy d from b" files: d e |\ | o 3 "3: change a" files: a | | o | 2 "2: copy e from a, change b" files: b e | | o | 1 "1: add c" files: c |/ o 0 "0: add a b" files: a b $ rm -Rf full Convert from zero revision $ hg convert --config convert.hg.startrev=0 source full initializing destination full repository scanning source... sorting... converting... 5 0: add a b 4 1: add c 3 2: copy e from a, change b 2 3: change a 1 4: merge 2 and 3, copy d from b 0 5: change a $ glog full o 5 "5: change a" files: a | o 4 "4: merge 2 and 3, copy d from b" files: d e |\ | o 3 "3: change a" files: a | | o | 2 "2: copy e from a, change b" files: b e | | o | 1 "1: add c" files: c |/ o 0 "0: add a b" files: a b Convert from merge parent $ hg convert --config convert.hg.startrev=1 source conv1 initializing destination conv1 repository scanning source... sorting... converting... 3 1: add c 2 2: copy e from a, change b 1 4: merge 2 and 3, copy d from b 0 5: change a $ glog conv1 o 3 "5: change a" files: a | o 2 "4: merge 2 and 3, copy d from b" files: a d e | o 1 "2: copy e from a, change b" files: b e | o 0 "1: add c" files: a b c $ cd conv1 Check copy preservation $ hg log --follow --copies e changeset: 2:79818a521a40 user: test date: Thu Jan 01 00:00:04 1970 +0000 summary: 4: merge 2 and 3, copy d from b changeset: 1:3e6201832cce user: test date: Thu Jan 01 00:00:02 1970 +0000 summary: 2: copy e from a, change b Check copy removal on missing parent $ hg log --follow --copies d changeset: 2:79818a521a40 user: test date: Thu Jan 01 00:00:04 1970 +0000 summary: 4: merge 2 and 3, copy d from b $ hg cat -r tip a b a a a b b $ hg -q verify $ cd .. Convert from merge $ hg convert --config convert.hg.startrev=4 source conv4 initializing destination conv4 repository scanning source... sorting... converting... 1 4: merge 2 and 3, copy d from b 0 5: change a $ glog conv4 o 1 "5: change a" files: a | o 0 "4: merge 2 and 3, copy d from b" files: a b c d e $ cd conv4 $ hg up -C 5 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg cat -r tip a b a a a b b $ hg -q verify $ cd ..