summaryrefslogtreecommitdiff
path: root/bin/kernel-autobump
diff options
context:
space:
mode:
Diffstat (limited to 'bin/kernel-autobump')
-rwxr-xr-xbin/kernel-autobump150
1 files changed, 0 insertions, 150 deletions
diff --git a/bin/kernel-autobump b/bin/kernel-autobump
deleted file mode 100755
index 94b6faa..0000000
--- a/bin/kernel-autobump
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/bin/bash
-
-# Variables
-REPO_PATH=${1}
-PULL_REMOTE=${2}
-PUSH_REMOTE=${3}
-BRANCH=${4}
-PREFIX=${5}
-REGEX=${6}
-
-show_help() {
- echo "${0} <repo path> <pull remote> <push remote> <branch> <push tag prefix> v<track regex>" >&2
- echo "Example: ${0} ~/repos/kernel stable origin 3.12 kogaion- 3\.12\.[0-9999]" >&2
-}
-
-if [ ! -d "${REPO_PATH}" ]; then
- show_help
- exit 1
-fi
-
-if [ -z "${PULL_REMOTE}" ]; then
- show_help
- exit 1
-fi
-
-if [ -z "${PUSH_REMOTE}" ]; then
- show_help
- exit 1
-fi
-
-if [ -z "${BRANCH}" ]; then
- show_help
- exit 1
-fi
-
-if [ -z "${PREFIX}" ]; then
- show_help
- exit 1
-fi
-
-if [ -z "${REGEX}" ]; then
- show_help
- exit 1
-fi
-
-rollback() {
- cd "${REPO_PATH}" || return 1
- git rebase --abort || true
- git reset --hard "${PUSH_REMOTE}/${BRANCH}" || return 1
-}
-
-start() {
- cd "${REPO_PATH}" || return 1
-
- echo "Fetching ${PULL_REMOTE}"
- git fetch --quiet "${PULL_REMOTE}" || {
- rollback
- return 1;
- }
-
- echo "Fetching ${PUSH_REMOTE}"
- git fetch --quiet "${PUSH_REMOTE}" || {
- rollback
- return 1;
- }
-
- local tags=$(git tag | grep -e "v${REGEX}")
- echo "Tracking tags:"
- echo -e "${tags}"
- if [ -z "${tags}" ]; then
- echo "No tags to track for: ${REGEX} in ${REPO_PATH}"
- return 0
- fi
-
- local bumps=()
- local tag= tracked_tag=
- for tag in ${tags}; do
- tracked_tag="${PREFIX}${tag/v}"
- echo "Checking tag: ${tag}, ${tracked_tag}"
- if ! git tag | grep -q -e "^${tracked_tag}$"; then
- echo "Not tracked: ${tag}, ${tracked_tag}"
- bumps+=( "${tag}" )
- fi
- done
-
- if [ -z "${bumps[*]}" ]; then
- echo "Nothing to do."
- return 0
- fi
-
- if ! git show-branch "${BRANCH}" > /dev/null; then
- echo "Creating branch: ${BRANCH}"
- git checkout -q "${PUSH_REMOTE}/${BRANCH}" -b "${BRANCH}" || {
- rollback
- return 1;
- }
- else
- echo "Checking out branch: ${BRANCH}"
- git checkout -q "${BRANCH}" || {
- rollback
- return 1;
- }
- fi
-
- echo "Updating branch"
- git rebase --quiet "${PUSH_REMOTE}/${BRANCH}" || {
- rollback
- return 1;
- }
-
- for tag in "${bumps[@]}"; do
- echo "Working on tag: ${tag}"
- git merge --quiet "${tag}" -m "Automatic merge of tag ${PULL_REMOTE}/${tag}" || {
- rollback
- return 1;
- }
- bash kogaion/bump-configs.sh || {
- rollback
- return 1;
- }
-
- local changed=$(git ls-files -m -d -o --exclude-standard kogaion/config)
- if [ -n "${changed}" ]; then
- git commit --quiet kogaion/config -m "kogaion: bump configs" || {
- rollback
- return 1;
- }
- fi
-
- git push --quiet || {
- rollback
- return 1;
- }
- git push --quiet --tags || {
- rollback
- return 1;
- }
-
- tracked_tag="${PREFIX}${tag/v}"
- bash kogaion/tag-version.sh "${tracked_tag}" || {
- rollback
- return 1;
- }
-
- echo "Released ${tracked_tag}"
- done
-}
-
-
-start