Gentoo Archives: gentoo-commits

From: Brian Dolbec <dolsen@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:repoman commit in: pym/repoman/, pym/repoman/modules/vcs/bzr/, pym/repoman/modules/vcs/None/, ...
Date: Mon, 25 Apr 2016 15:32:36
Message-Id: 1461598133.82c1160302e4d66e2ea6cf0afbacc2585e5ad965.dolsen@gentoo
1 commit: 82c1160302e4d66e2ea6cf0afbacc2585e5ad965
2 Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
3 AuthorDate: Tue Feb 16 20:06:30 2016 +0000
4 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
5 CommitDate: Mon Apr 25 15:28:53 2016 +0000
6 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=82c11603
7
8 repoman: Migrate the commit code to the vcs modules
9
10 pym/repoman/actions.py | 84 +++++++++------------------------
11 pym/repoman/modules/vcs/None/changes.py | 13 +++++
12 pym/repoman/modules/vcs/bzr/changes.py | 1 -
13 pym/repoman/modules/vcs/changes.py | 20 ++++++++
14 pym/repoman/modules/vcs/cvs/changes.py | 1 -
15 pym/repoman/modules/vcs/git/changes.py | 10 ++++
16 pym/repoman/modules/vcs/hg/changes.py | 17 +++++++
17 7 files changed, 83 insertions(+), 63 deletions(-)
18
19 diff --git a/pym/repoman/actions.py b/pym/repoman/actions.py
20 index 4032e04..c0cd5cc 100644
21 --- a/pym/repoman/actions.py
22 +++ b/pym/repoman/actions.py
23 @@ -7,21 +7,19 @@ import io
24 import logging
25 import platform
26 import signal
27 -import subprocess
28 import sys
29 import tempfile
30 from itertools import chain
31
32 from _emerge.UserQuery import UserQuery
33
34 -import portage
35 +from repoman._portage import portage
36 from portage import os
37 from portage import _encodings
38 from portage import _unicode_encode
39 from portage.output import (
40 bold, create_color_func, green, red)
41 from portage.package.ebuild.digestgen import digestgen
42 -from portage.process import find_binary, spawn
43 from portage.util import writemsg_level
44
45 from repoman.gpg import gpgsign, need_signature
46 @@ -443,43 +441,18 @@ class Actions(object):
47 mymsg.write(_unicode_encode(commitmessage))
48 mymsg.close()
49
50 - commit_cmd = []
51 - if self.options.pretend and self.vcs_settings.vcs is None:
52 - # substitute a bogus value for pretend output
53 - commit_cmd.append("cvs")
54 - else:
55 - commit_cmd.append(self.vcs_settings.vcs)
56 - commit_cmd.extend(self.vcs_settings.vcs_global_opts)
57 - commit_cmd.append("commit")
58 - commit_cmd.extend(self.vcs_settings.vcs_local_opts)
59 - if self.vcs_settings.vcs == "hg":
60 - commit_cmd.extend(["--logfile", commitmessagefile])
61 - commit_cmd.extend(myfiles)
62 - else:
63 - commit_cmd.extend(["-F", commitmessagefile])
64 - commit_cmd.extend(f.lstrip("./") for f in myfiles)
65 -
66 + retval = self.vcs_settings.changes.commit(myfiles, commitmessagefile)
67 + # cleanup the commit message before possibly exiting
68 try:
69 - if self.options.pretend:
70 - print("(%s)" % (" ".join(commit_cmd),))
71 - else:
72 - retval = spawn(commit_cmd, env=self.repo_settings.commit_env)
73 - if retval != os.EX_OK:
74 - if self.repo_settings.repo_config.sign_commit and not self.vcs_settings.status.supports_gpg_sign():
75 - # Inform user that newer git is needed (bug #403323).
76 - logging.error(
77 - "Git >=1.7.9 is required for signed commits!")
78 -
79 - writemsg_level(
80 - "!!! Exiting on %s (shell) "
81 - "error code: %s\n" % (self.vcs_settings.vcs, retval),
82 - level=logging.ERROR, noiselevel=-1)
83 - sys.exit(retval)
84 - finally:
85 - try:
86 - os.unlink(commitmessagefile)
87 - except OSError:
88 - pass
89 + os.unlink(commitmessagefile)
90 + except OSError:
91 + pass
92 + if retval != os.EX_OK:
93 + writemsg_level(
94 + "!!! Exiting on %s (shell) "
95 + "error code: %s\n" % (self.vcs_settings.vcs, retval),
96 + level=logging.ERROR, noiselevel=-1)
97 + sys.exit(retval)
98
99
100 def priming_commit(self, myupdates, myremoved, commitmessage):
101 @@ -503,29 +476,18 @@ class Actions(object):
102 # so strip the prefix.
103 myfiles = [f.lstrip("./") for f in myfiles]
104
105 - commit_cmd = [self.vcs_settings.vcs]
106 - commit_cmd.extend(self.vcs_settings.vcs_global_opts)
107 - commit_cmd.append("commit")
108 - commit_cmd.extend(self.vcs_settings.vcs_local_opts)
109 - commit_cmd.extend(["-F", commitmessagefile])
110 - commit_cmd.extend(myfiles)
111 -
112 + retval = self.vcs_settings.changes.commit(myfiles, commitmessagefile)
113 + # cleanup the commit message before possibly exiting
114 try:
115 - if self.options.pretend:
116 - print("(%s)" % (" ".join(commit_cmd),))
117 - else:
118 - retval = spawn(commit_cmd, env=self.repo_settings.commit_env)
119 - if retval != os.EX_OK:
120 - writemsg_level(
121 - "!!! Exiting on %s (shell) "
122 - "error code: %s\n" % (self.vcs_settings.vcs, retval),
123 - level=logging.ERROR, noiselevel=-1)
124 - sys.exit(retval)
125 - finally:
126 - try:
127 - os.unlink(commitmessagefile)
128 - except OSError:
129 - pass
130 + os.unlink(commitmessagefile)
131 + except OSError:
132 + pass
133 + if retval != os.EX_OK:
134 + writemsg_level(
135 + "!!! Exiting on %s (shell) "
136 + "error code: %s\n" % (self.vcs_settings.vcs, retval),
137 + level=logging.ERROR, noiselevel=-1)
138 + sys.exit(retval)
139
140
141 def sign_manifest(self, myupdates, myremoved, mymanifests):
142
143 diff --git a/pym/repoman/modules/vcs/None/changes.py b/pym/repoman/modules/vcs/None/changes.py
144 index 98beedb..7f46177 100644
145 --- a/pym/repoman/modules/vcs/None/changes.py
146 +++ b/pym/repoman/modules/vcs/None/changes.py
147 @@ -26,3 +26,16 @@ class Changes(ChangesBase):
148 def add_items(self, myautoadd):
149 '''Nothing to add them to'''
150 pass
151 +
152 + def commit(self, myfiles, commitmessagefile):
153 + commit_cmd = []
154 + # substitute a bogus vcs value for pretend output
155 + commit_cmd.append("pretend")
156 + commit_cmd.extend(self.vcs_settings.vcs_global_opts)
157 + commit_cmd.append("commit")
158 + commit_cmd.extend(self.vcs_settings.vcs_local_opts)
159 + commit_cmd.extend(["-F", commitmessagefile])
160 + commit_cmd.extend(f.lstrip("./") for f in myfiles)
161 +
162 + print("(%s)" % (" ".join(commit_cmd),))
163 + return 0
164
165 diff --git a/pym/repoman/modules/vcs/bzr/changes.py b/pym/repoman/modules/vcs/bzr/changes.py
166 index 81e7cf5..e5e61ff 100644
167 --- a/pym/repoman/modules/vcs/bzr/changes.py
168 +++ b/pym/repoman/modules/vcs/bzr/changes.py
169 @@ -57,4 +57,3 @@ class Changes(ChangesBase):
170 for x in broken_changelog_manifests:
171 self.repoman_settings["O"] = os.path.join(self.repo_settings.repodir, x)
172 digestgen(mysettings=self.repoman_settings, myportdb=self.repo_settings.portdb)
173 -
174
175 diff --git a/pym/repoman/modules/vcs/changes.py b/pym/repoman/modules/vcs/changes.py
176 index ee94217..f322cb1 100644
177 --- a/pym/repoman/modules/vcs/changes.py
178 +++ b/pym/repoman/modules/vcs/changes.py
179 @@ -10,6 +10,8 @@ from itertools import chain
180
181 from repoman._portage import portage
182 from portage import _unicode_encode
183 +from portage.process import spawn
184 +
185
186 class ChangesBase(object):
187 '''Base Class object to scan and hold the resultant data
188 @@ -22,6 +24,7 @@ class ChangesBase(object):
189 self.options = options
190 self.repo_settings = repo_settings
191 self.repoman_settings = repo_settings.repoman_settings
192 + self.vcs_settings = repo_settings.vcs_settings
193 self._reset()
194
195 def _reset(self):
196 @@ -109,3 +112,20 @@ class ChangesBase(object):
197 logging.error(
198 "Exiting on %s error code: %s\n" % (self.vcs_settings.vcs, retcode))
199 sys.exit(retcode)
200 +
201 +
202 + def commit(self, myfiles, commitmessagefile):
203 + '''Common generic commit function'''
204 + commit_cmd = []
205 + commit_cmd.append(self.vcs)
206 + commit_cmd.extend(self.vcs_settings.vcs_global_opts)
207 + commit_cmd.append("commit")
208 + commit_cmd.extend(self.vcs_settings.vcs_local_opts)
209 + commit_cmd.extend(["-F", commitmessagefile])
210 + commit_cmd.extend(f.lstrip("./") for f in myfiles)
211 +
212 + if self.options.pretend:
213 + print("(%s)" % (" ".join(commit_cmd),))
214 + else:
215 + retval = spawn(commit_cmd, env=self.repo_settings.commit_env)
216 + return retval
217
218 diff --git a/pym/repoman/modules/vcs/cvs/changes.py b/pym/repoman/modules/vcs/cvs/changes.py
219 index 794e850..f5c622b 100644
220 --- a/pym/repoman/modules/vcs/cvs/changes.py
221 +++ b/pym/repoman/modules/vcs/cvs/changes.py
222 @@ -89,4 +89,3 @@ class Changes(ChangesBase):
223 scanner.repolevel, scanner.reposplit, scanner.categories)):
224 self.repoman_settings["O"] = os.path.join(self.repo_settings.repodir, x)
225 digestgen(mysettings=self.repoman_settings, myportdb=self.repo_settings.portdb)
226 -
227
228 diff --git a/pym/repoman/modules/vcs/git/changes.py b/pym/repoman/modules/vcs/git/changes.py
229 index 018458c..a0b836e 100644
230 --- a/pym/repoman/modules/vcs/git/changes.py
231 +++ b/pym/repoman/modules/vcs/git/changes.py
232 @@ -90,3 +90,13 @@ class Changes(ChangesBase):
233 "error code: %s\n" % (self.vcs_settings.vcs, retval),
234 level=logging.ERROR, noiselevel=-1)
235 sys.exit(retval)
236 +
237 + def commit(self, myfiles, commitmessagefile):
238 + '''Git commit the changes'''
239 + retval = super(Changes, self).commit(myfiles, commitmessagefile)
240 + if retval != os.EX_OK:
241 + if self.repo_settings.repo_config.sign_commit and not self.vcs_settings.status.supports_gpg_sign():
242 + # Inform user that newer git is needed (bug #403323).
243 + logging.error(
244 + "Git >=1.7.9 is required for signed commits!")
245 + return retval
246
247 diff --git a/pym/repoman/modules/vcs/hg/changes.py b/pym/repoman/modules/vcs/hg/changes.py
248 index 2667829..c8b0c5f 100644
249 --- a/pym/repoman/modules/vcs/hg/changes.py
250 +++ b/pym/repoman/modules/vcs/hg/changes.py
251 @@ -7,6 +7,7 @@ from repoman._subprocess import repoman_popen
252 from repoman._portage import portage
253 from portage import os
254 from portage.package.ebuild.digestgen import digestgen
255 +from portage.process import spawn
256
257
258 class Changes(ChangesBase):
259 @@ -71,3 +72,19 @@ class Changes(ChangesBase):
260 for x in broken_changelog_manifests:
261 self.repoman_settings["O"] = os.path.join(self.repo_settings.repodir, x)
262 digestgen(mysettings=self.repoman_settings, myportdb=self.repo_settings.portdb)
263 +
264 + def commit(self, myfiles, commitmessagefile):
265 + '''Hg commit the changes'''
266 + commit_cmd = []
267 + commit_cmd.append(self.vcs)
268 + commit_cmd.extend(self.vcs_settings.vcs_global_opts)
269 + commit_cmd.append("commit")
270 + commit_cmd.extend(self.vcs_settings.vcs_local_opts)
271 + commit_cmd.extend(["--logfile", commitmessagefile])
272 + commit_cmd.extend(myfiles)
273 +
274 + if self.options.pretend:
275 + print("(%s)" % (" ".join(commit_cmd),))
276 + else:
277 + retval = spawn(commit_cmd, env=self.repo_settings.commit_env)
278 + return retval