2013-02-27 67 views
0

我正在分析軟件,我正在收集系統生命中三個不同點的svn。開始,中間和結束。 我目前能夠收集存儲庫的起始點,無論我設置了哪個數字,但是當存儲庫開始在主幹中存在數據或代碼時,我需要收集svn。最好的做法是使用while循環,而$ ip不包含...做刪除當前$ ip並獲得$ ip + 1使用bash分析svn存儲庫

我有svn_url.txt中的svn url和svn_name中的項目名稱。文本。 所以我得到的輸出我目前收到的是:

https://ponkout.svn.sourceforge.net/svnroot/ponkout 
ponkout 
Checked out revision 73. 
final revision is: 73 
mid revision is: 36 
Checked out revision 36. 
Checked out revision 1. 

#!/bin/bash 

for i in `cat svn_url.txt`; do echo $i; done; 
for j in `cat svn_name.txt`; do echo $j; done; 

svn co $i $j-fp && fpInfo=`svnversion $j-fp`; 
echo "final revision is: "$fpInfo; 
mpInfo=$((fpInfo/2)); 
echo "mid revision is: "$mpInfo; 
svn co -r$mpInfo $i $j-mp; 
ip=$((1)); 
svn co -r$ip $i $j-ip; 
+0

「最新版本/ 2」是一種完全不準確的方式來表示Subversion存儲庫中任何東西的「中間」。你可以這麼說,因爲一個應用程序有10K行代碼,當你有5K的代碼時,它已經完成了50%。 – alroc 2013-02-28 18:18:39

+0

我明白你在說什麼。我只是有興趣收集系統生命中三點的數據。開始中間和結束。它不一定是5000LOC的mp和10000LOC的最後。可以是中間的10000LOC和最後的5000LOC,表明系統可以被重構。 – 2013-02-28 19:47:32

+0

我要說的是,基於庫中的其他活動,代碼的修訂版73可能與修訂版36的*相同,因此您沒有捕獲三點,但只有兩點。如果你真的想要開始,結束和之間的某個地方,你需要從'svn info'獲得**最後更改的修訂**,但即使如此,最後修改/ 2只能代表一個* actual *修訂在最後一個之前。 – alroc 2013-02-28 20:03:20

回答

0

我需要收集SVN當倉庫開始只是在後備箱的數據或代碼

爲什麼你不檢索日誌,從修訂版1開始並查找您感興趣的路徑創建的條目?或者更好的是,檢索這些特定路徑的日誌,並查看第一個條目 - 這將在添加它時進行。

+0

我試圖自動化過程,如果修訂版本1沒有任何代碼在主幹中,然後迭代並檢查下一個修訂版,直到存在,然後將其用作系統的起始點。 – 2013-02-28 19:49:22