bundle: add revset expression to show bundle contents (issue3487)

bundle() revset expression returns all changes that are present
in the bundle file (no matter whether they are in the repo or not).

Bundle file should be specified via -R option.
This commit is contained in:
Tomasz Kleczek 2012-10-31 16:23:23 -07:00
parent d277fc55af
commit fab490ae63
3 changed files with 43 additions and 0 deletions

View File

@ -33,6 +33,7 @@ class bundlerevlog(revlog.revlog):
self.basemap = {}
n = len(self)
chain = None
self.bundlenodes = []
while True:
chunkdata = bundle.deltachunk(chain)
if not chunkdata:
@ -48,6 +49,7 @@ class bundlerevlog(revlog.revlog):
start = bundle.tell() - size
link = linkmapper(cs)
self.bundlenodes.append(node)
if node in self.nodemap:
# this can happen if two branches make the same change
chain = node

View File

@ -442,6 +442,19 @@ def bumped(repo, subset, x):
bumped = obsmod.getrevs(repo, 'bumped')
return [r for r in subset if r in bumped]
def bundle(repo, subset, x):
"""``bundle()``
Changesets in the bundle.
Bundle must be specified by the -R option."""
try:
bundlenodes = repo.changelog.bundlenodes
except AttributeError:
raise util.Abort(_("no bundle provided - specify with -R"))
revs = set(repo[n].rev() for n in bundlenodes)
return [r for r in subset if r in revs]
def checkstatus(repo, subset, pat, field):
m = None
s = []
@ -1513,6 +1526,7 @@ symbols = {
"branch": branch,
"branchpoint": branchpoint,
"bumped": bumped,
"bundle": bundle,
"children": children,
"closed": closed,
"contains": contains,

View File

@ -444,6 +444,33 @@ Unbundle incremental bundles into fresh empty in one go
added 1 changesets with 1 changes to 1 files
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
View full contents of the bundle
$ hg -R test bundle --base null -r 3 ../partial.hg
4 changesets found
$ cd test
$ hg -R ../../partial.hg log -r "bundle()"
changeset: 0:f9ee2f85a263
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 0.0
changeset: 1:34c2bf6b0626
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 0.1
changeset: 2:e38ba6f5b7e0
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 0.2
changeset: 3:eebf5a27f8ca
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 0.3
$ cd ..
test for 540d1059c802
test for 540d1059c802