changeset 42129:232a33a11ce0

pull: deal with locally filtered changeset passed into --rev Nowadays, it is possible to explicitly pull a remote revision that end up being hidden locally (eg: obsoleted locally). However before this patch, some internal processing where crashing trying to resolve a filtered revision. Without this patches, the pull output result a confusing output: $ hg pull ../repo-Bob --rev 956063ac4557 pulling from ../repo-Bob searching for changes adding changesets adding manifests adding file changes added 2 changesets with 0 changes to 2 files (+1 heads) (2 other changesets obsolete on arrival) abort: 00changelog.i@956063ac4557828781733b2d5677a351ce856f59: filtered node!
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 05 Apr 2019 15:56:05 +0200
parents 537a8aeb9977
children a362b0b95e42
files mercurial/commands.py tests/test-obsolete-distributed.t
diffstat 2 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Mon Apr 15 22:13:11 2019 -0700
+++ b/mercurial/commands.py	Fri Apr 05 15:56:05 2019 +0200
@@ -4488,7 +4488,7 @@
             brev = None
 
             if checkout:
-                checkout = repo.changelog.rev(checkout)
+                checkout = repo.unfiltered().changelog.rev(checkout)
 
                 # order below depends on implementation of
                 # hg.addbranchrevs(). opts['bookmark'] is ignored,
--- a/tests/test-obsolete-distributed.t	Mon Apr 15 22:13:11 2019 -0700
+++ b/tests/test-obsolete-distributed.t	Fri Apr 05 15:56:05 2019 +0200
@@ -488,6 +488,22 @@
   d33b0a3a64647d79583526be8107802b1f9fedfa 5b5708a437f27665db42c5a261a539a1bcb2a8c2 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'bob'}
   ef908e42ce65ef57f970d799acaddde26f58a4cc 5ffb9e311b35f6ab6f76f667ca5d6e595645481b 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '4', 'operation': 'rebase', 'user': 'bob'}
 
+
+Same tests, but with --rev, this prevent regressing case where `hg pull --rev
+X` has to process a X that is filtered locally.
+
+  $ hg rollback
+  repository tip rolled back to revision 4 (undo unbundle)
+  $ hg pull ../repo-Bob --rev 956063ac4557
+  pulling from ../repo-Bob
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 0 changes to 2 files (+1 heads)
+  (2 other changesets obsolete on arrival)
+  (run 'hg heads' to see heads)
+
   $ cd ..
 
 Test pull report consistency