public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Brian Dolbec" <dolsen@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage:repoman commit in: pym/repoman/modules/vcs/, pym/repoman/modules/vcs/hg/, ...
Date: Fri, 11 Mar 2016 00:41:06 +0000 (UTC)	[thread overview]
Message-ID: <1457656616.c5b4ca46dd29bb8a402230fbc39156a50892fa5d.dolsen@gentoo> (raw)

commit:     c5b4ca46dd29bb8a402230fbc39156a50892fa5d
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Feb 16 20:06:30 2016 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Fri Mar 11 00:36:56 2016 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=c5b4ca46

repoman: Migrate the commit code to the vcs modules

 pym/repoman/actions.py                  | 84 +++++++++------------------------
 pym/repoman/modules/vcs/None/changes.py | 13 +++++
 pym/repoman/modules/vcs/bzr/changes.py  |  1 -
 pym/repoman/modules/vcs/changes.py      | 20 ++++++++
 pym/repoman/modules/vcs/cvs/changes.py  |  1 -
 pym/repoman/modules/vcs/git/changes.py  | 10 ++++
 pym/repoman/modules/vcs/hg/changes.py   | 16 +++++++
 7 files changed, 82 insertions(+), 63 deletions(-)

diff --git a/pym/repoman/actions.py b/pym/repoman/actions.py
index 4032e04..c0cd5cc 100644
--- a/pym/repoman/actions.py
+++ b/pym/repoman/actions.py
@@ -7,21 +7,19 @@ import io
 import logging
 import platform
 import signal
-import subprocess
 import sys
 import tempfile
 from itertools import chain
 
 from _emerge.UserQuery import UserQuery
 
-import portage
+from repoman._portage import portage
 from portage import os
 from portage import _encodings
 from portage import _unicode_encode
 from portage.output import (
 	bold, create_color_func, green, red)
 from portage.package.ebuild.digestgen import digestgen
-from portage.process import find_binary, spawn
 from portage.util import writemsg_level
 
 from repoman.gpg import gpgsign, need_signature
@@ -443,43 +441,18 @@ class Actions(object):
 		mymsg.write(_unicode_encode(commitmessage))
 		mymsg.close()
 
-		commit_cmd = []
-		if self.options.pretend and self.vcs_settings.vcs is None:
-			# substitute a bogus value for pretend output
-			commit_cmd.append("cvs")
-		else:
-			commit_cmd.append(self.vcs_settings.vcs)
-		commit_cmd.extend(self.vcs_settings.vcs_global_opts)
-		commit_cmd.append("commit")
-		commit_cmd.extend(self.vcs_settings.vcs_local_opts)
-		if self.vcs_settings.vcs == "hg":
-			commit_cmd.extend(["--logfile", commitmessagefile])
-			commit_cmd.extend(myfiles)
-		else:
-			commit_cmd.extend(["-F", commitmessagefile])
-			commit_cmd.extend(f.lstrip("./") for f in myfiles)
-
+		retval = self.vcs_settings.changes.commit(myfiles, commitmessagefile)
+		# cleanup the commit message before possibly exiting
 		try:
-			if self.options.pretend:
-				print("(%s)" % (" ".join(commit_cmd),))
-			else:
-				retval = spawn(commit_cmd, env=self.repo_settings.commit_env)
-				if retval != os.EX_OK:
-					if self.repo_settings.repo_config.sign_commit and not self.vcs_settings.status.supports_gpg_sign():
-						# Inform user that newer git is needed (bug #403323).
-						logging.error(
-							"Git >=1.7.9 is required for signed commits!")
-
-					writemsg_level(
-						"!!! Exiting on %s (shell) "
-						"error code: %s\n" % (self.vcs_settings.vcs, retval),
-						level=logging.ERROR, noiselevel=-1)
-					sys.exit(retval)
-		finally:
-			try:
-				os.unlink(commitmessagefile)
-			except OSError:
-				pass
+			os.unlink(commitmessagefile)
+		except OSError:
+			pass
+		if retval != os.EX_OK:
+			writemsg_level(
+				"!!! Exiting on %s (shell) "
+				"error code: %s\n" % (self.vcs_settings.vcs, retval),
+				level=logging.ERROR, noiselevel=-1)
+			sys.exit(retval)
 
 
 	def priming_commit(self, myupdates, myremoved, commitmessage):
