Script de mise à jour pour dépôts bare
This commit is contained in:
parent
234a0e9128
commit
ab71845f55
1 changed files with 60 additions and 0 deletions
60
Perso/INTech/gitUpdate.sh
Executable file
60
Perso/INTech/gitUpdate.sh
Executable file
|
@ -0,0 +1,60 @@
|
|||
#!/bin/bash
|
||||
|
||||
GIT_REPO="."
|
||||
WORK_DIR="~/.gitAutoPull"
|
||||
|
||||
if [ $# -gt 0 ]; then
|
||||
GIT_REPO="$1"
|
||||
fi
|
||||
|
||||
GIT_REPO_NAME="$(echo '$GIT_REPO' | tr '/' '_' | tr -d '~')"
|
||||
CHECK_TIMER_FILE=$WORK_DIR/localCommitsCheck"$GIT_REPO_NAME"
|
||||
|
||||
if [ ! -d "$GIT_REPO/.git/" ]; then
|
||||
echo $GIT_REPO" is not a git repository"
|
||||
exit -2
|
||||
fi
|
||||
|
||||
if [ ! -d $WORK_DIR ]; then
|
||||
mkdir $WORK_DIR
|
||||
fi
|
||||
|
||||
if [ ! -d $WORK_DIR ]; then
|
||||
echo "Could not create work directory, aborting"
|
||||
exit -4
|
||||
fi
|
||||
|
||||
cd $GIT_REPO
|
||||
|
||||
if [ -e $CHECK_TIMER_FILE ]; then
|
||||
read count < $CHECK_TIMER_FILE
|
||||
if [ $cout -ne 0 ]; then
|
||||
echo $(( $count - 1 )) > $CHECK_TIMER_FILE
|
||||
exit -1
|
||||
else
|
||||
rm -f $CHECK_TIMER_FILE
|
||||
fi
|
||||
fi
|
||||
|
||||
remoteStatus="$(git fetch --all --dry-run)" # Empty if there are no commits to fetch
|
||||
localStatus="$(git push -n --porcelain | grep -e'up to date')" # Empty if there are commits to push
|
||||
|
||||
if [ -z "$remoteStatus" ]; then
|
||||
if [ -z "$localStatus" ]; then
|
||||
echo "Pushing "$GIT_REPO" updates to origin" | wall
|
||||
git push | wall
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [ -z "localStatus" ]; then
|
||||
echo "Local and remote diverged, stopping auto-update for 30 iterations..." | wall
|
||||
echo 30 > $WORK_DIR/localCommitsCheck"$GIT_REPO_NAME"
|
||||
else
|
||||
echo "Updating "$GIT_REPO" with remote commits" | wall
|
||||
git fetch --all | wall
|
||||
git remote update | wall
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
Loading…
Add table
Reference in a new issue