summaryrefslogtreecommitdiffstats
path: root/project.py
diff options
context:
space:
mode:
authorIan Kasprzak <iankaz@google.com>2021-02-05 10:06:18 -0800
committerIan Kasprzak <iankaz@google.com>2021-02-05 22:00:31 +0000
commit0286e31ec7fd76237b597846b394a681ba78bb0b (patch)
treeaa2e3fb2d4ff9f001b497c32c60bd89dceabc800 /project.py
parentef267722f8025e547136a6b54dd97dc73b0b3dd2 (diff)
downloadgit-repo-0286e31ec7fd76237b597846b394a681ba78bb0b.tar.gz
Update _CheckForImmutableRevision to use git rev-list
_CheckForImmutableRevision is used to see if repo can skip fetching a project, but 'git rev-parse' with partial clone does a data fetch to accomplish this. Changed to use: 'git rev-list -1 --missing=allow-any <SHA>^0' which checks the local ref without fetching from the server first. Bug: [google internal] b/179477822 Testing: - Unit tests - Verified init/sync working on aosp-master - Verified wwith a pinned manifest that local ref check works (no fetch) Change-Id: If327b893c6658421f41df1f58c337f53b4c60ce6 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/296142 Reviewed-by: Dan Willemsen <dwillemsen@google.com> Tested-by: Ian Kasprzak <iankaz@google.com>
Diffstat (limited to 'project.py')
-rw-r--r--project.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/project.py b/project.py
index 17c75b4d..9c7d9ec1 100644
--- a/project.py
+++ b/project.py
@@ -438,6 +438,7 @@ class RemoteSpec(object):
438 self.orig_name = orig_name 438 self.orig_name = orig_name
439 self.fetchUrl = fetchUrl 439 self.fetchUrl = fetchUrl
440 440
441
441class Project(object): 442class Project(object):
442 # These objects can be shared between several working trees. 443 # These objects can be shared between several working trees.
443 shareable_files = ['description', 'info'] 444 shareable_files = ['description', 'info']
@@ -1927,7 +1928,8 @@ class Project(object):
1927 try: 1928 try:
1928 # if revision (sha or tag) is not present then following function 1929 # if revision (sha or tag) is not present then following function
1929 # throws an error. 1930 # throws an error.
1930 self.bare_git.rev_parse('--verify', '%s^0' % self.revisionExpr) 1931 self.bare_git.rev_list('-1', '--missing=allow-any',
1932 '%s^0' % self.revisionExpr, '--')
1931 return True 1933 return True
1932 except GitError: 1934 except GitError:
1933 # There is no such persistent revision. We have to fetch it. 1935 # There is no such persistent revision. We have to fetch it.