@display_command
def run(self, from_repository=None, verbose=False):
- from upgrade import upgrade_branch
+ from upgrade import upgrade_branch, upgrade_workingtree
from bzrlib.branch import Branch
from bzrlib.errors import NoWorkingTree, BzrCommandError
from bzrlib.repository import Repository
else:
from_repository = Repository.open(from_repository)
- upgrade_branch(branch_to, from_repository, allow_changes=True,
- verbose=verbose)
+ if wt_to is not None:
+ upgrade_workingtree(wt_to, from_repository, allow_changes=True,
+ verbose=verbose)
+ else:
+ upgrade_branch(branch_to, from_repository, allow_changes=True,
+ verbose=verbose)
if wt_to is not None:
wt_to.set_last_revision(branch_to.last_revision())
from repository import MAPPING_VERSION
from tests import TestCaseWithSubversionRepository
from upgrade import (upgrade_repository, upgrade_branch,
- UpgradeChangesContent, parse_legacy_revision_id,
- create_upgraded_revid, generate_upgrade_map)
+ upgrade_workingtree, UpgradeChangesContent,
+ parse_legacy_revision_id, create_upgraded_revid,
+ generate_upgrade_map)
class TestUpgradeChangesContent(TestCase):
def test_init(self):
"anotherrev-svn%d-upgrade" % MAPPING_VERSION
], b.revision_history())
+ @skip_no_rebase
+ def test_workingtree(self):
+ repos_url = self.make_client("a", "dc")
+ self.build_tree({'dc/a': 'b'})
+ self.client_add("dc/a")
+ self.client_commit("dc", "data")
+
+ oldrepos = Repository.open(repos_url)
+ dir = BzrDir.create("f",format=get_rich_root_format())
+ newrepos = dir.create_repository()
+ b = dir.create_branch()
+ wt = dir.create_workingtree()
+ file("f/a", "w").write("b")
+ wt.add("a")
+ wt.commit(message="data", rev_id="svn-v1:1@%s-" % oldrepos.uuid)
+ file("f/a", 'w').write("moredata")
+ wt.commit(message='fix moredata', rev_id="customrev")
+ file("f/a", 'w').write("blackfield")
+ wt.commit(message='fix it again', rev_id="anotherrev")
+
+ upgrade_workingtree(wt, oldrepos, allow_changes=True)
+ self.assertEquals(wt.last_revision(), b.last_revision())
+ self.assertEqual([oldrepos.generate_revision_id(0, "", "none"),
+ oldrepos.generate_revision_id(1, "", "none"),
+ "customrev-svn%d-upgrade" % MAPPING_VERSION,
+ "anotherrev-svn%d-upgrade" % MAPPING_VERSION
+ ], b.revision_history())
+
@skip_no_rebase
def test_branch_none(self):
repos_url = self.make_client("a", "dc")
return revid + suffix
+def upgrade_workingtree(wt, svn_repository, allow_changes=False, verbose=False):
+ upgrade_branch(wt.branch, svn_repository, allow_changes=allow_changes, verbose=verbose)
+ last_revid = wt.branch.last_revision()
+ wt.set_parent_trees([(last_revid, wt.branch.repository.revision_tree(last_revid))])
+ # TODO: Should also adjust file ids in working tree if necessary
+
+
def upgrade_branch(branch, svn_repository, allow_changes=False, verbose=False):
"""Upgrade a branch to the current mapping version.