##// END OF EJS Templates
revlog: skeleton support for version 2 revlogs...
revlog: skeleton support for version 2 revlogs There are a number of improvements we want to make to revlogs that will require a new version - version 2. It is unclear what the full set of improvements will be or when we'll be done with them. What I do know is that the process will likely take longer than a single release, will require input from various stakeholders to evaluate changes, and will have many contentious debates and bikeshedding. It is unrealistic to develop revlog version 2 up front: there are just too many uncertainties that we won't know until things are implemented and experiments are run. Some changes will also be invasive and prone to bit rot, so sitting on dozens of patches is not practical. This commit introduces skeleton support for version 2 revlogs in a way that is flexible and not bound by backwards compatibility concerns. An experimental repo requirement for denoting revlog v2 has been added. The requirement string has a sub-version component to it. This will allow us to declare multiple requirements in the course of developing revlog v2. Whenever we change the in-development revlog v2 format, we can tweak the string, creating a new requirement and locking out old clients. This will allow us to make as many backwards incompatible changes and experiments to revlog v2 as we want. In other words, we can land code and make meaningful progress towards revlog v2 while still maintaining extreme format flexibility up until the point we freeze the format and remove the experimental labels. To enable the new repo requirement, you must supply an experimental and undocumented config option. But not just any boolean flag will do: you need to explicitly use a value that no sane person should ever type. This is an additional guard against enabling revlog v2 on an installation it shouldn't be enabled on. The specific scenario I'm trying to prevent is say a user with a 4.4 client with a frozen format enabling the option but then downgrading to 4.3 and accidentally creating repos with an outdated and unsupported repo format. Requiring a "challenge" string should prevent this. Because the format is not yet finalized and I don't want to take any chances, revlog v2's version is currently 0xDEAD. I figure squatting on a value we're likely never to use as an actual revlog version to mean "internal testing only" is acceptable. And "dead" is easily recognized as something meaningful. There is a bunch of cleanup that is needed before work on revlog v2 begins in earnest. I plan on doing that work once this patch is accepted and we're comfortable with the idea of starting down this path.

File last commit:

