From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 85E02138A1A for ; Sun, 18 Jan 2015 16:33:38 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 031ECE0895; Sun, 18 Jan 2015 16:33:38 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 6F381E088C for ; Sun, 18 Jan 2015 16:33:37 +0000 (UTC) Received: from big_daddy.dol-sen.ca (S010634bdfa9ecf80.vc.shawcable.net [96.49.31.57]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: dolsen) by smtp.gentoo.org (Postfix) with ESMTPSA id B6B153406C8 for ; Sun, 18 Jan 2015 16:33:36 +0000 (UTC) Date: Sun, 18 Jan 2015 08:33:17 -0800 From: Brian Dolbec To: gentoo-portage-dev@lists.gentoo.org Subject: Re: [gentoo-portage-dev] [PATCH v2] sync: support sync-depth for DVCS-es (git --depth) Message-ID: <20150118083317.23ab8d0f.dolsen@gentoo.org> In-Reply-To: <1421577229-4661-1-git-send-email-mgorny@gentoo.org> References: <20150118014159.4b1104e8.dolsen@gentoo.org> <1421577229-4661-1-git-send-email-mgorny@gentoo.org> Organization: Gentoo Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-portage-dev@lists.gentoo.org Reply-to: gentoo-portage-dev@lists.gentoo.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Archives-Salt: 91605c50-4fb6-4ea9-8324-82e5c628d99f X-Archives-Hash: 50e2a371dececaab4e61cf72941551bd On Sun, 18 Jan 2015 11:33:49 +0100 Micha=C5=82 G=C3=B3rny wrote: > Support sync-depth with the default set to 1. This allows the user > to reduce the number of historical commits fetched along with the > repository (git --depth). > --- > man/portage.5 | 6 +++++- > pym/portage/repository/config.py | 6 +++++- > pym/portage/sync/modules/git/__init__.py | 28 > +++++++++++++++++++++++++++- pym/portage/sync/modules/git/git.py > | 6 +++++- 4 files changed, 42 insertions(+), 4 deletions(-) >=20 > diff --git a/man/portage.5 b/man/portage.5 > index f0b0e20..5d0e7c0 100644 > --- a/man/portage.5 > +++ b/man/portage.5 > @@ -1,4 +1,4 @@ > -.TH "PORTAGE" "5" "Jan 2015" "Portage VERSION" "Portage" > +TH "PORTAGE" "5" "Jan 2015" "Portage VERSION" "Portage" > .SH NAME > portage \- the heart of Gentoo > .SH "DESCRIPTION" > @@ -906,6 +906,10 @@ Specifies priority of given repository. > .B sync\-cvs\-repo > Specifies CVS repository. > .TP > +.B sync\-depth > +Specifies clone depth to use for DVCS repositories. Defaults to 1 > (only +the newest commit). If set to 0, the depth is unlimited. > +.TP > .B sync\-type > Specifies type of synchronization performed by `emerge \-\-sync`. > .br > diff --git a/pym/portage/repository/config.py > b/pym/portage/repository/config.py index 7e17e02..84fc2ff 100644 > --- a/pym/portage/repository/config.py > +++ b/pym/portage/repository/config.py > @@ -88,7 +88,8 @@ class RepoConfig(object): > 'profile_formats', 'sign_commit', 'sign_manifest', > 'sync_cvs_repo', 'sync_type', 'sync_umask', 'sync_uri', 'sync_user', > 'thin_manifest', 'update_changelog', 'user_location', '_eapis_banned', > - '_eapis_deprecated', '_masters_orig') > + '_eapis_deprecated', '_masters_orig', > + 'sync_depth') > =20 > def __init__(self, name, repo_opts, local_config=3DTrue): > """Build a RepoConfig with options in repo_opts > @@ -176,6 +177,8 @@ class RepoConfig(object): > auto_sync =3D auto_sync.strip().lower() > self.auto_sync =3D auto_sync > =20 > + self.sync_depth =3D repo_opts.get('sync-depth') > + Yeah, just move this to sorted order like Arfrever said. Otherwise it looks good, ready to merge. > # Not implemented. > format =3D repo_opts.get('format') > if format is not None: > @@ -489,6 +492,7 @@ class RepoConfigLoader(object): > for k in ('aliases', > 'auto_sync', 'eclass_overrides', 'force', 'masters', 'priority', > 'sync_cvs_repo', 'sync_type', 'sync_umask', 'sync_uri', 'sync_user', > + 'sync_depth', > ): > v =3D > getattr(repos_conf_opts, k, None) if v is not None: > diff --git a/pym/portage/sync/modules/git/__init__.py > b/pym/portage/sync/modules/git/__init__.py index 833b389..a372881 > 100644 --- a/pym/portage/sync/modules/git/__init__.py > +++ b/pym/portage/sync/modules/git/__init__.py > @@ -5,7 +5,33 @@ doc =3D """Git plug-in module for portage. > Performs a git pull on repositories.""" > __doc__ =3D doc[:] > =20 > +from portage.localization import _ > from portage.sync.config_checks import CheckSyncConfig > +from portage.util import writemsg_level > + > + > +class CheckGitConfig(CheckSyncConfig): > + def __init__(self, repo, logger): > + CheckSyncConfig.__init__(self, repo, logger) > + self.checks.append('check_depth') > + > + def check_depth(self): > + d =3D self.repo.sync_depth > + # default > + self.repo.sync_depth =3D 1 > + > + if d is not None: > + try: > + d =3D int(d) > + except ValueError: > + writemsg_level("!!! %s\n" % > + _("sync-depth value is not a > number: '%s'") > + % (d), > + level=3Dself.logger.ERROR, > noiselevel=3D-1) > + else: > + if d =3D=3D 0: > + d =3D None > + self.repo.sync_depth =3D d > =20 > =20 > module_spec =3D { > @@ -23,7 +49,7 @@ module_spec =3D { > 'exists': 'Returns a boolean of > whether the specified dir ' + 'exists and is a valid Git repository', > }, > - 'validate_config': CheckSyncConfig, > + 'validate_config': CheckGitConfig, > } > } > } > diff --git a/pym/portage/sync/modules/git/git.py > b/pym/portage/sync/modules/git/git.py index 35943dd..d4f2cc1 100644 > --- a/pym/portage/sync/modules/git/git.py > +++ b/pym/portage/sync/modules/git/git.py > @@ -63,9 +63,13 @@ class GitSync(SyncBase): > sync_uri =3D self.repo.sync_uri > if sync_uri.startswith("file://"): > sync_uri =3D sync_uri[6:] > - exitcode =3D portage.process.spawn_bash("cd %s ; %s > clone %s ." % \ > + depth_arg =3D '' > + if self.repo.sync_depth is not None: > + depth_arg =3D '--depth %d ' % > self.repo.sync_depth > + exitcode =3D portage.process.spawn_bash("cd %s ; %s > clone %s%s ." % \ (portage._shell_quote(self.repo.location), > self.bin_command, > + depth_arg, > portage._shell_quote(sync_uri)), > **portage._native_kwargs(self.spawn_kwargs)) > if exitcode !=3D os.EX_OK: --=20 Brian Dolbec