@@ -503,29 +476,18 @@ class Actions(object):
 		# so strip the prefix.
 		myfiles = [f.lstrip("./") for f in myfiles]
 
-		commit_cmd = [self.vcs_settings.vcs]
-		commit_cmd.extend(self.vcs_settings.vcs_global_opts)
-		commit_cmd.append("commit")
-		commit_cmd.extend(self.vcs_settings.vcs_local_opts)
-		commit_cmd.extend(["-F", commitmessagefile])
-		commit_cmd.extend(myfiles)
-
+		retval = self.vcs_settings.changes.commit(myfiles, commitmessagefile)
+		# cleanup the commit message before possibly exiting
 		try:
-			if self.options.pretend:
-				print("(%s)" % (" ".join(commit_cmd),))
-			else:
-				retval = spawn(commit_cmd, env=self.repo_settings.commit_env)
-				if retval != os.EX_OK:
-					writemsg_level(
-						"!!! Exiting on %s (shell) "
-						"error code: %s\n" % (self.vcs_settings.vcs, retval),
-						level=logging.ERROR, noiselevel=-1)
-					sys.exit(retval)
-		finally:
-			try:
-				os.unlink(commitmessagefile)
-			except OSError:
-				pass
+			os.unlink(commitmessagefile)
+		except OSError:
+			pass
+		if retval != os.EX_OK:
+			writemsg_level(
+				"!!! Exiting on %s (shell) "
+				"error code: %s\n" % (self.vcs_settings.vcs, retval),
+				level=logging.ERROR, noiselevel=-1)
+			sys.exit(retval)
 
 
 	def sign_manifest(self, myupdates, myremoved, mymanifests):

diff --git a/pym/repoman/modules/vcs/None/changes.py b/pym/repoman/modules/vcs/None/changes.py
index 98beedb..7f46177 100644
--- a/pym/repoman/modules/vcs/None/changes.py
+++ b/pym/repoman/modules/vcs/None/changes.py
@@ -26,3 +26,16 @@ class Changes(ChangesBase):
 	def add_items(self, myautoadd):
 		'''Nothing to add them to'''
 		pass
+
+	def commit(self, myfiles, commitmessagefile):
+		commit_cmd = []
+		# substitute a bogus vcs value for pretend output
+		commit_cmd.append("pretend")
+		commit_cmd.extend(self.vcs_settings.vcs_global_opts)
+		commit_cmd.append("commit")
+		commit_cmd.extend(self.vcs_settings.vcs_local_opts)
+		commit_cmd.extend(["-F", commitmessagefile])
+		commit_cmd.extend(f.lstrip("./") for f in myfiles)
+
+		print("(%s)" % (" ".join(commit_cmd),))
+		return 0

diff --git a/pym/repoman/modules/vcs/bzr/changes.py b/pym/repoman/modules/vcs/bzr/changes.py
index 81e7cf5..e5e61ff 100644
--- a/pym/repoman/modules/vcs/bzr/changes.py
+++ b/pym/repoman/modules/vcs/bzr/changes.py
@@ -57,4 +57,3 @@ class Changes(ChangesBase):
 			for x in broken_changelog_manifests:
 				self.repoman_settings["O"] = os.path.join(self.repo_settings.repodir, x)
 				digestgen(mysettings=self.repoman_settings, myportdb=self.repo_settings.portdb)
-

diff --git a/pym/repoman/modules/vcs/changes.py b/pym/repoman/modules/vcs/changes.py
index ee94217..f322cb1 100644
--- a/pym/repoman/modules/vcs/changes.py
+++ b/pym/repoman/modules/vcs/changes.py
@@ -10,6 +10,8 @@ from itertools import chain
 
 from repoman._portage import portage
 from portage import _unicode_encode
