public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/portage:master commit in: lib/portage/sync/modules/git/, lib/portage/tests/sync/
@ 2018-11-24 21:34 Zac Medico
  0 siblings, 0 replies; only message in thread
From: Zac Medico @ 2018-11-24 21:34 UTC (permalink / raw
  To: gentoo-commits

commit:     0490cfa00afcf1347e4e72528b20c93648d6871c
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 23 09:00:25 2018 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Fri Nov 23 23:55:24 2018 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=0490cfa0

git: drop privileges for gc and merge (bug 669496)

Use portage.process.spawn (with new cwd parameter) and self.spawn_kwargs
to drop privileges for git gc and merge commands.

Fixes: 3cd8cf93abb6 ("GitSync: abort checkout for signature problem (bug 660372)")
Fixes: 903c4b1a6768 ("GitSync: support sync-depth (bug 552814)")
Bug: https://bugs.gentoo.org/669496
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 lib/portage/sync/modules/git/git.py       | 10 ++++++----
 lib/portage/tests/sync/test_sync_local.py | 22 ++++++++++++++++++++--
 2 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/lib/portage/sync/modules/git/git.py b/lib/portage/sync/modules/git/git.py
index e41af313e..7df4b6d61 100644
--- a/lib/portage/sync/modules/git/git.py
+++ b/lib/portage/sync/modules/git/git.py
@@ -147,8 +147,9 @@ class GitSync(NewBase):
 			gc_cmd = ['git', '-c', 'gc.autodetach=false', 'gc', '--auto']
 			if quiet:
 				gc_cmd.append('--quiet')
-			exitcode = subprocess.call(gc_cmd,
-				cwd=portage._unicode_encode(self.repo.location))
+			exitcode = portage.process.spawn(gc_cmd,
+				cwd=portage._unicode_encode(self.repo.location),
+				**self.spawn_kwargs)
 			if exitcode != os.EX_OK:
 				msg = "!!! git gc error in %s" % self.repo.location
 				self.logger(self.xterm_titles, msg)
@@ -186,8 +187,9 @@ class GitSync(NewBase):
 		merge_cmd.append('refs/remotes/%s' % remote_branch)
 		if quiet:
 			merge_cmd.append('--quiet')
-		exitcode = subprocess.call(merge_cmd,
-			cwd=portage._unicode_encode(self.repo.location))
+		exitcode = portage.process.spawn(merge_cmd,
+			cwd=portage._unicode_encode(self.repo.location),
+			**self.spawn_kwargs)
 
 		if exitcode != os.EX_OK:
 			msg = "!!! git merge error in %s" % self.repo.location

diff --git a/lib/portage/tests/sync/test_sync_local.py b/lib/portage/tests/sync/test_sync_local.py
index 49c7a992d..5fb8afb7c 100644
--- a/lib/portage/tests/sync/test_sync_local.py
+++ b/lib/portage/tests/sync/test_sync_local.py
@@ -42,6 +42,7 @@ class SyncLocalTestCase(TestCase):
 			[test_repo]
 			location = %(EPREFIX)s/var/repositories/test_repo
 			sync-type = %(sync-type)s
+			sync-depth = %(sync-depth)s
 			sync-uri = file://%(EPREFIX)s/var/repositories/test_repo_sync
 			sync-rcu = %(sync-rcu)s
 			sync-rcu-store-dir = %(EPREFIX)s/var/repositories/test_repo_rcu_storedir
@@ -91,9 +92,10 @@ class SyncLocalTestCase(TestCase):
 		committer_email = "gentoo-dev@gentoo.org"
 
 		def repos_set_conf(sync_type, dflt_keys=None, xtra_keys=None,
-			auto_sync="yes", sync_rcu=False):
+			auto_sync="yes", sync_rcu=False, sync_depth=None):
 			env["PORTAGE_REPOSITORIES"] = repos_conf % {\
 				"EPREFIX": eprefix, "sync-type": sync_type,
+				"sync-depth": 0 if sync_depth is None else sync_depth,
 				"sync-rcu": "yes" if sync_rcu else "no",
 				"auto-sync": auto_sync,
 				"default_keys": "" if dflt_keys is None else dflt_keys,
@@ -197,6 +199,17 @@ class SyncLocalTestCase(TestCase):
 			(homedir, lambda: shutil.rmtree(repo.user_location + '_rcu_storedir')),
 		)
 
+		upstream_git_commit = (
+			(
+				repo.location + "_sync",
+				git_cmd + ('commit', '--allow-empty', '-m', 'test empty commit'),
+			),
+			(
+				repo.location + "_sync",
+				git_cmd + ('commit', '--allow-empty', '-m', 'test empty commit 2'),
+			),
+		)
+
 		delete_sync_repo = (
 			(homedir, lambda: shutil.rmtree(
 				repo.location + "_sync")),
@@ -217,6 +230,10 @@ class SyncLocalTestCase(TestCase):
 			(homedir, lambda: repos_set_conf("git")),
 		)
 
+		sync_type_git_shallow = (
+			(homedir, lambda: repos_set_conf("git", sync_depth=1)),
+		)
+
 		sync_rsync_rcu = (
 			(homedir, lambda: repos_set_conf("rsync", sync_rcu=True)),
 		)
@@ -277,7 +294,8 @@ class SyncLocalTestCase(TestCase):
 				delete_repo_location + sync_cmds + sync_cmds + \
 				bump_timestamp_cmds + sync_cmds + revert_rcu_layout + \
 				delete_sync_repo + git_repo_create + sync_type_git + \
-				rename_repo + sync_cmds:
+				rename_repo + sync_cmds + upstream_git_commit + sync_cmds + \
+				sync_type_git_shallow + upstream_git_commit + sync_cmds:
 
 				if hasattr(cmd, '__call__'):
 					cmd()


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2018-11-24 21:34 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-24 21:34 [gentoo-commits] proj/portage:master commit in: lib/portage/sync/modules/git/, lib/portage/tests/sync/ Zac Medico

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox