diff options
author | Milo Casagrande <milo@ubuntu.com> | 2013-04-05 12:13:45 +0200 |
---|---|---|
committer | Milo Casagrande <milo@ubuntu.com> | 2013-04-05 12:13:45 +0200 |
commit | 77b7846bb08ca359a91ed6f05dbaa748739ce3d7 (patch) | |
tree | cc3d066f1c4b6e191223db3cf691106e72772863 | |
parent | f10be2e07cb59c01eca14e0508521737f04358a1 (diff) |
Use instance variable instead, and do not re-create Repo object.
-rw-r--r-- | rhodecode/lib/vcs/backends/git/repository.py | 27 |
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(): |