2017-05-10 65 views
0

我寫如下一個小bash腳本:的Git/bash的更新當地的分支機構

#if you add a project you must use the format git clone https://<username>:<passsord>@github.com/ZiathLtd/<project-name>.git 
#projects[1]=samples 
#projects[2]=TubePicker 
#projects[3]=FloydDriver 
#projects[4]=Handheld 
projects[1]=handheldserver 
#projects[6]=ziathscripts 
#projects[7]=handheldscripts 

basedir="/mnt/raid/git" 

for i in ${projects[@]}; do 
     echo 'updating' ${i} 
     cd ${basedir}/${i} 

     for b in `git branch -r | grep -v -- '->'`; do 
       echo working on ${b} 

       git rev-parse --verify ${b} 
       if [ $? -ne 0 ] 
         then 
           echo 'new branch' 
           git branch --track ${b##origin/} $b; 
       fi 
     done 
     #git fetch --all 
     #git pull --all 
done 

基本上,它應該給我那些n要具有本地分支機構的項目;然而,當我執行這個腳本(分支假新聞2不存在本地唯一遠程)我得到以下幾點:

[email protected]:/etc/git-fetch# ./git-fetch.sh 
updating handheldserver 
working on origin/converttospringbootproject 
5eee6f6d65feb2f49f4f7a4edecc37a17081dfae 
working on origin/fake-news 
95e840807a2c7d125c053a6a06bb1e9c7fd11b78 
working on origin/fake-news2 
95e840807a2c7d125c053a6a06bb1e9c7fd11b78 
working on origin/fake-news3 
497ecdc1e31f312884fe9666ef3408f3bd8083c8 
working on origin/master 
1a541521941687ae27bccfa412c4372db9afeaea 
working on origin/maven-spring-boot-plugin 
46e25767e41a639c6cc7760fe4a2249d01a00060 

注意,對於假新聞2哈希是一樣的假新聞 - 它是就像打電話給假新聞2使用假新聞標籤一樣(我希望你喜歡我用於虛擬分支的名字的諷刺!)。然而,當在命令行中運行,我得到以下幾點:

[email protected]:/mnt/raid/git/handheldserver# git rev-parse --verify fake-news 
95e840807a2c7d125c053a6a06bb1e9c7fd11b78 
[email protected]:/mnt/raid/git/handheldserver# echo $? 
0 
[email protected]:/mnt/raid/git/handheldserver# git rev-parse --verify fake-news2 
fatal: Needed a single revision 
[email protected]:/mnt/raid/git/handheldserver# echo $? 
128 

這是您希望爲假新聞2不具有本地分支什麼。它看起來好像是git在循環中做了一些奇怪的事情,或者我正在運行的命令在回顯中獲取$ {b}的正確變量,而不是在命令上。

我完全卡住了,所以我希望別人來過這裏。請注意,我嘗試了其他git命令來檢查本地分支(如show-ref)的存在,但它們似乎都做同樣的事情。

感謝,在您的幫助

回答

1

你爲什麼希望這兩個命令有同樣的結果,如果假新聞2於本地存在?

git rev-parse --verify fake-news2 #The one you used on the command-line 
git rev-parse --verify origin/fake-news2 #The one you used in your script 
+0

謝謝;這正是我的同事一看到它就制定出來的!當我累了時,我的工作不好!謝謝回答。 –

相關問題