Kevin Degi 679bac4bf3 project.RemoteFetch: Handle depth cases more robustly
The fetch logic for the case where depth is set and revision is a
SHA1 has several failure modes that are not handled well by the
current logic.

1) 'git fetch <SHA1>' requires git version >= 1.8.3
2) 'git fetch <SHA1>' can be prevented by a configuration option on the server.
3) 'git fetch --depth=<N> <refspec>' can fail to contain a SHA1 specified by
   the manifest.

Each of these cases cause infinite recursion when _RemoteFetch() tries to call
itself with current_branch_only=False because current_branch_only is set to
True when depth != None.

To try to prevent the infinite recursion, we set self.clone_depth to None
before the first retry of _RemoteFetch(). This will allow the Fetch to
eventually succeed in the case where clone-depth is specified in the manifest.
A user specified depth from the init command will still recurse infinitely.

In addition, never try to fetch a SHA1 directly if the git version being used
is not at least 1.8.3.

Change-Id: I802fc17878c0929cfd63fff611633c1d3b54ecd3
2015-07-15 15:53:14 +00:00
2012-11-14 11:38:57 +09:00
2013-03-08 01:18:08 +00:00
2015-03-28 21:12:27 +00:00
2008-10-21 07:00:00 -07:00
2015-06-04 00:21:16 +00:00
2015-06-04 00:22:23 +00:00
2013-11-21 06:03:22 +00:00
2014-12-30 18:50:05 -05:00
2011-09-19 14:52:57 -07:00
2014-01-30 15:17:09 -08:00
Description
No description provided
Apache-2.0 36 MiB
Languages
Python 98.9%
Shell 1%
Roff 0.1%