/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to commands.py

Partially fix pull.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
# along with this program; if not, write to the Free Software
19
19
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20
20
 
 
21
 
21
22
"""Git-specific subcommands for Bazaar."""
22
23
 
23
 
from bzrlib.commands import (
24
 
    Command,
25
 
    )
26
 
from bzrlib.option import (
27
 
    Option,
28
 
    )
29
 
 
30
 
from bzrlib.plugins.git import (
31
 
    get_rich_root_format,
32
 
    )
 
24
from bzrlib.commands import Command
 
25
from bzrlib.option import Option
33
26
 
34
27
class cmd_git_serve(Command):
35
28
    """Provide access to a Bazaar branch using the git protocol.
59
52
        server = TCPGitServer(backend, 'localhost')
60
53
        server.serve_forever()
61
54
 
62
 
 
63
55
class cmd_git_import(Command):
64
56
    """Import all branches from a git repository.
65
57
 
66
58
    """
67
59
 
68
 
    takes_args = ["src_location", "dest_location?"]
 
60
    takes_args = ["src_location", "dest_location"]
69
61
 
70
 
    def run(self, src_location, dest_location=None):
71
 
        import os
72
 
        from bzrlib import (
73
 
            ui,
74
 
            urlutils,
75
 
            )
76
 
        from bzrlib.bzrdir import (
77
 
            BzrDir,
78
 
            format_registry,
79
 
            )
80
 
        from bzrlib.errors import (
81
 
            BzrCommandError,
82
 
            NoRepositoryPresent,
83
 
            NotBranchError,
84
 
            )
 
62
    def run(self, src_location, dest_location):
 
63
        from bzrlib.bzrdir import BzrDir, format_registry
 
64
        from bzrlib.errors import NoRepositoryPresent, NotBranchError
85
65
        from bzrlib.repository import Repository
86
 
        from bzrlib.plugins.git.branch import GitBranch
87
 
        from bzrlib.plugins.git.fetch import InterGitNonGitRepository
88
 
        from bzrlib.plugins.git.repository import GitRepository
89
 
 
90
 
        if dest_location is None:
91
 
            dest_location = os.path.basename(src_location.rstrip("/\\"))
92
 
 
93
66
        source_repo = Repository.open(src_location)
94
 
        if not isinstance(source_repo, GitRepository):
95
 
            raise BzrCommandError("%r is not a git repository" % src_location)
96
 
        format = get_rich_root_format()
 
67
        format = format_registry.make_bzrdir('rich-root-pack')
97
68
        try:
98
69
            target_bzrdir = BzrDir.open(dest_location)
99
70
        except NotBranchError:
103
74
        except NoRepositoryPresent:
104
75
            target_repo = target_bzrdir.create_repository(shared=True)
105
76
 
106
 
        interrepo = InterGitNonGitRepository(source_repo, target_repo)
107
 
        mapping = source_repo.get_mapping()
108
 
        refs = interrepo.fetch_refs()
109
 
        pb = ui.ui_factory.nested_progress_bar()
110
 
        try:
111
 
            for i, (name, ref) in enumerate(refs.iteritems()):
112
 
                if name.startswith("refs/tags/"):
113
 
                    continue
114
 
                pb.update("creating branches", i, len(refs))
115
 
                head_loc = os.path.join(dest_location, name)
116
 
                try:
117
 
                    head_bzrdir = BzrDir.open(head_loc)
118
 
                except NotBranchError:
119
 
                    parent_path = urlutils.dirname(head_loc)
120
 
                    if not os.path.isdir(parent_path):
121
 
                        os.makedirs(parent_path)
122
 
                    head_bzrdir = BzrDir.create(head_loc, format=format)
123
 
                try:
124
 
                    head_branch = head_bzrdir.open_branch()
125
 
                except NotBranchError:
126
 
                    head_branch = head_bzrdir.create_branch()
127
 
                revid = mapping.revision_id_foreign_to_bzr(ref)
128
 
                source_branch = GitBranch(source_repo.bzrdir, source_repo, 
129
 
                    name, ref, None)
130
 
                head_branch.generate_revision_history(revid)
131
 
                source_branch.tags.merge_to(head_branch.tags)
132
 
        finally:
133
 
            pb.finished()
 
77
        target_repo.fetch(source_repo)
 
78
        for name, ref in source_repo._git.heads().iteritems():
 
79
            head_loc = os.path.join(dest_location, name)
 
80
            try:
 
81
                head_bzrdir = BzrDir.open(head_loc)
 
82
            except NotBranchError:
 
83
                head_bzrdir = BzrDir.create(head_loc, format=format)
 
84
            try:
 
85
                head_branch = head_bzrdir.open_branch()
 
86
            except NotBranchError:
 
87
                head_branch = head_bzrdir.create_branch()
 
88
            head_branch.generate_revision_history(source_repo.get_mapping().revision_id_foreign_to_bzr(ref))
134
89