fixes for running under Mercurial 2.0

This commit is contained in:
Dan Villiom Podlaski Christiansen 2013-08-05 20:27:31 +02:00
parent 1be6c1de4e
commit 0ff4906cfb
3 changed files with 23 additions and 7 deletions

View File

@ -8,6 +8,7 @@ from mercurial import cmdutil
from mercurial import error from mercurial import error
from mercurial import hg from mercurial import hg
from mercurial import node from mercurial import node
from mercurial import repair
from mercurial import util as hgutil from mercurial import util as hgutil
try: try:
@ -84,6 +85,14 @@ def islocalrepo(url):
path = path.rsplit('/', 1)[0] path = path.rsplit('/', 1)[0]
return False return False
def strip(ui, repo, changesets, *args , **opts):
try:
repair.strip(ui, repo, changesets, *args, **opts)
except TypeError:
# only 2.1.2 and later allow strip to take a list of nodes
for changeset in changesets:
repair.strip(ui, repo, changeset, *args, **opts)
def version(ui): def version(ui):
"""Return version information if available.""" """Return version information if available."""

View File

@ -303,7 +303,7 @@ def push(repo, dest, force, revs):
util.swap_out_encoding() util.swap_out_encoding()
# strip the original changesets since the push was successful # strip the original changesets since the push was successful
repair.strip(ui, repo, outgoing, "all") util.strip(ui, repo, outgoing, "all")
finally: finally:
try: try:
# It's always safe to delete the temporary commits. # It's always safe to delete the temporary commits.
@ -315,8 +315,7 @@ def push(repo, dest, force, revs):
parent = repo[None].p1() parent = repo[None].p1()
if parent.node() in temporary_commits: if parent.node() in temporary_commits:
hg.update(repo, parent.p1().node()) hg.update(repo, parent.p1().node())
for n in temporary_commits: util.strip(ui, repo, temporary_commits, backup=None)
repair.strip(ui, repo, n, backup=None)
finally: finally:
util.swap_out_encoding(old_encoding) util.swap_out_encoding(old_encoding)
return 1 # so we get a sane exit status, see hg's commands.push return 1 # so we get a sane exit status, see hg's commands.push

View File

@ -17,6 +17,8 @@ from mercurial import node
from mercurial import revlog from mercurial import revlog
from mercurial import util as hgutil from mercurial import util as hgutil
from hgsubversion import util
import time import time
@ -594,10 +596,12 @@ class PushTests(test_util.TestBase):
# verify that the first commit is pushed, and the second is not # verify that the first commit is pushed, and the second is not
commit2 = self.repo['tip'] commit2 = self.repo['tip']
self.assertEqual(commit2.files(), ['delta', ]) self.assertEqual(commit2.files(), ['delta', ])
self.assertTrue(commit2.mutable()) self.assertEqual(util.getsvnrev(commit2), None)
commit1 = commit2.parents()[0] commit1 = commit2.parents()[0]
self.assertEqual(commit1.files(), ['gamma', ]) self.assertEqual(commit1.files(), ['gamma', ])
self.assertFalse(commit1.mutable()) prefix = 'svn:' + self.repo.svnmeta().uuid
self.assertEqual(util.getsvnrev(commit1),
prefix + '/branches/the_branch@5')
def test_push_two_that_modify_same_file(self): def test_push_two_that_modify_same_file(self):
''' '''
@ -623,10 +627,14 @@ class PushTests(test_util.TestBase):
# verify that both commits are pushed # verify that both commits are pushed
commit1 = self.repo['tip'] commit1 = self.repo['tip']
self.assertEqual(commit1.files(), ['delta', 'gamma']) self.assertEqual(commit1.files(), ['delta', 'gamma'])
self.assertFalse(commit1.mutable())
prefix = 'svn:' + self.repo.svnmeta().uuid
self.assertEqual(util.getsvnrev(commit1),
prefix + '/branches/the_branch@6')
commit2 = commit1.parents()[0] commit2 = commit1.parents()[0]
self.assertEqual(commit2.files(), ['gamma']) self.assertEqual(commit2.files(), ['gamma'])
self.assertFalse(commit2.mutable()) self.assertEqual(util.getsvnrev(commit2),
prefix + '/branches/the_branch@5')
def test_push_in_subdir(self, commit=True): def test_push_in_subdir(self, commit=True):
repo = self.repo repo = self.repo