私は現在、ローカルマスターブランチがOrigin/masterの背後にあることが判明したときに、gitリポジトリをリベースするように通知するbashスクリプトを作成しています。
これまでのところ、次のことを考え出しましたが、$?
は常に1
を返します(これは、空の差分でもless
が読み込まれるためだと思います。
#!/bin/bash
REPO_PATH=$1
cd $REPO_PATH
# flow once inside repo
{
git fetch
git diff master Origin/master
} &> /dev/null
if [ "" = $? ]
then
echo "Empty"
# logic to follow
else
{
git pull
} &> /dev/null
echo "Don't forget to rebase!!!"
echo $REPO_PATH
fi
# check for changes to master
# If master is behind Origin/master
# then pull master and notify me to rebase
# run this at the start of the day (this script should be run from my start_work
# script and should also be periodically run throughout the day. [maybe every
# time I'm about to run coverage/push?])
誰かアイデアはありますか?
git-merge-base
の--is-ancestor
テスト:
if git merge-base --is-ancestor Origin/master master; then
echo Empty
else
echo "Don't forget to rebase!"
fi
終了ステータスを確認する代わりに、実際の出力を確認できます。
例えば
git fetch &> /dev/null
diffs=$(git diff master Origin/master)
if [ -z "$diffs" ]
then
echo "Empty"