mirror of
https://github.com/Perlmint/glew-cmake.git
synced 2025-02-16 21:58:01 +00:00
Add daily maintain script
This commit is contained in:
parent
5b895ae670
commit
0d77a03a16
142
maintain.sh
Executable file
142
maintain.sh
Executable file
@ -0,0 +1,142 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# This script is used for auto maintaining
|
||||
# - merging with original repo
|
||||
# - regenerating sources and headers
|
||||
# - push changes to repository
|
||||
#
|
||||
ORIGINAL_REPO_URL=https://github.com/nigels-com/glew.git
|
||||
if [ -z "$WORKSPACE" ]; then
|
||||
echo "Set WORKSPACE as default value"
|
||||
SCRIPT_PATH=$(readlink -f "$0")
|
||||
WORKSPACE=$(dirname "$SCRIPT_PATH")
|
||||
echo "WORKSPACE=$WORKSPACE"
|
||||
fi
|
||||
|
||||
if [ -z "$TEST_MODE" -o "$TEST_MODE" != "false" ]; then
|
||||
PUSH_ARG="--dry-run"
|
||||
else
|
||||
PUSH_ARG=""
|
||||
fi
|
||||
|
||||
prepare () {
|
||||
if [ -d "$WORKSPACE/auto/registry" ]; then
|
||||
cd "$WORKSPACE/auto/registry"
|
||||
echo "Update registry repo"
|
||||
git pull
|
||||
fi
|
||||
cd "$WORKSPACE"
|
||||
}
|
||||
|
||||
source_update () {
|
||||
GIT_BRANCH_NAME=$1
|
||||
# for recovery when test mode.
|
||||
PUSH_COUNT=0
|
||||
|
||||
echo "Checkout branch ${GIT_BRANCH_NAME}"
|
||||
if [ `git branch | grep ${GIT_BRANCH_NAME} | wc -l` = 0 ]; then
|
||||
git checkout origin/${GIT_BRANCH_NAME} -b ${GIT_BRANCH_NAME}
|
||||
else
|
||||
git checkout -f $GIT_BRANCH_NAME
|
||||
git pull -s recursive -X theirs --no-edit --progress origin
|
||||
fi
|
||||
echo "Pull from origin repository(${ORIGINAL_REPO_URL})"
|
||||
BEFORE_COMMIT=`git rev-parse HEAD`
|
||||
git pull -s recursive -X theirs --no-edit --commit --progress original_repo ${GIT_BRANCH_NAME}
|
||||
AFTER_COMMIT=`git rev-parse HEAD`
|
||||
if [ "$BEFORE_COMMIT" != "$AFTER_COMMIT" ]; then
|
||||
echo "Source Updated"
|
||||
git commit --amend -m "Merge ${ORIGINAL_REPO_URL} into ${GIT_BRANCH_NAME} HEAD at $(TZ=GMT date)"
|
||||
git push ${PUSH_ARG} origin $GIT_BRANCH_NAME:$GIT_BRANCH_NAME
|
||||
PUSH_COUNT=$((PUSH_COUNT + 1))
|
||||
fi
|
||||
|
||||
echo "Fetch tags from origin repository(${ORIGINAL_REPO_URL})"
|
||||
BEFORE_TAG_COUNT=`git tag | wc -l`
|
||||
git fetch --tags --progress original_repo
|
||||
AFTER_TAG_COUNT=`git tag | wc -l`
|
||||
if [ ! $BEFORE_TAG_COUNT -eq $AFTER_TAG_COUNT ]; then
|
||||
echo "Tags updated"
|
||||
git push ${PUSH_ARG} --tags origin
|
||||
PUSH_COUNT=$((PUSH_COUNT + 1))
|
||||
fi
|
||||
|
||||
cd "$WORKSPACE/auto"
|
||||
echo "CleanUp"
|
||||
make clean
|
||||
echo "Generated Source Update"
|
||||
cd "$WORKSPACE"
|
||||
make extensions
|
||||
echo "Diff sources"
|
||||
git add --force src/glew.c src/glewinfo.c include/GL/* doc/* build/*.rc
|
||||
# Check is there any staged changes?
|
||||
if [ `git diff --cached | wc -c` -ne 0 ]; then
|
||||
# Commit and push it
|
||||
echo "Sources updated"
|
||||
git commit -m"Generate Sources of ${GIT_BRANCH} updated at $(TZ=GMT date)"
|
||||
echo "Push to repository"
|
||||
git push ${PUSH_ARG} origin ${GIT_BRANCH_NAME}:${GIT_BRANCH_NAME}
|
||||
PUSH_COUNT=$((PUSH_COUNT + 1))
|
||||
else
|
||||
echo "Differences Not found"
|
||||
fi
|
||||
|
||||
# when test mode, reset created commits
|
||||
if [ -n "$PUSH_ARG" ]; then
|
||||
echo "Reset commits"
|
||||
git reset --hard HEAD~${PUSH_COUNT}
|
||||
fi
|
||||
}
|
||||
|
||||
# add remote when original repo is not found in local repo
|
||||
if [ `git remote | grep original_repo | wc -l` = 0 ]; then
|
||||
git remote add original_repo ${ORIGINAL_REPO_URL}
|
||||
fi
|
||||
|
||||
git fetch original_repo
|
||||
|
||||
branch_list () {
|
||||
eval "$2=\"`git branch -r | grep $1 | sed "s/\s\+$1\///g" | sed ':a;N;$!ba;s/\n/ /g'`\""
|
||||
}
|
||||
|
||||
contains () {
|
||||
local OUT=$1
|
||||
shift
|
||||
local seeking=$1
|
||||
shift
|
||||
local in=1
|
||||
for element in $*; do
|
||||
if [ $element = $seeking ]; then
|
||||
in=0
|
||||
break
|
||||
fi
|
||||
done
|
||||
eval "$OUT=\"${in}\""
|
||||
}
|
||||
|
||||
#branch_list original_repo ORIGINAL_REPO_BRANCH_LIST
|
||||
#branch_list origin ORIGIN_REPO_BRANCH_LIST
|
||||
|
||||
join () {
|
||||
local OUT=$1
|
||||
shift
|
||||
local value="`echo $* | sed "s/ /\n/g" | sort -u | sed ':a;N;$!ba;s/\n/ /g'`"
|
||||
eval "$OUT=\"${value}\""
|
||||
}
|
||||
|
||||
#join ALL_BRANCH_LIST $ORIGINAL_REPO_BRANCH_LIST $ORIGIN_REPO_BRANCH_LIST
|
||||
#
|
||||
#for branch in $ALL_BRANCH_LIST; do
|
||||
# contains IN_ORIGINAL_REPO $branch $ORIGINAL_REPO_BRANCH_LIST
|
||||
# if [ $IN_ORIGINAL_REPO = 1 ]; then
|
||||
# if [ $branch != "glew-cmake-release" ]; then
|
||||
# git push ${PUSH_ARG} origin :$branch
|
||||
# fi
|
||||
# else
|
||||
# source_update $branch
|
||||
# fi
|
||||
#done
|
||||
|
||||
prepare
|
||||
|
||||
source_update master
|
Loading…
Reference in New Issue
Block a user