Example #1
0
    def test_shared_import_continue_branch(self):
        oldrepos = Repository.open(self.repos_url)
        convert_repository(oldrepos,
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True)

        mapping = oldrepos.get_mapping()

        dc = self.get_commit_editor()
        trunk = dc.open_dir("trunk")
        trunk.open_file("trunk/file").modify()
        dc.close()

        self.assertEqual(
            Repository.open(self.repos_url).generate_revision_id(
                2, u"trunk", mapping),
            Branch.open("e/trunk").last_revision())

        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True)

        self.assertEqual(
            Repository.open(self.repos_url).generate_revision_id(
                3, u"trunk", mapping),
            Branch.open("e/trunk").last_revision())
Example #2
0
    def test_get_config(self):
        repos = Repository.open(self.repos_url)
        repos.get_config().set_user_option("foo", "Van Der Graaf Generator")

        repos = Repository.open(self.repos_url)
        self.assertEquals("Van Der Graaf Generator",
                          repos.get_config().get_user_option("foo"))
Example #3
0
    def test_revision_history(self):
        repos_url = self.make_svn_repository('a')

        branch = Branch.open(repos_url)
        self.assertEqual((1, branch.generate_revision_id(0)),
                branch.last_revision_info())

        dc = self.get_commit_editor(repos_url)
        dc.add_file("foo").modify()
        dc.change_prop(SVN_PROP_BZR_REVISION_ID+"v3-none", 
                "42 mycommit\n")
        dc.close()

        branch = Branch.open(repos_url)
        repos = Repository.open(repos_url)

        mapping = repos.get_mapping()

        self.assertEqual((42, repos.generate_revision_id(1, u"", mapping)),
                branch.last_revision_info())

        dc = self.get_commit_editor(repos_url)
        dc.open_file("foo").modify()
        dc.close()

        branch = Branch.open(repos_url)
        repos = Repository.open(repos_url)

        mapping = repos.get_mapping()

        self.assertEqual(
            (43, repos.generate_revision_id(2, u"", mapping)),
            branch.last_revision_info())
Example #4
0
    def test_shared_import(self):
        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True)

        self.assertTrue(Repository.open("e").is_shared())
Example #5
0
 def test_shared_import_continue_with_wt(self):
     convert_repository(Repository.open(self.repos_url),
                        "e",
                        TrunkLayout(0),
                        working_trees=True)
     convert_repository(Repository.open(self.repos_url),
                        "e",
                        TrunkLayout(0),
                        working_trees=True)
Example #6
0
    def test_shared_import_continue(self):
        dir = ControlDir.create("e")
        dir.create_repository(shared=True)

        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=True)

        self.assertTrue(Repository.open("e").is_shared())
Example #7
0
    def test_push_lossy(self):
        repos_url = self.make_repository('d')
        Repository.open(repos_url).store_layout(RootLayout())

        dc = self.get_commit_editor(repos_url)
        dc.add_file("foo").modify()
        dc.close()

        self.run_bzr("branch %s dc" % repos_url)
        self.build_tree({"dc/foo": b"blaaaa"})
        self.run_bzr("commit -m msg dc")
        self.run_bzr("push --lossy -d dc %s" % repos_url)
        self.assertEquals("", self.run_bzr("status dc")[0])
Example #8
0
 def test_not_branch_path(self):
     tree = self.make_svn_branch_and_tree('a', 'dc')
     self.build_tree({"dc/file": b"data"})
     self.client_add("dc/file")
     self.client_commit("dc", "initial")
     self.client_update("dc")
     self.build_tree({"dc/dir": None})
     self.client_add("dc/dir")
     config_set_scheme(Repository.open(tree.branch.repository.base), TrunkBranchingScheme(0),
                       None, True)
     Repository.open(tree.branch.repository.base).store_layout(TrunkLayout(0))
     self.assertRaises(NotBranchError, WorkingTree.open, "dc/foobar")
     self.assertRaises(NotBranchError, WorkingTree.open, "dc/dir")
     WorkingTree.open("dc")