r32267:c2380b44 default
r32697:19b9fc40 default
Show More
test-strip.t
939 lines | 25.8 KiB | text/troff | Tads3Lexer
Pierre-Yves David
test: use generaldelta in 'test-strip.t'...
r26929 $ echo "[format]" >> $HGRCPATH
$ echo "usegeneraldelta=yes" >> $HGRCPATH
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 $ echo "[extensions]" >> $HGRCPATH
$ echo "strip=" >> $HGRCPATH
$ restore() {
> hg unbundle -q .hg/strip-backup/*
> rm .hg/strip-backup/*
> }
$ teststrip() {
> hg up -C $1
> echo % before update $1, strip $2
> hg parents
> hg --traceback strip $2
> echo % after update $1, strip $2
> hg parents
> restore
> }
$ hg init test
$ cd test
$ echo foo > bar
$ hg ci -Ama
adding bar
$ echo more >> bar
$ hg ci -Amb
$ echo blah >> bar
$ hg ci -Amc
$ hg up 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo blah >> bar
$ hg ci -Amd
created new head
$ echo final >> bar
$ hg ci -Ame
$ hg log
changeset: 4:443431ffac4f
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: e
changeset: 3:65bd5f99a4a3
parent: 1:ef3a871183d7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: d
changeset: 2:264128213d29
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: c
changeset: 1:ef3a871183d7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: b
changeset: 0:9ab35a2d17cb
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
$ teststrip 4 4
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
% before update 4, strip 4
changeset: 4:443431ffac4f
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: e
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
% after update 4, strip 4
changeset: 3:65bd5f99a4a3
tag: tip
parent: 1:ef3a871183d7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: d
$ teststrip 4 3
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% before update 4, strip 3
changeset: 4:443431ffac4f
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: e
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
% after update 4, strip 3
changeset: 1:ef3a871183d7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: b
$ teststrip 1 4
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
% before update 1, strip 4
changeset: 1:ef3a871183d7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: b
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
% after update 1, strip 4
changeset: 1:ef3a871183d7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: b
$ teststrip 4 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% before update 4, strip 2
changeset: 4:443431ffac4f
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: e
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
% after update 4, strip 2
changeset: 3:443431ffac4f
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: e
$ teststrip 4 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% before update 4, strip 1
changeset: 4:264128213d29
tag: tip
parent: 1:ef3a871183d7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: c
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
% after update 4, strip 1
changeset: 0:9ab35a2d17cb
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
$ teststrip null 4
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
% before update null, strip 4
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
% after update null, strip 4
$ hg log
changeset: 4:264128213d29
tag: tip
parent: 1:ef3a871183d7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: c
changeset: 3:443431ffac4f
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: e
changeset: 2:65bd5f99a4a3
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: d
changeset: 1:ef3a871183d7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: b
changeset: 0:9ab35a2d17cb
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
Eric Sumner
repair: add experimental option to write bundle2 files...
r23898 $ hg up -C 4
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg parents
changeset: 4:264128213d29
tag: tip
parent: 1:ef3a871183d7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: c
Eric Sumner
repair._bundle: fix traceback for bad config value...
r23939
Pierre-Yves David
strip: use bundle2 + cg2 by default when repository use general delta...
r26423 $ hg --traceback strip 4
Eric Sumner
repair: add experimental option to write bundle2 files...
r23898 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/test/.hg/strip-backup/264128213d29-0b39d6bf-backup.hg (glob)
$ hg parents
changeset: 1:ef3a871183d7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: b
$ hg debugbundle .hg/strip-backup/*
Gregory Szorc
util: implement a deterministic __repr__ on sortdict...
r29592 Stream params: sortdict([('Compression', 'BZ')])
Gregory Szorc
bundle2: store changeset count when creating file bundles...
r29593 changegroup -- "sortdict([('version', '02'), ('nbchanges', '1')])"
Pierre-Yves David
test: use generaldelta in 'test-strip.t'...
r26929 264128213d290d868c54642d13aeaa3675551a78
Eric Sumner
bundlerepo: basic bundle2 support...
r24073 $ hg pull .hg/strip-backup/*
pulling from .hg/strip-backup/264128213d29-0b39d6bf-backup.hg
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 0 changes to 0 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
$ rm .hg/strip-backup/*
$ hg log --graph
o changeset: 4:264128213d29
| tag: tip
| parent: 1:ef3a871183d7
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: c
|
| o changeset: 3:443431ffac4f
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: e
| |
| o changeset: 2:65bd5f99a4a3
|/ user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: d
|
@ changeset: 1:ef3a871183d7
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: b
|
o changeset: 0:9ab35a2d17cb
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 $ hg up -C 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge 4
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
before strip of merge parent
$ hg parents
changeset: 2:65bd5f99a4a3
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: d
changeset: 4:264128213d29
tag: tip
parent: 1:ef3a871183d7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: c
$ hg strip 4
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
after strip of merge parent
$ hg parents
changeset: 1:ef3a871183d7
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: b
$ restore
$ hg up
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Pierre-Yves David
update: warn about other topological heads on bare update...
r28029 1 other heads for branch "default"
Martin Geisler
tests: don't load unnecessary graphlog extension...
r20117 $ hg log -G
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 @ changeset: 4:264128213d29
| tag: tip
| parent: 1:ef3a871183d7
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: c
|
| o changeset: 3:443431ffac4f
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: e
| |
| o changeset: 2:65bd5f99a4a3
|/ user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: d
|
o changeset: 1:ef3a871183d7
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: b
|
o changeset: 0:9ab35a2d17cb
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
2 is parent of 3, only one strip should happen
$ hg strip "roots(2)" 3
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
Martin Geisler
tests: don't load unnecessary graphlog extension...
r20117 $ hg log -G
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 @ changeset: 2:264128213d29
| tag: tip
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: c
|
o changeset: 1:ef3a871183d7
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: b
|
o changeset: 0:9ab35a2d17cb
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
$ restore
Martin Geisler
tests: don't load unnecessary graphlog extension...
r20117 $ hg log -G
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 o changeset: 4:443431ffac4f
| tag: tip
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: e
|
o changeset: 3:65bd5f99a4a3
| parent: 1:ef3a871183d7
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: d
|
| @ changeset: 2:264128213d29
|/ user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: c
|
o changeset: 1:ef3a871183d7
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: b
|
o changeset: 0:9ab35a2d17cb
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
Martin von Zweigbergk
strip: report both bundle files in case of exception (issue5368)...
r29952 Failed hook while applying "saveheads" bundle.
$ hg strip 2 --config hooks.pretxnchangegroup.bad=false
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
transaction abort!
rollback completed
Martin von Zweigbergk
strip: don't use "full" and "partial" to describe bundles...
r29954 strip failed, backup bundle stored in '$TESTTMP/test/.hg/strip-backup/*-backup.hg' (glob)
Martin von Zweigbergk
strip: clarify that user action is required to recover temp bundle...
r29953 strip failed, unrecovered changes stored in '$TESTTMP/test/.hg/strip-backup/*-temp.hg' (glob)
(fix the problem, then recover the changesets with "hg unbundle '$TESTTMP/test/.hg/strip-backup/*-temp.hg'") (glob)
Martin von Zweigbergk
strip: report both bundle files in case of exception (issue5368)...
r29952 abort: pretxnchangegroup.bad hook exited with status 1
[255]
$ restore
$ hg log -G
o changeset: 4:443431ffac4f
| tag: tip
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: e
|
o changeset: 3:65bd5f99a4a3
| parent: 1:ef3a871183d7
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: d
|
| o changeset: 2:264128213d29
|/ user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: c
|
@ changeset: 1:ef3a871183d7
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: b
|
o changeset: 0:9ab35a2d17cb
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827
2 different branches: 2 strips
$ hg strip 2 4
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
Martin Geisler
tests: don't load unnecessary graphlog extension...
r20117 $ hg log -G
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 o changeset: 2:65bd5f99a4a3
| tag: tip
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: d
|
@ changeset: 1:ef3a871183d7
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: b
|
o changeset: 0:9ab35a2d17cb
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
$ restore
2 different branches and a common ancestor: 1 strip
$ hg strip 1 "2|4"
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
$ restore
Durham Goode
fncache: clean up fncache during strips...
r20885 verify fncache is kept up-to-date
$ touch a
$ hg ci -qAm a
$ cat .hg/store/fncache | sort
data/a.i
data/bar.i
$ hg strip tip
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
$ cat .hg/store/fncache
data/bar.i
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 stripping an empty revset
$ hg strip "1 and not 1"
abort: empty revision set
[255]
remove branchy history for qimport tests
$ hg strip 3
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
strip of applied mq should cleanup status file
$ echo "mq=" >> $HGRCPATH
$ hg up -C 3
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo fooagain >> bar
$ hg ci -mf
$ hg qimport -r tip:2
applied patches before strip
$ hg qapplied
Mads Kiilerich
mq: generate patch names from first line of description...
r26736 d
e
f
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827
stripping revision in queue
$ hg strip 3
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
applied patches after stripping rev in queue
$ hg qapplied
Mads Kiilerich
mq: generate patch names from first line of description...
r26736 d
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827
stripping ancestor of queue
$ hg strip 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
applied patches after stripping ancestor of queue
$ hg qapplied
Mads Kiilerich
spelling: random spell checker fixes
r19951 Verify strip protects against stripping wc parent when there are uncommitted mods
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827
$ echo b > b
Matt Mackall
strip: properly clear resolve state with --keep (issue4593)...
r24709 $ echo bb > bar
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 $ hg add b
$ hg ci -m 'b'
$ hg log --graph
Matt Mackall
strip: properly clear resolve state with --keep (issue4593)...
r24709 @ changeset: 1:76dcf9fab855
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 | tag: tip
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: b
|
o changeset: 0:9ab35a2d17cb
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
Matt Mackall
strip: properly clear resolve state with --keep (issue4593)...
r24709 $ hg up 0
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo c > bar
$ hg up -t false
merging bar
merging bar failed!
1 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges
[1]
$ hg sum
parent: 1:76dcf9fab855 tip
b
branch: default
commit: 1 modified, 1 unknown, 1 unresolved
update: (current)
Gilles Moris
summary: move the parents phase marker to commit line (issue4688)...
r25382 phases: 2 draft
Matt Mackall
strip: properly clear resolve state with --keep (issue4593)...
r24709 mq: 3 unapplied
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827
$ echo c > b
$ hg strip tip
abort: local changes found
[255]
$ hg strip tip --keep
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
$ hg log --graph
@ changeset: 0:9ab35a2d17cb
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
$ hg status
M bar
? b
Matt Mackall
strip: properly clear resolve state with --keep (issue4593)...
r24709 ? bar.orig
$ rm bar.orig
$ hg sum
parent: 0:9ab35a2d17cb tip
a
branch: default
commit: 1 modified, 1 unknown
update: (current)
Gilles Moris
summary: move the parents phase marker to commit line (issue4688)...
r25382 phases: 1 draft
Matt Mackall
strip: properly clear resolve state with --keep (issue4593)...
r24709 mq: 3 unapplied
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827
Strip adds, removes, modifies with --keep
$ touch b
$ hg add b
$ hg commit -mb
$ touch c
... with a clean working dir
$ hg add c
$ hg rm bar
$ hg commit -mc
$ hg status
$ hg strip --keep tip
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
$ hg status
! bar
? c
... with a dirty working dir
$ hg add c
$ hg rm bar
$ hg commit -mc
$ hg status
$ echo b > b
$ echo d > d
$ hg strip --keep tip
Christian Delahousse
strip: add a --keep test related to removing files from dirstate...
r27177 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 $ hg status
M b
! bar
? c
? d
Christian Delahousse
strip: add a --keep test related to removing files from dirstate...
r27177
... after updating the dirstate
$ hg add c
$ hg commit -mc
$ hg rm c
$ hg commit -mc
$ hg strip --keep '.^' -q
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 $ cd ..
stripping many nodes on a complex graph (issue3299)
$ hg init issue3299
$ cd issue3299
$ hg debugbuilddag '@a.:a@b.:b.:x<a@a.:a<b@b.:b<a@a.:a'
$ hg strip 'not ancestors(x)'
saved backup bundle to $TESTTMP/issue3299/.hg/strip-backup/*-backup.hg (glob)
test hg strip -B bookmark
$ cd ..
$ hg init bookmarks
$ cd bookmarks
Shubhanshu Agrawal
strip: changing bookmark argument to be a list...
r27030 $ hg debugbuilddag '..<2.*1/2:m<2+3:c<m+3:a<2.:b<m+2:d<2.:e<m+1:f'
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 $ hg bookmark -r 'a' 'todelete'
$ hg bookmark -r 'b' 'B'
$ hg bookmark -r 'b' 'nostrip'
$ hg bookmark -r 'c' 'delete'
Shubhanshu Agrawal
strip: changing bookmark argument to be a list...
r27030 $ hg bookmark -r 'd' 'multipledelete1'
$ hg bookmark -r 'e' 'multipledelete2'
$ hg bookmark -r 'f' 'singlenode1'
$ hg bookmark -r 'f' 'singlenode2'
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 $ hg up -C todelete
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
Stephen Lee
update: show message when a bookmark is activated by update...
r21503 (activating bookmark todelete)
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 $ hg strip -B nostrip
bookmark 'nostrip' deleted
abort: empty revision set
[255]
$ hg strip -B todelete
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/*-backup.hg (glob)
David Soria Parra
strip: remove bookmarks after strip succeed (issue4295)...
r21847 bookmark 'todelete' deleted
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 $ hg id -ir dcbb326fdec2
abort: unknown revision 'dcbb326fdec2'!
[255]
$ hg id -ir d62d843c9a01
d62d843c9a01
$ hg bookmarks
B 9:ff43616e5d0f
delete 6:2702dd0c91e7
Shubhanshu Agrawal
strip: changing bookmark argument to be a list...
r27030 multipledelete1 11:e46a4836065c
multipledelete2 12:b4594d867745
singlenode1 13:43227190fef8
singlenode2 13:43227190fef8
$ hg strip -B multipledelete1 -B multipledelete2
saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/e46a4836065c-89ec65c2-backup.hg (glob)
bookmark 'multipledelete1' deleted
bookmark 'multipledelete2' deleted
$ hg id -ir e46a4836065c
abort: unknown revision 'e46a4836065c'!
[255]
$ hg id -ir b4594d867745
abort: unknown revision 'b4594d867745'!
[255]
$ hg strip -B singlenode1 -B singlenode2
saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/43227190fef8-8da858f2-backup.hg (glob)
bookmark 'singlenode1' deleted
bookmark 'singlenode2' deleted
$ hg id -ir 43227190fef8
abort: unknown revision '43227190fef8'!
[255]
$ hg strip -B unknownbookmark
abort: bookmark 'unknownbookmark' not found
[255]
$ hg strip -B unknownbookmark1 -B unknownbookmark2
abort: bookmark 'unknownbookmark1,unknownbookmark2' not found
[255]
$ hg strip -B delete -B unknownbookmark
abort: bookmark 'unknownbookmark' not found
[255]
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 $ hg strip -B delete
David Soria Parra
strip: remove bookmarks after strip succeed (issue4295)...
r21847 saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/*-backup.hg (glob)
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827 bookmark 'delete' deleted
$ hg id -ir 6:2702dd0c91e7
abort: unknown revision '2702dd0c91e7'!
[255]
David Soria Parra
strip: remove bookmarks after strip succeed (issue4295)...
r21847 $ hg update B
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(activating bookmark B)
$ echo a > a
$ hg add a
$ hg strip -B B
abort: local changes found
[255]
$ hg bookmarks
* B 6:ff43616e5d0f
Pierre-Yves David
strip: rename test-mq-strip into test-strip...
r19827
Matt Mackall
strip: drop -b/--backup option (BC)...
r21854 Make sure no one adds back a -b option:
$ hg strip -b tip
hg strip: option -b not recognized
FUJIWARA Katsunori
doc: remove deprecated option from synopsis of command help...
r28288 hg strip [-k] [-f] [-B bookmark] [-r] REV...
Matt Mackall
strip: drop -b/--backup option (BC)...
r21854
strip changesets and all their descendants from the repository
timeless
help: use single quotes in use warning
r29974 (use 'hg help -e strip' to show help for the strip extension)
Matt Mackall
strip: drop -b/--backup option (BC)...
r21854
Matt Mackall
help: fold repeatable option message into option table header...
r22117 options ([+] can be repeated):
Matt Mackall
strip: drop -b/--backup option (BC)...
r21854
Shubhanshu Agrawal
strip: changing bookmark argument to be a list...
r27030 -r --rev REV [+] strip specified revision (optional, can specify
revisions without this option)
Pierre-Yves David
help: backout f3c4edfd35e1 (mark boolean flags with [no-] in help) for now...
r30152 -f --force force removal of changesets, discard uncommitted
Shubhanshu Agrawal
strip: changing bookmark argument to be a list...
r27030 changes (no backup)
Pierre-Yves David
help: backout f3c4edfd35e1 (mark boolean flags with [no-] in help) for now...
r30152 --no-backup no backups
-k --keep do not modify working directory during strip
Shubhanshu Agrawal
strip: changing bookmark argument to be a list...
r27030 -B --bookmark VALUE [+] remove revs only reachable from given bookmark
Pierre-Yves David
help: backout f3c4edfd35e1 (mark boolean flags with [no-] in help) for now...
r30152 --mq operate on patch repository
Matt Mackall
strip: drop -b/--backup option (BC)...
r21854
timeless
help: use single quotes in use warning
r29974 (use 'hg strip -h' to show more help)
Matt Mackall
strip: drop -b/--backup option (BC)...
r21854 [255]
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835
$ cd ..
Verify bundles don't get overwritten:
$ hg init doublebundle
$ cd doublebundle
$ touch a
$ hg commit -Aqm a
$ touch b
$ hg commit -Aqm b
$ hg strip -r 0
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/doublebundle/.hg/strip-backup/3903775176ed-e68910bd-backup.hg (glob)
$ ls .hg/strip-backup
3903775176ed-e68910bd-backup.hg
$ hg pull -q -r 3903775176ed .hg/strip-backup/3903775176ed-e68910bd-backup.hg
$ hg strip -r 0
saved backup bundle to $TESTTMP/doublebundle/.hg/strip-backup/3903775176ed-54390173-backup.hg (glob)
$ ls .hg/strip-backup
3903775176ed-54390173-backup.hg
3903775176ed-e68910bd-backup.hg
Pierre-Yves David
changegroup: properly compute common base in changeggroupsubset (issue4736)...
r25677 $ cd ..
Test that we only bundle the stripped changesets (issue4736)
------------------------------------------------------------
timeless@mozdev.org
test-strip: fix spelling of initialization (en-US)
r26173 initialization (previous repo is empty anyway)
Pierre-Yves David
changegroup: properly compute common base in changeggroupsubset (issue4736)...
r25677
$ hg init issue4736
$ cd issue4736
$ echo a > a
$ hg add a
$ hg commit -m commitA
$ echo b > b
$ hg add b
$ hg commit -m commitB
$ echo c > c
$ hg add c
$ hg commit -m commitC
$ hg up 'desc(commitB)'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo d > d
$ hg add d
$ hg commit -m commitD
created new head
$ hg up 'desc(commitC)'
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 'desc(commitD)'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -m 'mergeCD'
$ hg log -G
@ changeset: 4:d8db9d137221
|\ tag: tip
| | parent: 2:5c51d8d6557d
| | parent: 3:6625a5168474
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: mergeCD
| |
| o changeset: 3:6625a5168474
| | parent: 1:eca11cf91c71
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: commitD
| |
o | changeset: 2:5c51d8d6557d
|/ user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: commitC
|
o changeset: 1:eca11cf91c71
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: commitB
|
o changeset: 0:105141ef12d0
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: commitA
Check bundle behavior:
$ hg bundle -r 'desc(mergeCD)' --base 'desc(commitC)' ../issue4736.hg
2 changesets found
$ hg log -r 'bundle()' -R ../issue4736.hg
changeset: 3:6625a5168474
parent: 1:eca11cf91c71
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: commitD
changeset: 4:d8db9d137221
tag: tip
parent: 2:5c51d8d6557d
parent: 3:6625a5168474
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: mergeCD
check strip behavior
$ hg --config extensions.strip= strip 'desc(commitD)' --debug
resolving manifests
branchmerge: False, force: True, partial: False
ancestor: d8db9d137221+, local: d8db9d137221+, remote: eca11cf91c71
c: other deleted -> r
removing c
d: other deleted -> r
removing d
Matt Harbison
tests: flag Windows specific lines about background closing as optional
r28318 starting 4 threads for background file closing (?)
Pierre-Yves David
changegroup: properly compute common base in changeggroupsubset (issue4736)...
r25677 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
2 changesets found
list of changesets:
6625a516847449b6f0fa3737b9ba56e9f0f3032c
d8db9d1372214336d2b5570f20ee468d2c72fa8b
Pierre-Yves David
test: use generaldelta in 'test-strip.t'...
r26929 bundle2-output-bundle: "HG20", (1 params) 1 parts total
Gregory Szorc
bundle2: store changeset count when creating file bundles...
r29593 bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload
Pierre-Yves David
changegroup: properly compute common base in changeggroupsubset (issue4736)...
r25677 saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/6625a5168474-345bb43d-backup.hg (glob)
Pierre-Yves David
caches: move the 'updating the branch cache' message in 'updatecaches'...
r32267 updating the branch cache
Pierre-Yves David
changegroup: properly compute common base in changeggroupsubset (issue4736)...
r25677 invalid branchheads cache (served): tip differs
truncating cache/rbc-revs-v1 to 24
$ hg log -G
o changeset: 2:5c51d8d6557d
| tag: tip
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: commitC
|
@ changeset: 1:eca11cf91c71
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: commitB
|
o changeset: 0:105141ef12d0
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: commitA
strip backup content
$ hg log -r 'bundle()' -R .hg/strip-backup/6625a5168474-*-backup.hg
changeset: 3:6625a5168474
parent: 1:eca11cf91c71
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: commitD
changeset: 4:d8db9d137221
tag: tip
parent: 2:5c51d8d6557d
parent: 3:6625a5168474
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: mergeCD
Laurent Charignon
strip: invalidate phase cache after stripping changeset (issue5235)...
r29196 Check that the phase cache is properly invalidated after a strip with bookmark.
$ cat > ../stripstalephasecache.py << EOF
> from mercurial import extensions, localrepo
> def transactioncallback(orig, repo, desc, *args, **kwargs):
> def test(transaction):
> # observe cache inconsistency
> try:
> [repo.changelog.node(r) for r in repo.revs("not public()")]
> except IndexError:
> repo.ui.status("Index error!\n")
> transaction = orig(repo, desc, *args, **kwargs)
> # warm up the phase cache
> list(repo.revs("not public()"))
> if desc != 'strip':
> transaction.addpostclose("phase invalidation test", test)
> return transaction
> def extsetup(ui):
> extensions.wrapfunction(localrepo.localrepository, "transaction",
> transactioncallback)
> EOF
$ hg up -C 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo k > k
$ hg add k
$ hg commit -m commitK
$ echo l > l
$ hg add l
$ hg commit -m commitL
$ hg book -r tip blah
$ hg strip ".^" --config extensions.crash=$TESTTMP/stripstalephasecache.py
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/8f0b4384875c-4fa10deb-backup.hg (glob)
$ hg up -C 1
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
Pierre-Yves David
strip: use the 'finally: tr.release' pattern during stripping...
r26012
Error during post-close callback of the strip transaction
(They should be gracefully handled and reported)
$ cat > ../crashstrip.py << EOF
> from mercurial import error
> def reposetup(ui, repo):
> class crashstriprepo(repo.__class__):
> def transaction(self, desc, *args, **kwargs):
> tr = super(crashstriprepo, self).transaction(self, desc, *args, **kwargs)
> if desc == 'strip':
> def crash(tra): raise error.Abort('boom')
> tr.addpostclose('crash', crash)
> return tr
> repo.__class__ = crashstriprepo
> EOF
$ hg strip tip --config extensions.crash=$TESTTMP/crashstrip.py
saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/5c51d8d6557d-70daef06-backup.hg (glob)
Martin von Zweigbergk
strip: don't use "full" and "partial" to describe bundles...
r29954 strip failed, backup bundle stored in '$TESTTMP/issue4736/.hg/strip-backup/5c51d8d6557d-70daef06-backup.hg' (glob)
Pierre-Yves David
strip: use the 'finally: tr.release' pattern during stripping...
r26012 abort: boom
[255]