2014-07-07 127 views
0

我目前有一個bash腳本,每天凌晨2:30運行一段時間來渲染一些LaTex文件,然後將它們推送到GitHub倉庫。截至目前,即使沒有發生變化(沒有新的提交),PDF也會生成,這是無用的。我現在所擁有的腳本是這樣的:命令bash的結果

#!/bin/bash 
{ 
    PATH=/usr/local/texlive/2014/bin/armhf-linux:$PATH 
    cd /home/pi/Documents/Analysis-Notes/ 
    git pull #update all the data 
    cd Scripts 

    ./BuildAll.sh 
    ./BuildChapterByChapter.sh 


    cd /home/pi/Documents/Analysis-Notes/ 
    git add -A #Add all of the modified files to the commit 


    git commit -m 'Generated New PDFs' 

    git push 


} || { 
    echo -e "\n\n!!!! ERROR GENERATING FILES AUTOMATICALLY !!!!\n\n" 
} 

我的問題是:有沒有辦法看到從git pull命令的響應是什麼,然後把if語句(簡單的字符串比較),它產生文件只有當有變化?

在此先感謝!

+0

當&沒有任何新文件時,git-pull的輸出是什麼?你可以在輸出上做一個grep來確定你的命令的狀態 – Aserre

+1

使用'make',它已經具有所有的邏輯,只在一個或多個依賴項被更新時才運行命令。 – chepner

回答

1

我有點不明白它有什麼大不了的?

if [[ $(git pull) != 'Already up-to-date.' ]]; then 
    # do everything 
fi 
+0

謝謝,我正在尋找什麼。 – ruben1691

1

您有多種選擇。

  1. 使用像make這樣的工具,它只會重建需要重建的文件嗎?
  2. 使用git fetch來拉取更新的引用,然後比較本地分支ref和遠程分支ref。
  3. 在拉動之前保存當前修訂,並在拉動之後將其與當前修訂進行比較。