Merge "Fix shallow clone behavior"
diff --git a/project.py b/project.py
index 9cb7542..a117f4d 100644
--- a/project.py
+++ b/project.py
@@ -1877,6 +1877,13 @@
if 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:
cmd.append('--quiet')
@@ -1914,16 +1921,6 @@
spec.append(str((u'+%s:' % branch) + remote.ToLocal(branch)))
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
for _i in range(2):
gitcmd = GitCommand(self, cmd, bare=True, ssh_proxy=ssh_proxy)