Each of the steps I added status messages for in this patch frequently
take minutes or tens of minutes for our internal users.
It would be nice to also have a progress bar but that will have to
come later.
Each of the steps I added status messages for in this patch frequently
take minutes or tens of minutes for our internal users.
It would be nice to also have a progress bar but that will have to
come later.
Automatic diff as part of commit; lint not applicable. |
Automatic diff as part of commit; unit tests not applicable. |
Path | Packages | |||
---|---|---|---|---|
M | hgext/narrow/narrowcommands.py (5 lines) | |||
M | tests/test-narrow-clone-non-narrow-server.t (1 line) | |||
M | tests/test-narrow-patterns.t (2 lines) | |||
M | tests/test-narrow-share.t (1 line) | |||
M | tests/test-narrow-trackedcmd.t (2 lines) | |||
M | tests/test-narrow.t (17 lines) |
Status | Author | Revision | |
---|---|---|---|
Closed | martinvonz | ||
Closed | martinvonz |
repo.revs( | repo.revs( | ||||
b'(::%n) - %ln + null', | b'(::%n) - %ln + null', | ||||
repo[b'.'].node(), | repo[b'.'].node(), | ||||
visibletostrip, | visibletostrip, | ||||
) | ) | ||||
) | ) | ||||
hg.clean(repo, urev) | hg.clean(repo, urev) | ||||
overrides = {(b'devel', b'strip-obsmarkers'): False} | overrides = {(b'devel', b'strip-obsmarkers'): False} | ||||
if backup: | |||||
ui.status(_(b'moving unwanted changesets to backup\n')) | |||||
else: | |||||
ui.status(_(b'deleting unwanted changesets\n')) | |||||
with ui.configoverride(overrides, b'narrow'): | with ui.configoverride(overrides, b'narrow'): | ||||
repair.strip(ui, unfi, tostrip, topic=b'narrow', backup=backup) | repair.strip(ui, unfi, tostrip, topic=b'narrow', backup=backup) | ||||
todelete = [] | todelete = [] | ||||
for t, f, f2, size in repo.store.datafiles(): | for t, f, f2, size in repo.store.datafiles(): | ||||
if f.startswith(b'data/'): | if f.startswith(b'data/'): | ||||
file = f[5:-2] | file = f[5:-2] | ||||
if not newmatch(file): | if not newmatch(file): | ||||
# corrupt in case of crash | # corrupt in case of crash | ||||
repo.setnarrowpats(newincludes, newexcludes) | repo.setnarrowpats(newincludes, newexcludes) | ||||
for f in todelete: | for f in todelete: | ||||
ui.status(_(b'deleting %s\n') % f) | ui.status(_(b'deleting %s\n') % f) | ||||
util.unlinkpath(repo.svfs.join(f)) | util.unlinkpath(repo.svfs.join(f)) | ||||
repo.store.markremoved(f) | repo.store.markremoved(f) | ||||
ui.status(_(b'deleting unwanted files from working copy\n')) | |||||
narrowspec.updateworkingcopy(repo, assumeclean=True) | narrowspec.updateworkingcopy(repo, assumeclean=True) | ||||
narrowspec.copytoworkingcopy(repo) | narrowspec.copytoworkingcopy(repo) | ||||
repo.destroyed() | repo.destroyed() | ||||
def _widen( | def _widen( | ||||
ui, | ui, |
new changesets * (glob) | new changesets * (glob) | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd narrowclone | $ cd narrowclone | ||||
$ hg tracked --addexclude f2 http://localhost:$HGPORT1/ | $ hg tracked --addexclude f2 http://localhost:$HGPORT1/ | ||||
comparing with http://localhost:$HGPORT1/ | comparing with http://localhost:$HGPORT1/ | ||||
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
deleting unwanted files from working copy | |||||
$ hg tracked --addinclude f1 http://localhost:$HGPORT1/ | $ hg tracked --addinclude f1 http://localhost:$HGPORT1/ | ||||
nothing to widen or narrow | nothing to widen or narrow | ||||
$ hg tracked --addinclude f9 http://localhost:$HGPORT1/ | $ hg tracked --addinclude f9 http://localhost:$HGPORT1/ | ||||
comparing with http://localhost:$HGPORT1/ | comparing with http://localhost:$HGPORT1/ | ||||
abort: server does not support narrow clones | abort: server does not support narrow clones | ||||
[255] | [255] |
$ hg tracked --removeexclude dir2/dirB --addexclude dir1/dirA/bar | $ hg tracked --removeexclude dir2/dirB --addexclude dir1/dirA/bar | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
deleting data/dir1/dirA/bar.i (reporevlogstore !) | deleting data/dir1/dirA/bar.i (reporevlogstore !) | ||||
deleting data/dir1/dirA/bar/0eca1d0cbdaea4651d1d04d71976a6d2d9bfaae5 (reposimplestore !) | deleting data/dir1/dirA/bar/0eca1d0cbdaea4651d1d04d71976a6d2d9bfaae5 (reposimplestore !) | ||||
deleting data/dir1/dirA/bar/index (reposimplestore !) | deleting data/dir1/dirA/bar/index (reposimplestore !) | ||||
deleting unwanted files from working copy | |||||
saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob) | saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob) | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 11 changesets with 7 changes to 7 files | added 11 changesets with 7 changes to 7 files | ||||
$ hg tracked | $ hg tracked | ||||
I path:dir1 | I path:dir1 | ||||
I path:dir2 | I path:dir2 | ||||
$ hg tracked --removeexclude dir2/dirA --addexclude dir1/dirA | $ hg tracked --removeexclude dir2/dirA --addexclude dir1/dirA | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
deleting data/dir1/dirA/foo.i (reporevlogstore !) | deleting data/dir1/dirA/foo.i (reporevlogstore !) | ||||
deleting data/dir1/dirA/foo/162caeb3d55dceb1fee793aa631ac8c73fcb8b5e (reposimplestore !) | deleting data/dir1/dirA/foo/162caeb3d55dceb1fee793aa631ac8c73fcb8b5e (reposimplestore !) | ||||
deleting data/dir1/dirA/foo/index (reposimplestore !) | deleting data/dir1/dirA/foo/index (reposimplestore !) | ||||
deleting unwanted files from working copy | |||||
saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob) | saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob) | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 13 changesets with 8 changes to 8 files | added 13 changesets with 8 changes to 8 files | ||||
$ hg tracked | $ hg tracked | ||||
I path:dir1 | I path:dir1 | ||||
I path:dir2 | I path:dir2 |
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
deleting data/d1/f.i | deleting data/d1/f.i | ||||
deleting data/d3/f.i | deleting data/d3/f.i | ||||
deleting data/d5/f.i | deleting data/d5/f.i | ||||
deleting meta/d1/00manifest.i (tree !) | deleting meta/d1/00manifest.i (tree !) | ||||
deleting meta/d3/00manifest.i (tree !) | deleting meta/d3/00manifest.i (tree !) | ||||
deleting meta/d5/00manifest.i (tree !) | deleting meta/d5/00manifest.i (tree !) | ||||
deleting unwanted files from working copy | |||||
$ hg -R main tracked | $ hg -R main tracked | ||||
I path:d7 | I path:d7 | ||||
$ hg -R main files | $ hg -R main files | ||||
abort: working copy's narrowspec is stale | abort: working copy's narrowspec is stale | ||||
(run 'hg tracked --update-working-copy') | (run 'hg tracked --update-working-copy') | ||||
[255] | [255] | ||||
$ hg -R main tracked --update-working-copy | $ hg -R main tracked --update-working-copy | ||||
not deleting possibly dirty file d3/f | not deleting possibly dirty file d3/f |
> EOF | > EOF | ||||
$ hg tracked --import-rules specs | $ hg tracked --import-rules specs | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
deleting data/inside/f.i | deleting data/inside/f.i | ||||
deleting meta/inside/00manifest.i (tree !) | deleting meta/inside/00manifest.i (tree !) | ||||
deleting unwanted files from working copy | |||||
saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob) | saved backup bundle to $TESTTMP/narrow/.hg/strip-backup/*-widen.hg (glob) | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 0 changes to 0 files | added 2 changesets with 0 changes to 0 files | ||||
$ hg tracked | $ hg tracked | ||||
I path:outisde | I path:outisde | ||||
X path:inside | X path:inside | ||||
> EOF | > EOF | ||||
$ hg tracked --import-rules specs --addexclude 'widest' | $ hg tracked --import-rules specs --addexclude 'widest' | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
deleting data/widest/f.i | deleting data/widest/f.i | ||||
deleting meta/widest/00manifest.i (tree !) | deleting meta/widest/00manifest.i (tree !) | ||||
deleting unwanted files from working copy | |||||
$ hg tracked | $ hg tracked | ||||
I path:outisde | I path:outisde | ||||
I path:wider | I path:wider | ||||
X path:inside | X path:inside | ||||
X path:outside2 | X path:outside2 | ||||
X path:widest | X path:widest | ||||
$ hg tracked --import-rules specs --clear | $ hg tracked --import-rules specs --clear |
1: add d2/f outsidenarrow | 1: add d2/f outsidenarrow | ||||
0: add d0/f | 0: add d0/f | ||||
$ hg tracked --removeinclude d0 --force-delete-local-changes | $ hg tracked --removeinclude d0 --force-delete-local-changes | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
The following changeset(s) or their ancestors have local changes not on the remote: | The following changeset(s) or their ancestors have local changes not on the remote: | ||||
* (glob) | * (glob) | ||||
moving unwanted changesets to backup | |||||
saved backup bundle to $TESTTMP/narrow-local-changes/.hg/strip-backup/*-narrow.hg (glob) | saved backup bundle to $TESTTMP/narrow-local-changes/.hg/strip-backup/*-narrow.hg (glob) | ||||
deleting data/d0/f.i (reporevlogstore !) | deleting data/d0/f.i (reporevlogstore !) | ||||
deleting meta/d0/00manifest.i (tree !) | deleting meta/d0/00manifest.i (tree !) | ||||
deleting data/d0/f/362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (reposimplestore !) | deleting data/d0/f/362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (reposimplestore !) | ||||
deleting data/d0/f/4374b5650fc5ae54ac857c0f0381971fdde376f7 (reposimplestore !) | deleting data/d0/f/4374b5650fc5ae54ac857c0f0381971fdde376f7 (reposimplestore !) | ||||
deleting data/d0/f/index (reposimplestore !) | deleting data/d0/f/index (reposimplestore !) | ||||
deleting unwanted files from working copy | |||||
$ hg log -T "{rev}: {desc} {outsidenarrow}\n" | $ hg log -T "{rev}: {desc} {outsidenarrow}\n" | ||||
7: local change to d3 | 7: local change to d3 | ||||
5: add d10/f outsidenarrow | 5: add d10/f outsidenarrow | ||||
4: add d6/f | 4: add d6/f | ||||
3: add d5/f outsidenarrow | 3: add d5/f outsidenarrow | ||||
2: add d3/f | 2: add d3/f | ||||
1: add d2/f outsidenarrow | 1: add d2/f outsidenarrow | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg debugobsolete `hg log -T '{node}' -r 'desc("local change to d0")'` | $ hg debugobsolete `hg log -T '{node}' -r 'desc("local change to d0")'` | ||||
1 new obsolescence markers | 1 new obsolescence markers | ||||
obsoleted 1 changesets | obsoleted 1 changesets | ||||
$ hg tracked --removeinclude d0 | $ hg tracked --removeinclude d0 | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
moving unwanted changesets to backup | |||||
saved backup bundle to $TESTTMP/narrow-local-changes/.hg/strip-backup/*-narrow.hg (glob) | saved backup bundle to $TESTTMP/narrow-local-changes/.hg/strip-backup/*-narrow.hg (glob) | ||||
deleting data/d0/f.i (reporevlogstore !) | deleting data/d0/f.i (reporevlogstore !) | ||||
deleting meta/d0/00manifest.i (tree !) | deleting meta/d0/00manifest.i (tree !) | ||||
deleting data/d0/f/362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (reposimplestore !) | deleting data/d0/f/362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (reposimplestore !) | ||||
deleting data/d0/f/4374b5650fc5ae54ac857c0f0381971fdde376f7 (reposimplestore !) | deleting data/d0/f/4374b5650fc5ae54ac857c0f0381971fdde376f7 (reposimplestore !) | ||||
deleting data/d0/f/index (reposimplestore !) | deleting data/d0/f/index (reposimplestore !) | ||||
deleting unwanted files from working copy | |||||
Updates off of stripped commit if necessary | Updates off of stripped commit if necessary | ||||
$ hg co -r 'desc("local change to d3")' -q | $ hg co -r 'desc("local change to d3")' -q | ||||
$ echo local change >> d6/f | $ echo local change >> d6/f | ||||
$ hg ci -m 'local change to d6' | $ hg ci -m 'local change to d6' | ||||
$ hg tracked --removeinclude d3 --force-delete-local-changes | $ hg tracked --removeinclude d3 --force-delete-local-changes | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
The following changeset(s) or their ancestors have local changes not on the remote: | The following changeset(s) or their ancestors have local changes not on the remote: | ||||
* (glob) | * (glob) | ||||
* (glob) | * (glob) | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
moving unwanted changesets to backup | |||||
saved backup bundle to $TESTTMP/narrow-local-changes/.hg/strip-backup/*-narrow.hg (glob) | saved backup bundle to $TESTTMP/narrow-local-changes/.hg/strip-backup/*-narrow.hg (glob) | ||||
deleting data/d3/f.i (reporevlogstore !) | deleting data/d3/f.i (reporevlogstore !) | ||||
deleting meta/d3/00manifest.i (tree !) | deleting meta/d3/00manifest.i (tree !) | ||||
deleting data/d3/f/2661d26c649684b482d10f91960cc3db683c38b4 (reposimplestore !) | deleting data/d3/f/2661d26c649684b482d10f91960cc3db683c38b4 (reposimplestore !) | ||||
deleting data/d3/f/99fa7136105a15e2045ce3d9152e4837c5349e4d (reposimplestore !) | deleting data/d3/f/99fa7136105a15e2045ce3d9152e4837c5349e4d (reposimplestore !) | ||||
deleting data/d3/f/index (reposimplestore !) | deleting data/d3/f/index (reposimplestore !) | ||||
deleting unwanted files from working copy | |||||
$ hg log -T '{desc}\n' -r . | $ hg log -T '{desc}\n' -r . | ||||
add d10/f | add d10/f | ||||
Updates to nullid if necessary | Updates to nullid if necessary | ||||
$ hg tracked --addinclude d3 -q | $ hg tracked --addinclude d3 -q | ||||
$ hg co null -q | $ hg co null -q | ||||
$ mkdir d3 | $ mkdir d3 | ||||
$ echo local change > d3/f | $ echo local change > d3/f | ||||
$ hg add d3/f | $ hg add d3/f | ||||
$ hg ci -m 'local change to d3' | $ hg ci -m 'local change to d3' | ||||
created new head | created new head | ||||
$ hg tracked --removeinclude d3 --force-delete-local-changes | $ hg tracked --removeinclude d3 --force-delete-local-changes | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
The following changeset(s) or their ancestors have local changes not on the remote: | The following changeset(s) or their ancestors have local changes not on the remote: | ||||
* (glob) | * (glob) | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
moving unwanted changesets to backup | |||||
saved backup bundle to $TESTTMP/narrow-local-changes/.hg/strip-backup/*-narrow.hg (glob) | saved backup bundle to $TESTTMP/narrow-local-changes/.hg/strip-backup/*-narrow.hg (glob) | ||||
deleting data/d3/f.i (reporevlogstore !) | deleting data/d3/f.i (reporevlogstore !) | ||||
deleting meta/d3/00manifest.i (tree !) | deleting meta/d3/00manifest.i (tree !) | ||||
deleting data/d3/f/2661d26c649684b482d10f91960cc3db683c38b4 (reposimplestore !) | deleting data/d3/f/2661d26c649684b482d10f91960cc3db683c38b4 (reposimplestore !) | ||||
deleting data/d3/f/5ce0767945cbdbca3b924bb9fbf5143f72ab40ac (reposimplestore !) | deleting data/d3/f/5ce0767945cbdbca3b924bb9fbf5143f72ab40ac (reposimplestore !) | ||||
deleting data/d3/f/index (reposimplestore !) | deleting data/d3/f/index (reposimplestore !) | ||||
deleting unwanted files from working copy | |||||
$ hg id | $ hg id | ||||
000000000000 | 000000000000 | ||||
$ cd .. | $ cd .. | ||||
Narrowing doesn't resurrect old commits (unlike what regular `hg strip` does) | Narrowing doesn't resurrect old commits (unlike what regular `hg strip` does) | ||||
$ hg clone --narrow ssh://user@dummy/master narrow-obsmarkers --include d0 --include d3 -q | $ hg clone --narrow ssh://user@dummy/master narrow-obsmarkers --include d0 --include d3 -q | ||||
$ cd narrow-obsmarkers | $ cd narrow-obsmarkers | ||||
$ echo a >> d0/f2 | $ echo a >> d0/f2 | ||||
$ hg tracked --removeinclude d0 | $ hg tracked --removeinclude d0 | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
deleting data/d0/f.i (reporevlogstore !) | deleting data/d0/f.i (reporevlogstore !) | ||||
deleting meta/d0/00manifest.i (tree !) | deleting meta/d0/00manifest.i (tree !) | ||||
deleting data/d0/f/362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (reposimplestore !) | deleting data/d0/f/362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (reposimplestore !) | ||||
deleting data/d0/f/index (reposimplestore !) | deleting data/d0/f/index (reposimplestore !) | ||||
deleting unwanted files from working copy | |||||
$ hg tracked | $ hg tracked | ||||
$ hg files | $ hg files | ||||
[1] | [1] | ||||
$ test -d d0 | $ test -d d0 | ||||
[1] | [1] | ||||
Do some work in the empty clone | Do some work in the empty clone | ||||
$ hg diff --change . | $ hg diff --change . | ||||
$ hg branch foo | $ hg branch foo | ||||
$ hg tracked --removeinclude d6 | $ hg tracked --removeinclude d6 | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
deleting data/d6/f.i (reporevlogstore !) | deleting data/d6/f.i (reporevlogstore !) | ||||
deleting meta/d6/00manifest.i (tree !) | deleting meta/d6/00manifest.i (tree !) | ||||
deleting data/d6/f/7339d30678f451ac8c3f38753beeb4cf2e1655c7 (reposimplestore !) | deleting data/d6/f/7339d30678f451ac8c3f38753beeb4cf2e1655c7 (reposimplestore !) | ||||
deleting data/d6/f/index (reposimplestore !) | deleting data/d6/f/index (reposimplestore !) | ||||
deleting unwanted files from working copy | |||||
$ hg tracked | $ hg tracked | ||||
I path:d0 | I path:d0 | ||||
I path:d3 | I path:d3 | ||||
I path:d9 | I path:d9 | ||||
#if repofncache | #if repofncache | ||||
$ hg debugrebuildfncache | $ hg debugrebuildfncache | ||||
fncache already up to date | fncache already up to date | ||||
#endif | #endif | ||||
$ find * | $ find * | ||||
d0 | d0 | ||||
d0/f | d0/f | ||||
d3 | d3 | ||||
d3/f | d3/f | ||||
d9 | d9 | ||||
d9/f | d9/f | ||||
$ hg verify -q | $ hg verify -q | ||||
$ hg tracked --addexclude d3/f | $ hg tracked --addexclude d3/f | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
deleting data/d3/f.i (reporevlogstore !) | deleting data/d3/f.i (reporevlogstore !) | ||||
deleting data/d3/f/2661d26c649684b482d10f91960cc3db683c38b4 (reposimplestore !) | deleting data/d3/f/2661d26c649684b482d10f91960cc3db683c38b4 (reposimplestore !) | ||||
deleting data/d3/f/index (reposimplestore !) | deleting data/d3/f/index (reposimplestore !) | ||||
deleting unwanted files from working copy | |||||
$ hg tracked | $ hg tracked | ||||
I path:d0 | I path:d0 | ||||
I path:d3 | I path:d3 | ||||
I path:d9 | I path:d9 | ||||
X path:d3/f | X path:d3/f | ||||
#if repofncache | #if repofncache | ||||
$ hg debugrebuildfncache | $ hg debugrebuildfncache | ||||
fncache already up to date | fncache already up to date | ||||
#endif | #endif | ||||
$ find * | $ find * | ||||
d0 | d0 | ||||
d0/f | d0/f | ||||
d9 | d9 | ||||
d9/f | d9/f | ||||
$ hg verify -q | $ hg verify -q | ||||
$ hg tracked --addexclude d0 | $ hg tracked --addexclude d0 | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
deleting data/d0/f.i (reporevlogstore !) | deleting data/d0/f.i (reporevlogstore !) | ||||
deleting meta/d0/00manifest.i (tree !) | deleting meta/d0/00manifest.i (tree !) | ||||
deleting data/d0/f/362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (reposimplestore !) | deleting data/d0/f/362fef284ce2ca02aecc8de6d5e8a1c3af0556fe (reposimplestore !) | ||||
deleting data/d0/f/index (reposimplestore !) | deleting data/d0/f/index (reposimplestore !) | ||||
deleting unwanted files from working copy | |||||
$ hg tracked | $ hg tracked | ||||
I path:d3 | I path:d3 | ||||
I path:d9 | I path:d9 | ||||
X path:d0 | X path:d0 | ||||
X path:d3/f | X path:d3/f | ||||
#if repofncache | #if repofncache | ||||
$ hg debugrebuildfncache | $ hg debugrebuildfncache | ||||
fncache already up to date | fncache already up to date | ||||
$ hg tracked --auto-remove-includes | $ hg tracked --auto-remove-includes | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for unused includes to remove | looking for unused includes to remove | ||||
path:d0 | path:d0 | ||||
path:d2 | path:d2 | ||||
remove these unused includes (yn)? y | remove these unused includes (yn)? y | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
moving unwanted changesets to backup | |||||
saved backup bundle to $TESTTMP/narrow-auto-remove/.hg/strip-backup/*-narrow.hg (glob) | saved backup bundle to $TESTTMP/narrow-auto-remove/.hg/strip-backup/*-narrow.hg (glob) | ||||
deleting data/d0/f.i | deleting data/d0/f.i | ||||
deleting data/d2/f.i | deleting data/d2/f.i | ||||
deleting meta/d0/00manifest.i (tree !) | deleting meta/d0/00manifest.i (tree !) | ||||
deleting meta/d2/00manifest.i (tree !) | deleting meta/d2/00manifest.i (tree !) | ||||
deleting unwanted files from working copy | |||||
$ hg tracked | $ hg tracked | ||||
I path:d1 | I path:d1 | ||||
$ hg files | $ hg files | ||||
d1/f | d1/f | ||||
$ hg tracked --auto-remove-includes | $ hg tracked --auto-remove-includes | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for unused includes to remove | looking for unused includes to remove | ||||
found no unused includes | found no unused includes | ||||
Test --no-backup | Test --no-backup | ||||
$ hg tracked --addinclude d0 --addinclude d2 -q | $ hg tracked --addinclude d0 --addinclude d2 -q | ||||
$ hg unbundle .hg/strip-backup/*-narrow.hg -q | $ hg unbundle .hg/strip-backup/*-narrow.hg -q | ||||
$ rm .hg/strip-backup/* | $ rm .hg/strip-backup/* | ||||
$ hg tracked --auto-remove-includes --no-backup | $ hg tracked --auto-remove-includes --no-backup | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for unused includes to remove | looking for unused includes to remove | ||||
path:d0 | path:d0 | ||||
path:d2 | path:d2 | ||||
remove these unused includes (yn)? y | remove these unused includes (yn)? y | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
deleting unwanted changesets | |||||
deleting data/d0/f.i | deleting data/d0/f.i | ||||
deleting data/d2/f.i | deleting data/d2/f.i | ||||
deleting meta/d0/00manifest.i (tree !) | deleting meta/d0/00manifest.i (tree !) | ||||
deleting meta/d2/00manifest.i (tree !) | deleting meta/d2/00manifest.i (tree !) | ||||
deleting unwanted files from working copy | |||||
$ ls .hg/strip-backup/ | $ ls .hg/strip-backup/ | ||||
Test removing include while concurrently modifying file in that path | Test removing include while concurrently modifying file in that path | ||||
$ hg clone --narrow ssh://user@dummy/master narrow-concurrent-modify -q \ | $ hg clone --narrow ssh://user@dummy/master narrow-concurrent-modify -q \ | ||||
> --include d0 --include d1 | > --include d0 --include d1 | ||||
$ cd narrow-concurrent-modify | $ cd narrow-concurrent-modify | ||||
$ hg --config 'hooks.pretxnopen = echo modified >> d0/f' tracked --removeinclude d0 | $ hg --config 'hooks.pretxnopen = echo modified >> d0/f' tracked --removeinclude d0 | ||||
comparing with ssh://user@dummy/master | comparing with ssh://user@dummy/master | ||||
searching for changes | searching for changes | ||||
looking for local changes to affected paths | looking for local changes to affected paths | ||||
deleting data/d0/f.i | deleting data/d0/f.i | ||||
deleting meta/d0/00manifest.i (tree !) | deleting meta/d0/00manifest.i (tree !) | ||||
deleting unwanted files from working copy | |||||
not deleting possibly dirty file d0/f | not deleting possibly dirty file d0/f |