diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2011-12-30 13:08:01 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-01-03 12:10:49 +0000 |
commit | 8eff4fea13317a741114f2a2e8e228d0155ba64c (patch) | |
tree | ba7b9312bd11eb305d8a4f3908aa6a4fec689740 /meta/classes/buildhistory.bbclass | |
parent | 22213b226d7f9b7732163d6586d938416c7ec8c3 (diff) | |
download | openembedded-core-8eff4fea13317a741114f2a2e8e228d0155ba64c.tar.gz openembedded-core-8eff4fea13317a741114f2a2e8e228d0155ba64c.tar.bz2 openembedded-core-8eff4fea13317a741114f2a2e8e228d0155ba64c.zip |
buildhistory: improve git commit robustness
* Check if BUILDHISTORY_DIR exists before doing anything with it, in
case no tasks that would have created it have executed
* Ensure the git repo in BUILDHISTORY_DIR is initialised with "git init"
before attempting to do anything with it
* Check if any files have been added or changed before adding and
committing, to avoid an error from "git commit"
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Diffstat (limited to 'meta/classes/buildhistory.bbclass')
-rw-r--r-- | meta/classes/buildhistory.bbclass | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass index 6a08db467e..06d3510ddc 100644 --- a/meta/classes/buildhistory.bbclass +++ b/meta/classes/buildhistory.bbclass @@ -342,11 +342,24 @@ def buildhistory_get_layers(d): buildhistory_commit() { + if [ ! -d ${BUILDHISTORY_DIR} ] ; then + # Code above that creates this dir never executed, so there can't be anything to commit + exit + fi + ( cd ${BUILDHISTORY_DIR}/ - git add ${BUILDHISTORY_DIR}/* - git commit ${BUILDHISTORY_DIR}/ -m "Build ${BUILDNAME} for machine ${MACHINE} configured for ${DISTRO} ${DISTRO_VERSION}" --author "${BUILDHISTORY_COMMIT_AUTHOR}" > /dev/null - if [ "${BUILDHISTORY_PUSH_REPO}" != "" ] ; then - git push -q ${BUILDHISTORY_PUSH_REPO} + # Initialise the repo if necessary + if [ ! -d .git ] ; then + git init -q + fi + # Ensure there are new/changed files to commit + repostatus=`git status --porcelain` + if [ "$repostatus" != "" ] ; then + git add ${BUILDHISTORY_DIR}/* + git commit ${BUILDHISTORY_DIR}/ -m "Build ${BUILDNAME} for machine ${MACHINE} configured for ${DISTRO} ${DISTRO_VERSION}" --author "${BUILDHISTORY_COMMIT_AUTHOR}" > /dev/null + if [ "${BUILDHISTORY_PUSH_REPO}" != "" ] ; then + git push -q ${BUILDHISTORY_PUSH_REPO} + fi fi) || true } |