Mercurial > hg
view tests/test-issue672.t @ 25591:f1d46075b13a
verify: check the subrepository references in .hgsubstate
While hopefully atypical, there are reasons that a subrepository revision can be
lost that aren't covered by corruption of the .hgsubstate revlog. Such things
can happen when a subrepo is amended, stripped or simply isn't pulled from
upstream because the parent repo revision wasn't updated yet. There's no way to
know if it is an error, but this will find potential problems sooner than when
some random revision is updated.
Until recently, convert made no attempt at rewriting the .hgsubstate file. The
impetuous for this is to verify the conversion of some repositories, and this is
orders of magnitude faster than a bash script from 0..tip that does an
'hg update -C $rev'. But it is equally useful to determine if everything has
been pulled down before taking a thumb drive on the go.
It feels somewhat wrong to leave this out of verifymod (mostly because the file
is already read in there, and the final summary is printed before the subrepos
are checked). But verifymod looks very low level, so importing subrepo stuff
there seems more wrong.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Tue, 16 Jun 2015 16:15:15 -0400 |
parents | bd625cd4e5e7 |
children | 2fc86d92c4a9 |
line wrap: on
line source
http://mercurial.selenic.com/bts/issue672 # 0-2-4 # \ \ \ # 1-3-5 # # rename in #1, content change in #4. $ hg init $ touch 1 $ touch 2 $ hg commit -Am init # 0 adding 1 adding 2 $ hg rename 1 1a $ hg commit -m rename # 1 $ hg co -C 0 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo unrelated >> 2 $ hg ci -m unrelated1 # 2 created new head $ hg merge --debug 1 searching for copies back to rev 1 unmatched files in other: 1a all copies found (* = to merge, ! = divergent, % = renamed and deleted): src: '1' -> dst: '1a' checking for directory renames resolving manifests branchmerge: True, force: False, partial: False ancestor: 81f4b099af3d, local: c64f439569a9+, remote: c12dcd37c90a 1: other deleted -> r removing 1 1a: remote created -> g getting 1a 2: remote unchanged -> k 1 files updated, 0 files merged, 1 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg ci -m merge1 # 3 $ hg co -C 2 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo hello >> 1 $ hg ci -m unrelated2 # 4 created new head $ hg co -C 3 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg merge -y --debug 4 searching for copies back to rev 1 unmatched files in local: 1a all copies found (* = to merge, ! = divergent, % = renamed and deleted): src: '1' -> dst: '1a' * checking for directory renames resolving manifests branchmerge: True, force: False, partial: False ancestor: c64f439569a9, local: e327dca35ac8+, remote: 746e9549ea96 preserving 1a for resolve of 1a 1a: local copied/moved from 1 -> m picked tool 'internal:merge' for 1a (binary False symlink False) merging 1a and 1 to 1a my 1a@e327dca35ac8+ other 1@746e9549ea96 ancestor 1@81f4b099af3d premerge successful 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg co -C 4 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg merge -y --debug 3 searching for copies back to rev 1 unmatched files in other: 1a all copies found (* = to merge, ! = divergent, % = renamed and deleted): src: '1' -> dst: '1a' * checking for directory renames resolving manifests branchmerge: True, force: False, partial: False ancestor: c64f439569a9, local: 746e9549ea96+, remote: e327dca35ac8 preserving 1 for resolve of 1a removing 1 1a: remote moved from 1 -> m picked tool 'internal:merge' for 1a (binary False symlink False) merging 1 and 1a to 1a my 1a@746e9549ea96+ other 1a@e327dca35ac8 ancestor 1@81f4b099af3d premerge successful 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit)