96
96
self.transport = transport.clone('.git')
97
97
self._lockfiles = lockfiles
98
self._mode_check_done = None
100
def is_control_filename(self, filename):
101
return filename == '.git' or filename.startswith('.git/')
99
103
def get_branch_transport(self, branch_format):
100
104
if branch_format is None:
109
113
def open_branch(self, ignore_fallbacks=None):
110
114
"""'create' a branch for this dir."""
111
115
repo = self.open_repository()
112
return branch.LocalGitBranch(self, repo, "HEAD", repo._git.head(),
116
return branch.LocalGitBranch(self, repo, "HEAD", self._lockfiles)
115
118
def open_repository(self, shared=False):
116
119
"""'open' a repository for this dir."""
117
120
return self._gitrepository_class(self, self._lockfiles)
119
122
def open_workingtree(self, recommend_upgrade=True):
123
if not self._git.bare and self._git.has_index():
124
return workingtree.GitWorkingTree(self, self.open_repository(),
120
126
loc = urlutils.unescape_for_display(self.root_transport.base, 'ascii')
121
127
raise errors.bzr_errors.NoWorkingTree(loc)
122
if (not self._git.bare and
123
os.path.exists(os.path.join(self._git.controldir(), "index"))):
124
return workingtree.GitWorkingTree(self, self.open_repository(),
127
129
def create_repository(self, shared=False):
128
130
return self.open_repository()
130
132
def create_branch(self):
131
133
return self.open_branch()
135
def backup_bzrdir(self):
137
self.root_transport.copy_tree(".git", ".git.backup")
138
return (self.root_transport.abspath(".git"),
139
self.root_transport.abspath(".git.backup"))
141
raise errors.bzr_errors.BzrError("Unable to backup bare repositories")
143
def create_workingtree(self, revision_id=None, from_branch=None,
144
accelerator_tree=None, hardlink=False):
146
raise errors.bzr_errors.BzrError("Can't create working tree in a bare repo")
147
from dulwich.index import write_index
148
write_index(self.root_transport.abspath(".git/index"), [])
149
return self.open_workingtree()