+from portage.process import spawn
+
 
 class ChangesBase(object):
 	'''Base Class object to scan and hold the resultant data
@@ -22,6 +24,7 @@ class ChangesBase(object):
 		self.options = options
 		self.repo_settings = repo_settings
 		self.repoman_settings = repo_settings.repoman_settings
+		self.vcs_settings = repo_settings.vcs_settings
 		self._reset()
 
 	def _reset(self):
@@ -109,3 +112,20 @@ class ChangesBase(object):
 					logging.error(
 						"Exiting on %s error code: %s\n" % (self.vcs_settings.vcs, retcode))
 					sys.exit(retcode)
+
+
+	def commit(self, myfiles, commitmessagefile):
+		'''Common generic commit function'''
+		commit_cmd = []
+		commit_cmd.append(self.vcs)
+		commit_cmd.extend(self.vcs_settings.vcs_global_opts)
+		commit_cmd.append("commit")
+		commit_cmd.extend(self.vcs_settings.vcs_local_opts)
+		commit_cmd.extend(["-F", commitmessagefile])
+		commit_cmd.extend(f.lstrip("./") for f in myfiles)
+
+		if self.options.pretend:
+			print("(%s)" % (" ".join(commit_cmd),))
+		else:
+			retval = spawn(commit_cmd, env=self.repo_settings.commit_env)
+		return retval

diff --git a/pym/repoman/modules/vcs/cvs/changes.py b/pym/repoman/modules/vcs/cvs/changes.py
index 794e850..f5c622b 100644
--- a/pym/repoman/modules/vcs/cvs/changes.py
+++ b/pym/repoman/modules/vcs/cvs/changes.py
@@ -89,4 +89,3 @@ class Changes(ChangesBase):
 				scanner.repolevel, scanner.reposplit, scanner.categories)):
 				self.repoman_settings["O"] = os.path.join(self.repo_settings.repodir, x)
 				digestgen(mysettings=self.repoman_settings, myportdb=self.repo_settings.portdb)
-

diff --git a/pym/repoman/modules/vcs/git/changes.py b/pym/repoman/modules/vcs/git/changes.py
index 018458c..a0b836e 100644
--- a/pym/repoman/modules/vcs/git/changes.py
+++ b/pym/repoman/modules/vcs/git/changes.py
@@ -90,3 +90,13 @@ class Changes(ChangesBase):
 					"error code: %s\n" % (self.vcs_settings.vcs, retval),
 					level=logging.ERROR, noiselevel=-1)
 				sys.exit(retval)
+
+	def commit(self, myfiles, commitmessagefile):
+		'''Git commit the changes'''
+		retval = super(Changes, self).commit(myfiles, commitmessagefile)
+		if retval != os.EX_OK:
+			if self.repo_settings.repo_config.sign_commit and not self.vcs_settings.status.supports_gpg_sign():
+				# Inform user that newer git is needed (bug #403323).
+				logging.error(
+					"Git >=1.7.9 is required for signed commits!")
+		return retval

diff --git a/pym/repoman/modules/vcs/hg/changes.py b/pym/repoman/modules/vcs/hg/changes.py
index 2667829..522981e 100644
--- a/pym/repoman/modules/vcs/hg/changes.py
+++ b/pym/repoman/modules/vcs/hg/changes.py
@@ -71,3 +71,19 @@ class Changes(ChangesBase):
 			for x in broken_changelog_manifests:
 				self.repoman_settings["O"] = os.path.join(self.repo_settings.repodir, x)
 				digestgen(mysettings=self.repoman_settings, myportdb=self.repo_settings.portdb)
+
+	def commit(self, myfiles, commitmessagefile):
+		'''Hg commit the changes'''
+		commit_cmd = []
+		commit_cmd.append(self.vcs)
+		commit_cmd.extend(self.vcs_settings.vcs_global_opts)
+		commit_cmd.append("commit")
+		commit_cmd.extend(self.vcs_settings.vcs_local_opts)
+		commit_cmd.extend(["--logfile", commitmessagefile])
+		commit_cmd.extend(myfiles)
+
+		if self.options.pretend:
+			print("(%s)" % (" ".join(commit_cmd),))
+		else:
+			retval = spawn(commit_cmd, env=self.repo_settings.commit_env)
+		return retval


             reply	other threads:[~2016-03-11  0:41 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-11  0:41 Brian Dolbec [this message]
  -- strict thread matches above, loose matches on Subject: below --
2016-04-21 16:54 [gentoo-commits] proj/portage:repoman commit in: pym/repoman/modules/vcs/, pym/repoman/modules/vcs/hg/, Brian Dolbec
2016-02-07 18:55 Brian Dolbec

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1457656616.c5b4ca46dd29bb8a402230fbc39156a50892fa5d.dolsen@gentoo \
    --to=dolsen@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox