Merge "Fix shallow clone behavior"

This commit is contained in:
Dan Willemsen 2015-08-05 01:02:41 +00:00 committed by Gerrit Code Review
commit 2635c0e3b6

View File

@ -1877,6 +1877,13 @@ class Project(object):
if depth: if depth:
cmd.append('--depth=%s' % depth) cmd.append('--depth=%s' % depth)
else:
# If this repo has shallow objects, then we don't know which refs have
# shallow objects or not. Tell git to unshallow all fetched refs. Don't
# do this with projects that don't have shallow objects, since it is less
# efficient.
if os.path.exists(os.path.join(self.gitdir, 'shallow')):
cmd.append('--depth=2147483647')
if quiet: if quiet:
cmd.append('--quiet') cmd.append('--quiet')
@ -1914,16 +1921,6 @@ class Project(object):
spec.append(str((u'+%s:' % branch) + remote.ToLocal(branch))) spec.append(str((u'+%s:' % branch) + remote.ToLocal(branch)))
cmd.extend(spec) cmd.extend(spec)
shallowfetch = self.config.GetString('repo.shallowfetch')
if shallowfetch and shallowfetch != ' '.join(spec):
GitCommand(self, ['fetch', '--depth=2147483647', name]
+ shallowfetch.split(),
bare=True, ssh_proxy=ssh_proxy).Wait()
if depth:
self.config.SetString('repo.shallowfetch', ' '.join(spec))
else:
self.config.SetString('repo.shallowfetch', None)
ok = False ok = False
for _i in range(2): for _i in range(2):
gitcmd = GitCommand(self, cmd, bare=True, ssh_proxy=ssh_proxy) gitcmd = GitCommand(self, cmd, bare=True, ssh_proxy=ssh_proxy)