Example #9
0
    def test_fetch_filebranch(self):
        dc = self.get_commit_editor()
        bs = dc.open_dir("branches")
        bs.add_file("branches/somebranch").modify('data')
        dc.close()

        oldrepos = Repository.open(self.repos_url)
        convert_repository(oldrepos, "e", TrunkLayout(0))
        newrepos = Repository.open("e")
        oldrepos.set_layout(TrunkLayout(0))
        self.assertFalse(
            newrepos.has_revision(
                oldrepos.generate_revision_id(2, u"branches/somebranch",
                                              oldrepos.get_mapping())))
Example #10
0
    def test_all_revs(self):
        repos_url = self.make_svn_repository("a")

        dc = self.get_commit_editor(repos_url)
        trunk = dc.add_dir("trunk")
        trunk.add_file("trunk/file").modify(b"data")
        foo = dc.add_dir("foo")
        foo.add_file("foo/file").modify(b"data")
        dc.close()

        dc = self.get_commit_editor(repos_url)
        branches = dc.add_dir("branches")
        somebranch = branches.add_dir("branches/somebranch")
        somebranch.add_file("branches/somebranch/somefile").modify(b"data")
        dc.close()

        dc = self.get_commit_editor(repos_url)
        branches = dc.open_dir("branches")
        branches.delete("branches/somebranch")
        dc.close()

        repos = Repository.open(repos_url)
        repos.set_layout(TrunkLayout(0))
        mapping = repos.get_mapping()
        self.assertEqual(
            set([
                repos.generate_revision_id(1, "trunk", mapping),
                repos.generate_revision_id(2, "branches/somebranch", mapping)
            ]), set(repos.all_revision_ids()))
Example #11
0
 def test_gather_stats(self):
     repos = Repository.open(self.repos_url)
     stats = repos.gather_stats()
     self.assertEquals(0, stats['revisions'])
     self.assertFalse(stats.has_key("firstrev"))
     self.assertFalse(stats.has_key("latestrev"))
     self.assertFalse(stats.has_key('committers'))
Example #12
0
    def test_seen_bzr_revprops(self):
        repos = Repository.open(self.repos_url)
        dc = self.get_commit_editor(self.repos_url)
        dc.add_dir("foo")
        dc.close()

        self.assertFalse(repos.seen_bzr_revprops())
Example #13
0
    def test_get_config_global_set(self):
        cfg = GlobalConfig()
        cfg.set_user_option("foo", "Still Life")

        repos = Repository.open(self.repos_url)
        self.assertEquals("Still Life",
                          repos.get_config().get_user_option("foo"))
Example #14
0
    def test_mainline_revision_nested_deleted(self):
        repos_url = self.make_svn_repository('d')

        dc = self.get_commit_editor(repos_url)
        py = dc.add_dir("py")
        trunk = py.add_dir("py/trunk")
        adir = trunk.add_dir("py/trunk/adir")
        afile = adir.add_file("py/trunk/adir/file").modify(b"data")
        adir.add_dir("py/trunk/adir/stationary")
        dc.close()

        dc = self.get_commit_editor(repos_url)
        dc.add_dir("de", "py")
        dc.close()

        dc = self.get_commit_editor(repos_url)
        de = dc.open_dir("de")
        trunk = de.open_dir("de/trunk")
        trunk.delete("de/trunk/adir")
        dc.close()

        repos = Repository.open(repos_url)
        repos.set_layout(TrunkLayout(1))
        mapping = repos.get_mapping()
        revmeta3 = repos._revmeta_provider.get_revision("de/trunk", 3)
        self.assertEquals(
            repos.generate_revision_id(1, "py/trunk", mapping),
            revmeta3.get_lhs_parent_revid(
                mapping, revmeta3.get_lhs_parent_revmeta(mapping)))
Example #15
0
    def test_find_branches_between_moved_nobranch(self):
        repos_url = self.make_client("a", "dc")
        self.build_tree({
            'dc/tmp/nested/foobar': None,
            'dc/tmp/nested/branches/brancha': None,
            'dc/tmp/nested/branches/branchab': None,
            'dc/tmp/nested/branches/brancha/data': "data",
            "dc/tmp/nested/branches/branchab/data": "data"
        })
        self.client_add("dc/tmp")
        self.client_commit("dc", "My Message")
        self.client_copy("dc/tmp/nested", "dc/t2")
        self.client_commit("dc", "My Message 2")

        repos = Repository.open(repos_url)
        repos.set_layout(TrunkLayout(1))

        self.assertEqual([("t2/branches/brancha", 2, True),
                          ("t2/branches/branchab", 2, True)],
                         list(
                             find_branches_between(repos._log,
                                                   repos.transport,
                                                   TrunkLayout(1),
                                                   to_revnum=2,
                                                   from_revnum=2)))
Example #16
0
    def test_fetch_complex_ids_files(self):
        dc = self.get_commit_editor(self.repos_url)
        dir = dc.add_dir("dir")
        dir.add_file("dir/adir").modify("contents")
        dc.change_prop("bzr:revision-info", "")
        dc.change_prop("bzr:file-ids", "dir\tbloe\ndir/adir\tbla\n")
        dc.close()

        dc = self.get_commit_editor(self.repos_url)
        dc.add_file("bdir", "dir/adir")
        dir = dc.open_dir("dir")
        dir.delete("dir/adir")
        dc.change_prop("bzr:revision-info", "properties: \n")
        dc.change_prop("bzr:file-ids", "bdir\tbla\n")
        dc.close()

        oldrepos = Repository.open(self.repos_url)
        dir = ControlDir.create("f")
        newrepos = dir.create_repository()
        oldrepos.copy_content_into(newrepos)
        mapping = oldrepos.get_mapping()
        tree = newrepos.revision_tree(oldrepos.generate_revision_id(2, u"", mapping))
        self.assertEquals("bloe", tree.path2id("dir"))
        self.assertIs(None, tree.path2id("dir/adir"))
        self.assertEquals("bla", tree.path2id("bdir"))
Example #17
0
 def test_gather_stats(self):
     repos = Repository.open(self.repos_url)
     stats = repos.gather_stats()
     self.assertEquals(0, stats['revisions'])
     self.assertNotIn("firstrev", stats)
     self.assertNotIn("latestrev", stats)
     self.assertNotIn('committers', stats)
Example #18
0
 def test_generate_revision_id_zero(self):
     repos_url = self.make_client('d', 'dc')
     repository = Repository.open(repos_url)
     mapping = repository.get_mapping()
     self.assertEqual(
         mapping.revision_id_foreign_to_bzr((repository.uuid, "", 0)),
         repository.generate_revision_id(0, "", mapping))
Example #19
0
    def test_notshared_import(self):
        convert_repository(Repository.open(self.repos_url),
                           "e",
                           TrunkLayout(0),
                           create_shared_repo=False)

        self.assertRaises(NotBranchError, Repository.open, "e")
Example #20
0
    def test_get_revision_delta(self):
        repos_url = self.make_svn_repository('d')

        dc = self.get_commit_editor(repos_url)
        dc.add_file("foo").modify(b"data")
        dc.close()

        dc = self.get_commit_editor(repos_url)
        dc.open_file("foo").modify(b"data2")
        dc.close()

        r = Repository.open(repos_url)
        r.set_layout(RootLayout())
        d1 = r.get_revision_delta(
            r.generate_revision_id(1, "", r.get_mapping()))
        self.assertEquals(None, d1.unchanged)
        self.assertEquals(1, len(d1.added))
        self.assertEquals("foo", d1.added[0][0])
        self.assertEquals(0, len(d1.modified))
        self.assertEquals(0, len(d1.removed))

        d2 = r.get_revision_delta(
            r.generate_revision_id(2, "", r.get_mapping()))
        self.assertEquals(None, d2.unchanged)
        self.assertEquals(0, len(d2.added))
        self.assertEquals("foo", d2.modified[0][0])
        self.assertEquals(0, len(d2.removed))
Example #21
0
 def test_has_revision_future(self):
     repos_url = self.make_client('d', 'dc')
     repository = Repository.open(repos_url)
     self.assertFalse(
         repository.has_revision(
             repository.get_mapping().revision_id_foreign_to_bzr(
                 (repository.uuid, "", 5))))
Example #22
0
    def test_find_branches_between_removed(self):
        repos_url = self.make_svn_repository("a")

        repos = Repository.open(repos_url)
        repos.set_layout(TrunkLayout(0))

        dc = self.get_commit_editor(repos_url)
        trunk = dc.add_dir("trunk")
        trunk.add_file("trunk/foo").modify(b"data")
        dc.close()

        dc = self.get_commit_editor(repos_url)
        dc.delete("trunk")
        dc.close()

        self.assertEqual([("trunk", 1, True)],
                         list(
                             find_branches_between(repos._log,
                                                   repos.transport,
                                                   TrunkLayout(0),
                                                   from_revnum=2,
                                                   to_revnum=0)))
        self.assertEqual([("trunk", 1, True)],
                         list(
                             find_branches_between(repos._log,
                                                   repos.transport,
                                                   TrunkLayout(0),
                                                   from_revnum=1,
                                                   to_revnum=0)))
Example #23
0
 def test_get_branch_invalid_revision(self):
     repos_url = self.make_svn_repository("a")
     repos = Repository.open(repos_url)
     repos.set_layout(RootLayout())
     self.assertRaises(
         NoSuchRevision, list,
         repos._revmeta_provider.iter_reverse_branch_changes("/", 20, 0))
Example #24
0
    def test_checks_uuid(self):
        repos_url = self.make_svn_repository('d')

        dc = self.get_commit_editor(repos_url)
        dc.add_dir("bp")
        dc.close()

        mapping = mapping_registry.get_default()()
        ra = RemoteAccess(repos_url.encode("utf-8"),
                          auth=Auth([get_username_provider()]))
        revnum = ra.get_latest_revnum()
        revprops = {
            SVN_REVPROP_BZR_REPOS_UUID: "otheruuid",
            "svn:log": "bla",
            SVN_REVPROP_BZR_ROOT: "bp",
            SVN_REVPROP_BZR_MAPPING_VERSION: mapping.name,
            SVN_REVPROP_BZR_BASE_REVISION: "therealbaserevid"
        }
        dc = TestCommitEditor(ra.get_commit_editor(revprops), ra.url, revnum)
        dc.open_dir("bp").add_file("bp/la").modify()
        dc.close()

        repos = Repository.open(repos_url)

        revmeta1 = repos._revmeta_provider.get_revision(u"bp", 1)
        revmeta2 = repos._revmeta_provider.get_revision(u"bp", 2)

        self.assertEquals(
            mapping.revision_id_foreign_to_bzr((repos.uuid, "bp", 1)),
            revmeta2.get_lhs_parent_revid(mapping, revmeta1))
Example #25
0
    def test_fetch_file_from_non_branch(self):
        repos_url = self.make_svn_repository('d')

        dc = self.get_commit_editor(repos_url)
        old_trunk = dc.add_dir("old-trunk")
        lib = old_trunk.add_dir("old-trunk/lib")
        lib.add_file("old-trunk/lib/file").modify(b"data")
        dc.close()

        dc = self.get_commit_editor(repos_url)
        trunk = dc.add_dir("trunk")
        lib = trunk.add_dir("trunk/lib")
        lib.add_file("trunk/lib/file", "old-trunk/lib/file")
        dc.close()

        oldrepos = Repository.open(repos_url)
        oldrepos.set_layout(TrunkLayout(0))
        dir = ControlDir.create("f")
        newrepos = dir.create_repository()
        oldrepos.copy_content_into(newrepos)

        mapping = oldrepos.get_mapping()
        branch = Branch.open("%s/trunk" % repos_url)
        self.assertEquals(branch.mapping, mapping)
        self.assertEqual(
            (1, oldrepos.generate_revision_id(2, "trunk", mapping)),
            branch.last_revision_info())
