我有某个文件UPDATE.sh。这个文件的任务是使用git merge更新我的程序。
UPDATE.sh:
#!/usr/bin/env bash
git fetch https://xxxxx
newUpdatesAvailable=`git diff HEAD FETCH_HEAD`
if [[ "$newUpdatesAvailable" != "" ]]
then
git branch backup
git checkout backup
git add .
git add -u
git commit -m date "+%d.%m.%Y"
git checkout master
git merge FETCH_HEAD
else
echo "No updates..."
fi
除了在Make语法上,我必须写同样的东西。
我试图弄清楚Make中的条件,但对我来说没有用。
请告诉我如何在不使用Makefile的情况下正确编写此代码:
update:
./UPDATE.sh
您无需捕获git diff
的输出;您只需要知道是否存在差异即可。使用-q
选项。if ! git diff -q HEAD FETCH_HEAD; then
git branch backup
...
else
echo "No updates"
fi
[-q
抑制输出并隐含--exit-code
,如果存在差异,这将导致git diff
以非零退出状态退出。
在Makefile中,应该是
update:
git fetch https://xxxxx
if ! git diff -q HEAD FETCH_HEAD; then \
git branch backup \
git checkout backup \
... \
else \
echo "No updates" \
fi
反斜杠是必需的,因为整个if
语句必须出现在一条逻辑行上。