|
@@ -763,13 +763,13 @@ class BaseRepo(object):
|
|
|
self.object_store = object_store
|
|
|
self.refs = refs
|
|
|
|
|
|
- def _init_files(self):
|
|
|
+ def _init_files(self, bare):
|
|
|
"""Initialize a default set of named files."""
|
|
|
self._put_named_file('description', "Unnamed repository")
|
|
|
self._put_named_file('config', ('[core]\n'
|
|
|
'repositoryformatversion = 0\n'
|
|
|
'filemode = true\n'
|
|
|
- 'bare = ' + str(self.bare).lower() + '\n'
|
|
|
+ 'bare = ' + str(bare).lower() + '\n'
|
|
|
'logallrefupdates = true\n'))
|
|
|
self._put_named_file(os.path.join('info', 'exclude'), '')
|
|
|
|
|
@@ -1186,24 +1186,28 @@ class Repo(BaseRepo):
|
|
|
def __repr__(self):
|
|
|
return "<Repo at %r>" % self.path
|
|
|
|
|
|
+ @classmethod
|
|
|
+ def _init_maybe_bare(cls, path, bare):
|
|
|
+ for d in BASE_DIRECTORIES:
|
|
|
+ os.mkdir(os.path.join(path, *d))
|
|
|
+ DiskObjectStore.init(os.path.join(path, OBJECTDIR))
|
|
|
+ ret = cls(path)
|
|
|
+ ret.refs.set_symbolic_ref("HEAD", "refs/heads/master")
|
|
|
+ ret._init_files(bare)
|
|
|
+ return ret
|
|
|
+
|
|
|
@classmethod
|
|
|
def init(cls, path, mkdir=False):
|
|
|
if mkdir:
|
|
|
os.mkdir(path)
|
|
|
controldir = os.path.join(path, ".git")
|
|
|
os.mkdir(controldir)
|
|
|
- cls.init_bare(controldir)
|
|
|
+ cls._init_maybe_bare(controldir, False)
|
|
|
return cls(path)
|
|
|
|
|
|
@classmethod
|
|
|
def init_bare(cls, path):
|
|
|
- for d in BASE_DIRECTORIES:
|
|
|
- os.mkdir(os.path.join(path, *d))
|
|
|
- DiskObjectStore.init(os.path.join(path, OBJECTDIR))
|
|
|
- ret = cls(path)
|
|
|
- ret.refs.set_symbolic_ref("HEAD", "refs/heads/master")
|
|
|
- ret._init_files()
|
|
|
- return ret
|
|
|
+ return cls._init_maybe_bare(path, True)
|
|
|
|
|
|
create = init_bare
|
|
|
|
|
@@ -1254,5 +1258,5 @@ class MemoryRepo(BaseRepo):
|
|
|
ret.object_store.add_object(obj)
|
|
|
for refname, sha in refs.iteritems():
|
|
|
ret.refs[refname] = sha
|
|
|
- ret._init_files()
|
|
|
+ ret._init_files(bare=True)
|
|
|
return ret
|