diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py --- a/mercurial/changegroup.py +++ b/mercurial/changegroup.py @@ -872,6 +872,11 @@ versions.discard('02') return versions +def localversion(repo): + # Finds the best version to use for bundles that are meant to be used + # locally, such as those from strip and shelve, and temporary bundles. + return max(supportedoutgoingversions(repo)) + def safeversion(repo): # Finds the smallest version that it's safe to assume clients of the repo # will support. For example, all hg versions that support generaldelta also diff --git a/mercurial/repair.py b/mercurial/repair.py --- a/mercurial/repair.py +++ b/mercurial/repair.py @@ -38,7 +38,7 @@ totalhash = hashlib.sha1(''.join(allhashes)).hexdigest() name = "%s/%s-%s-%s.hg" % (backupdir, short(node), totalhash[:8], suffix) - cgversion = changegroup.safeversion(repo) + cgversion = changegroup.localversion(repo) comp = None if cgversion != '01': bundletype = "HG20" diff --git a/tests/test-rebase-scenario-global.t b/tests/test-rebase-scenario-global.t --- a/tests/test-rebase-scenario-global.t +++ b/tests/test-rebase-scenario-global.t @@ -399,11 +399,10 @@ $ hg rebase -s 1 -d 2 rebasing 1:d2ae7f538514 "b" saved backup bundle to $TESTTMP/issue5678/.hg/strip-backup/d2ae7f538514-2953539b-rebase.hg (glob) -BROKEN: d36c should remain public $ hg log -G -T '{rev}:{node|shortest} {phase} {desc}\n' o 2:c882 draft b | - @ 1:d36c draft c + @ 1:d36c public c | o 0:cb9a public a diff --git a/tests/test-strip.t b/tests/test-strip.t --- a/tests/test-strip.t +++ b/tests/test-strip.t @@ -1116,6 +1116,6 @@ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved saved backup bundle to $TESTTMP/issue5678/.hg/strip-backup/489bac576828-bef27e14-backup.hg (glob) $ hg unbundle -q .hg/strip-backup/* -BROKEN: obsmarker got lost $ hg debugobsolete + cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b 489bac576828490c0bb8d45eac9e5e172e4ec0a8 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} $ cd ..