diff options
author | Puustinen, Ismo <ismo.puustinen@intel.com> | 2015-07-03 14:36:15 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-07-07 23:57:13 +0100 |
commit | fe84747f961772b61031af59d44e54b178148379 (patch) | |
tree | a66a405fca5bec62789a28a14f0c88a6935a3fa6 /scripts/combo-layer | |
parent | a9c174fd4bfabbae00d947738b06e72d7809eab3 (diff) | |
download | openembedded-core-fe84747f961772b61031af59d44e54b178148379.tar.gz openembedded-core-fe84747f961772b61031af59d44e54b178148379.tar.bz2 openembedded-core-fe84747f961772b61031af59d44e54b178148379.zip |
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}.
Signed-off-by: Ismo Puustinen <ismo.puustinen@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'scripts/combo-layer')
-rwxr-xr-x | scripts/combo-layer | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/scripts/combo-layer b/scripts/combo-layer index 4029d2bff8..2d100bebdf 100755 --- a/scripts/combo-layer +++ b/scripts/combo-layer @@ -29,6 +29,7 @@ import tempfile import ConfigParser import re from collections import OrderedDict +from string import Template __version__ = "0.2.1" @@ -77,15 +78,27 @@ class Configuration(object): value = getattr(parser, 'get' + types[name])(section, name) 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) self.parser = ConfigParser.ConfigParser() with open(self.conffile) as f: self.parser.readfp(f) + # initialize default values + self.commit_msg_template = "Automatic commit to update last_revision" + self.repos = {} for repo in self.parser.sections(): - self.repos[repo] = {} - readsection(self.parser, repo, repo) + if repo == "combo-layer-settings": + # special handling for global settings + readglobalsection(self.parser, repo) + else: + self.repos[repo] = {} + readsection(self.parser, repo, repo) # Load local configuration, if available self.localconffile = None @@ -715,7 +728,21 @@ def action_update(conf, args): if output: logger.info("Committing updated configuration file") 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): """ |