aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilo Casagrande <milo@ubuntu.com>2013-04-05 12:13:45 +0200
committerMilo Casagrande <milo@ubuntu.com>2013-04-05 12:13:45 +0200
commit77b7846bb08ca359a91ed6f05dbaa748739ce3d7 (patch)
treecc3d066f1c4b6e191223db3cf691106e72772863
parentf10be2e07cb59c01eca14e0508521737f04358a1 (diff)
Use instance variable instead, and do not re-create Repo object.
-rw-r--r--rhodecode/lib/vcs/backends/git/repository.py27
1 files changed, 13 insertions, 14 deletions
diff --git a/rhodecode/lib/vcs/backends/git/repository.py b/rhodecode/lib/vcs/backends/git/repository.py
index a1ba545d..b3cfcd02 100644
--- a/rhodecode/lib/vcs/backends/git/repository.py
+++ b/rhodecode/lib/vcs/backends/git/repository.py
@@ -54,8 +54,8 @@ class GitRepository(BaseRepository):
update_after_clone=False, bare=False):
self.path = abspath(repo_path)
- repo = self._get_repo(create, src_url, update_after_clone, bare)
- self.bare = repo.bare
+ self.repo = self._get_repo(create, src_url, update_after_clone, bare)
+ self.bare = self.repo.bare
self._config_files = [
bare and abspath(self.path, 'config')
@@ -65,7 +65,6 @@ class GitRepository(BaseRepository):
@ThreadLocalLazyProperty
def _repo(self):
- repo = Repo(self.path)
#temporary set that to now at later we will move it to constructor
baseui = None
if baseui is None:
@@ -73,13 +72,13 @@ class GitRepository(BaseRepository):
baseui = ui()
# patch the instance of GitRepo with an "FAKE" ui object to add
# compatibility layer with Mercurial
- setattr(repo, 'ui', baseui)
- return repo
+ setattr(self.repo, 'ui', baseui)
+ return self.repo
@property
def head(self):
try:
- return self._repo.head()
+ return self.repo.head()
except KeyError:
return None
@@ -212,7 +211,7 @@ class GitRepository(BaseRepository):
# fails if it is. And it's cheaper to ask than throw the subprocess
# errors
try:
- self._repo.head()
+ self.repo.head()
except KeyError:
return []
cmd = 'rev-list --all --reverse --date-order'
@@ -227,7 +226,7 @@ class GitRepository(BaseRepository):
#alternate implementation using dulwich
includes = [x[1][0] for x in self._parsed_refs.iteritems()
if x[1][1] != 'T']
- return [c.commit.id for c in self._repo.get_walker(include=includes)]
+ return [c.commit.id for c in self.repo.get_walker(include=includes)]
def _get_revision(self, revision):
"""
@@ -367,7 +366,7 @@ class GitRepository(BaseRepository):
changeset = self.get_changeset(revision)
message = message or "Added tag %s for commit %s" % (name,
changeset.raw_id)
- self._repo.refs["refs/tags/%s" % name] = changeset._commit.id
+ self.repo.refs["refs/tags/%s" % name] = changeset._commit.id
self._parsed_refs = self._get_parsed_refs()
self.tags = self._get_tags()
@@ -386,7 +385,7 @@ class GitRepository(BaseRepository):
"""
if name not in self.tags:
raise TagDoesNotExistError("Tag %s does not exist" % name)
- tagpath = posixpath.join(self._repo.refs.path, 'refs', 'tags', name)
+ tagpath = posixpath.join(self.repo.refs.path, 'refs', 'tags', name)
try:
os.remove(tagpath)
self._parsed_refs = self._get_parsed_refs()
@@ -399,7 +398,7 @@ class GitRepository(BaseRepository):
return self._get_parsed_refs()
def _get_parsed_refs(self):
- refs = self._repo.get_refs()
+ refs = self.repo.get_refs()
keys = [('refs/heads/', 'H'),
('refs/remotes/origin/', 'RH'),
('refs/tags/', 'T')]
@@ -409,15 +408,15 @@ class GitRepository(BaseRepository):
if ref.startswith(k):
_key = ref[len(k):]
if type_ == 'T':
- obj = self._repo.get_object(sha)
+ obj = self.repo.get_object(sha)
if isinstance(obj, Tag):
- sha = self._repo.get_object(sha).object[1]
+ sha = self.repo.get_object(sha).object[1]
_refs[_key] = [sha, type_]
break
return _refs
def _heads(self, reverse=False):
- refs = self._repo.get_refs()
+ refs = self.repo.get_refs()
heads = {}
for key, val in refs.items():