combo-layer: modified to generate better commit messages.
This patch includes support for a global section in combo-layer.conf called [combo-layer-settings]. Supported in this section is key "commit_msg"; its value is the template for the git commit message that updates the last_revision. The template can include substitution for the updated component list: ${components}. The substituted value will either be a comma-separated list of components or "all components", if combo-layer was invoked without component list argument. If the key is not present, the old default value is used for the commit message. Configuration file example: [combo-layer-settings] commit_msg = pulled in the latest changes for ${components}. (From OE-Core rev: fe84747f961772b61031af59d44e54b178148379) Signed-off-by: Ismo Puustinen <ismo.puustinen@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
8a0cb22f85
commit
daec53e977
|
@ -29,6 +29,7 @@ import tempfile
|
||||||
import ConfigParser
|
import ConfigParser
|
||||||
import re
|
import re
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
from string import Template
|
||||||
|
|
||||||
__version__ = "0.2.1"
|
__version__ = "0.2.1"
|
||||||
|
|
||||||
|
@ -77,15 +78,27 @@ class Configuration(object):
|
||||||
value = getattr(parser, 'get' + types[name])(section, name)
|
value = getattr(parser, 'get' + types[name])(section, name)
|
||||||
self.repos[repo][name] = value
|
self.repos[repo][name] = value
|
||||||
|
|
||||||
|
def readglobalsection(parser, section):
|
||||||
|
for (name, value) in parser.items(section):
|
||||||
|
if name == "commit_msg":
|
||||||
|
self.commit_msg_template = value
|
||||||
|
|
||||||
logger.debug("Loading config file %s" % self.conffile)
|
logger.debug("Loading config file %s" % self.conffile)
|
||||||
self.parser = ConfigParser.ConfigParser()
|
self.parser = ConfigParser.ConfigParser()
|
||||||
with open(self.conffile) as f:
|
with open(self.conffile) as f:
|
||||||
self.parser.readfp(f)
|
self.parser.readfp(f)
|
||||||
|
|
||||||
|
# initialize default values
|
||||||
|
self.commit_msg_template = "Automatic commit to update last_revision"
|
||||||
|
|
||||||
self.repos = {}
|
self.repos = {}
|
||||||
for repo in self.parser.sections():
|
for repo in self.parser.sections():
|
||||||
self.repos[repo] = {}
|
if repo == "combo-layer-settings":
|
||||||
readsection(self.parser, repo, repo)
|
# special handling for global settings
|
||||||
|
readglobalsection(self.parser, repo)
|
||||||
|
else:
|
||||||
|
self.repos[repo] = {}
|
||||||
|
readsection(self.parser, repo, repo)
|
||||||
|
|
||||||
# Load local configuration, if available
|
# Load local configuration, if available
|
||||||
self.localconffile = None
|
self.localconffile = None
|
||||||
|
@ -715,7 +728,21 @@ def action_update(conf, args):
|
||||||
if output:
|
if output:
|
||||||
logger.info("Committing updated configuration file")
|
logger.info("Committing updated configuration file")
|
||||||
if output.lstrip().startswith("M"):
|
if output.lstrip().startswith("M"):
|
||||||
runcmd('git commit -m "Automatic commit to update last_revision" %s' % relpath)
|
|
||||||
|
# create the "components" string
|
||||||
|
component_str = "all components"
|
||||||
|
if len(components) > 0:
|
||||||
|
# otherwise tell which components were actually changed
|
||||||
|
component_str = ", ".join(components)
|
||||||
|
|
||||||
|
# expand the template with known values
|
||||||
|
template = Template(conf.commit_msg_template)
|
||||||
|
raw_msg = template.substitute(components = component_str)
|
||||||
|
|
||||||
|
# sanitize the string before using it in command line
|
||||||
|
msg = raw_msg.replace('"', '\\"')
|
||||||
|
|
||||||
|
runcmd('git commit -m "%s" %s' % (msg, relpath))
|
||||||
|
|
||||||
def apply_patchlist(conf, repos):
|
def apply_patchlist(conf, repos):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue