From fab490ae6372cd4d4eb565314f0a563f272319ea Mon Sep 17 00:00:00 2001 From: Tomasz Kleczek Date: Wed, 31 Oct 2012 16:23:23 -0700 Subject: [PATCH] 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. --- mercurial/bundlerepo.py | 2 ++ mercurial/revset.py | 14 ++++++++++++++ tests/test-bundle.t | 27 +++++++++++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/mercurial/bundlerepo.py b/mercurial/bundlerepo.py index fc78b7a8f6..bea19dd362 100644 --- a/mercurial/bundlerepo.py +++ b/mercurial/bundlerepo.py @@ -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 diff --git a/mercurial/revset.py b/mercurial/revset.py index c78ea53ea1..a70333f137 100644 --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -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, diff --git a/tests/test-bundle.t b/tests/test-bundle.t index 305d8eb662..b27afb1dca 100644 --- a/tests/test-bundle.t +++ b/tests/test-bundle.t @@ -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