diff options
author | Ian Kasprzak <iankaz@google.com> | 2021-02-05 10:06:18 -0800 |
---|---|---|
committer | Ian Kasprzak <iankaz@google.com> | 2021-02-05 22:00:31 +0000 |
commit | 0286e31ec7fd76237b597846b394a681ba78bb0b (patch) | |
tree | aa2e3fb2d4ff9f001b497c32c60bd89dceabc800 /project.py | |
parent | ef267722f8025e547136a6b54dd97dc73b0b3dd2 (diff) | |
download | git-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.py | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -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 | |||
441 | class Project(object): | 442 | class 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. |