##// END OF EJS Templates
subrepo: propagate the --hidden option to hg subrepositories...
subrepo: propagate the --hidden option to hg subrepositories With many commands accepting a '-S' or an explicit path to trigger recursing into subrepos, it seems that --hidden needs to be propagated too. Unfortunately, many of the subrepo layer methods discard the options map, so passing the option along explicitly isn't currently an option. It also isn't clear if other filtered views need to be propagated, so changing all of those commands may be insufficient anyway. The specific jam I got into was amending an ancestor of qbase in a subrepo, and then evolving. The patch ended up being hidden, and outgoing said it would only push one unrelated commit. But push aborted with an 'unknown revision' that I traced back to the patch. (Odd it didn't say 'filtered revision'.) A push with --hidden worked from the subrepo, but that wasn't possible from the parent repo before this. Since the underlying problem doesn't actually require a subrepo, there's probably more to investigate here in the discovery area. Yes, evolve + mq is not exactly sane, but I don't know what is seeing the hidden revision. In lieu of creating a test for the above situation (evolving mq should probably be blocked), the test here is a marginally useful case where --hidden is needed in a subrepo: cat'ing a file in a hidden revision. Without this change, cat aborts with: $ hg --hidden cat subrepo/a skipping missing subrepository: subrepo [1]

File last commit:

r24877:cc497780 stable
r24877:cc497780 stable
Show More
test-subrepo-missing.t
109 lines | 2.8 KiB | text/troff | Tads3Lexer
/ tests / test-subrepo-missing.t
$ hg init repo
$ cd repo
$ hg init subrepo
$ echo a > subrepo/a
$ hg -R subrepo ci -Am adda
adding a
$ echo 'subrepo = subrepo' > .hgsub
$ hg ci -Am addsubrepo
adding .hgsub
$ echo b > subrepo/b
$ hg -R subrepo ci -Am addb
adding b
$ hg ci -m updatedsub
ignore blanklines in .hgsubstate
>>> file('.hgsubstate', 'wb').write('\n\n \t \n \n')
$ hg st --subrepos
M .hgsubstate
$ hg revert -qC .hgsubstate
abort more gracefully on .hgsubstate parsing error
$ cp .hgsubstate .hgsubstate.old
>>> file('.hgsubstate', 'wb').write('\ninvalid')
$ hg st --subrepos
abort: invalid subrepository revision specifier in '.hgsubstate' line 2
[255]
$ mv .hgsubstate.old .hgsubstate
delete .hgsub and revert it
$ rm .hgsub
$ hg revert .hgsub
warning: subrepo spec file '.hgsub' not found
warning: subrepo spec file '.hgsub' not found
warning: subrepo spec file '.hgsub' not found
delete .hgsubstate and revert it
$ rm .hgsubstate
$ hg revert .hgsubstate
delete .hgsub and update
$ rm .hgsub
$ hg up 0
warning: subrepo spec file '.hgsub' not found
warning: subrepo spec file '.hgsub' not found
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg st
warning: subrepo spec file '.hgsub' not found
! .hgsub
$ ls subrepo
a
delete .hgsubstate and update
$ hg up -C
warning: subrepo spec file '.hgsub' not found
warning: subrepo spec file '.hgsub' not found
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm .hgsubstate
$ hg up 0
remote changed .hgsubstate which local deleted
use (c)hanged version or leave (d)eleted? c
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg st
$ ls subrepo
a
Enable obsolete
$ cat >> $HGRCPATH << EOF
> [ui]
> logtemplate= {rev}:{node|short} {desc|firstline}
> [phases]
> publish=False
> [experimental]
> evolution=createmarkers
> EOF
check that we can update parent repo with missing (amended) subrepo revision
$ hg up --repository subrepo -r tip
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg ci -m "updated subrepo to tip"
created new head
$ cd subrepo
$ hg update -r tip
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo foo > a
$ hg commit --amend -m "addb (amended)"
$ cd ..
$ hg update --clean .
revision 102a90ea7b4a in subrepo subrepo is hidden
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
check that --hidden is propagated to the subrepo
$ hg -R subrepo up tip
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg ci -m 'commit with amended subrepo'
$ echo bar > subrepo/a
$ hg -R subrepo ci --amend -m "amend a (again)"
$ hg --hidden cat subrepo/a
foo
$ cd ..