Example #26
0
 def test_follow_history_empty(self):
     repos_url = self.make_svn_repository("a")
     repos = Repository.open(repos_url)
     repos.set_layout(RootLayout())
     self.assertEqual(
         set([repos.generate_revision_id(0, '', repos.get_mapping())]),
         set(repos.all_revision_ids(repos.get_layout())))
Example #27
0
 def test_lookup_revision_id_invalid_uuid(self):
     repos_url = self.make_client('d', 'dc')
     repository = Repository.open(repos_url)
     mapping = repository.get_mapping()
     self.assertRaises(
         NoSuchRevision, repository.lookup_bzr_revision_id,
         mapping.revision_id_foreign_to_bzr(("invaliduuid", "", 0)))
Example #28
0
    def test_branch_log_specific_ignore(self):
        repos_url = self.make_client("a", "dc")
        self.build_tree({'dc/branches': None})
        self.client_add("dc/branches")
        self.build_tree({
            'dc/branches/brancha': None,
            'dc/branches/branchab': None,
            'dc/branches/brancha/data': "data",
            "dc/branches/branchab/data": "data"
        })
        self.client_add("dc/branches/brancha")
        self.client_commit("dc", "My Message")

        self.client_add("dc/branches/branchab")
        self.client_commit("dc", "My Message2")

        repos = Repository.open(repos_url)
        repos.set_layout(TrunkLayout(0))

        self.assertEqual(
            1,
            len(
                list(
                    repos._revmeta_provider.iter_reverse_branch_changes(
                        "branches/brancha", 2, 0))))
Example #29
0
    def test_dumpfile_open_empty(self):
        dumpfile = os.path.join(self.test_dir, "dumpfile")
        open(dumpfile, 'w').write("""SVN-fs-dump-format-version: 2

UUID: 6987ef2d-cd6b-461f-9991-6f1abef3bd59

Revision-number: 0
Prop-content-length: 56
Content-length: 56

K 8
svn:date
V 27
2006-07-02T13:14:51.972532Z
PROPS-END
""")
        branch_path = os.path.join(self.test_dir, "f")
        repos = self.load_dumpfile(dumpfile, 'g')
        convert_repository(repos,
                           branch_path,
                           RootLayout(),
                           remember_parent=False)
        branch = Repository.open(branch_path)
        self.assertEqual(len(branch.all_revision_ids()), 1)
        b = Branch.open(branch_path)
        self.assertEquals(1, b.revno())
        self.assertEquals(None, b.get_parent())
Example #30
0
    def test_copy_contents_into(self):
        repos_url = self.make_client('d', 'dc')
        self.build_tree({'dc/foo/bla': b"data"})
        self.client_add("dc/foo")
        self.client_commit("dc", "My Message")
        self.build_tree({
            'dc/foo/blo': b"data2",
            "dc/bar/foo": b"data3",
            'dc/foo/bla': b"data"
        })
        self.client_add("dc/foo/blo")
        self.client_add("dc/bar")
        self.client_commit("dc", "Second Message")
        repository = Repository.open(repos_url)
        repository.set_layout(RootLayout())
        mapping = repository.get_mapping()

        to_controldir = ControlDir.create("e")
        to_repos = to_controldir.create_repository()

        repository.copy_content_into(
            to_repos, repository.generate_revision_id(2, "", mapping))

        self.assertTrue(
            repository.has_revision(
                repository.generate_revision_id(2, "", mapping)))
        self.assertTrue(
            repository.has_revision(
                repository.generate_revision_id(1, "", mapping)))