From 30d452905f166b316152f236422f85c8aa75a2d0 Mon Sep 17 00:00:00 2001 From: Doug Anderson Date: Wed, 4 May 2011 15:01:04 -0700 Subject: [PATCH] Add a --depth option to repo init. Change-Id: Id30fb4a85f4f8a1847420b0b51a86060041eb5bf --- project.py | 7 +++++++ subcmds/init.py | 24 ++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/project.py b/project.py index e5dbf25e..9d67dead 100644 --- a/project.py +++ b/project.py @@ -1370,6 +1370,13 @@ class Project(object): ref_dir = None cmd = ['fetch'] + + # The --depth option only affects the initial fetch; after that we'll do + # full fetches of changes. + depth = self.manifest.manifestProject.config.GetString('repo.depth') + if depth and initial: + cmd.append('--depth=%s' % depth) + if quiet: cmd.append('--quiet') if not self.worktree: diff --git a/subcmds/init.py b/subcmds/init.py index 37910843..c35cc82c 100644 --- a/subcmds/init.py +++ b/subcmds/init.py @@ -82,6 +82,9 @@ to update the working directory files. g.add_option('--reference', dest='reference', help='location of mirror directory', metavar='DIR') + g.add_option('--depth', type='int', default=None, + dest='depth', + help='create a shallow clone with given depth; see git clone') # Tool g = p.add_option_group('repo Version options') @@ -232,6 +235,25 @@ to update the working directory files. if a in ('y', 'yes', 't', 'true', 'on'): gc.SetString('color.ui', 'auto') + def _ConfigureDepth(self, opt): + """Configure the depth we'll sync down. + + Args: + opt: Options from optparse. We care about opt.depth. + """ + # Opt.depth will be non-None if user actually passed --depth to repo init. + if opt.depth is not None: + if opt.depth > 0: + # Positive values will set the depth. + depth = str(opt.depth) + else: + # Negative numbers will clear the depth; passing None to SetString + # will do that. + depth = None + + # We store the depth in the main manifest project. + self.manifest.manifestProject.config.SetString('repo.depth', depth) + def Execute(self, opt, args): git_require(MIN_GIT_VERSION, fail=True) self._SyncManifest(opt) @@ -241,6 +263,8 @@ to update the working directory files. self._ConfigureUser() self._ConfigureColor() + self._ConfigureDepth(opt) + if self.manifest.IsMirror: type = 'mirror ' else: