annotate tests/test-empty.t @ 29021:92d37fb3f1aa stable

verify: don't init subrepo when missing one is referenced (issue5128) (API) Initializing a subrepo when one doesn't exist is the right thing to do when the parent is being updated, but in few other cases. Unfortunately, there isn't enough context in the subrepo module to distinguish this case. This same issue can be caused with other subrepo aware commands, so there is a general issue here beyond the scope of this fix. A simpler attempt I tried was to add an '_updating' boolean to localrepo, and set/clear it around the call to mergemod.update() in hg.updaterepo(). That mostly worked, but doesn't handle the case where archive will clone the subrepo if it is missing. (I vaguely recall that there may be other commands that will clone if needed like this, but certainly not all do. It seems both handy, and a bit surprising for what should be a read only operation. It might be nice if all commands did this consistently, but we probably need Angel's subrepo caching first, to not make a mess of the working directory.) I originally handled 'Exception' in order to pick up the Aborts raised in subrepo.state(), but this turns out to be unnecessary because that is called once and cached by ctx.sub() when iterating the subrepos. It was suggested in the bug discussion to skip looking at the subrepo links unless -S is specified. I don't really like that idea because missing a subrepo or (less likely, but worse) a corrupt .hgsubstate is a problem of the parent repo when checking out a revision. The -S option seems like a better fit for functionality that would recurse into each subrepo and do a full verification. Ultimately, the default value for 'allowcreate' should probably be flipped, but since the default behavior was to allow creation, this is less risky for now.
author Matt Harbison <matt_harbison@yahoo.com>
date Wed, 27 Apr 2016 22:45:52 -0400
parents ab2362e1672e
children f1186c292d03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11743
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
1 Create an empty repo:
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
2
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
3 $ hg init a
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
4 $ cd a
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
5
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
6 Try some commands:
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
7
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
8 $ hg log
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
9 $ hg grep wah
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 11743
diff changeset
10 [1]
11743
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
11 $ hg manifest
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
12 $ hg verify
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
13 checking changesets
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
14 checking manifests
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
15 crosschecking files in changesets and manifests
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
16 checking files
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
17 0 files, 0 changesets, 0 total revisions
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
18
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
19 Check the basic files created:
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
20
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
21 $ ls .hg
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
22 00changelog.i
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
23 requires
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
24 store
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
25
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
26 Should be empty:
1338
2b77ea66fe70 Add empty repo test
mpm@selenic.com
parents:
diff changeset
27
11743
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
28 $ ls .hg/store
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
29
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
30 Poke at a clone:
6944
7e5f3480c45b fix regression on empty repo cloning introduced by 0642d9d7ec80
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1338
diff changeset
31
11743
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
32 $ cd ..
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
33 $ hg clone a b
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
34 updating to branch default
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
35 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
36 $ cd b
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
37 $ hg verify
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
38 checking changesets
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
39 checking manifests
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
40 crosschecking files in changesets and manifests
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
41 checking files
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
42 0 files, 0 changesets, 0 total revisions
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
43 $ ls .hg
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
44 00changelog.i
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
45 hgrc
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
46 requires
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
47 store
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
48
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
49 Should be empty:
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
50
fc12420efcf4 tests: unify test-empty
Matt Mackall <mpm@selenic.com>
parents: 6944
diff changeset
51 $ ls .hg/store
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 12316
diff changeset
52
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 12316
diff changeset
53 $ cd ..