實習筆記----腳本: SVN批量添加與刪除

大家好,本文涉及到我在使用svn時遇到的一個實際問題:如何一次性完成涉及多文件的命令。

一般來講在svn版本控制下的文件操作如添加刪除等需要使用svn add 和svn rm來執行以便使svn知道這些變動,但實際使用中往往版本文件夾就是Eclipse的項目文件夾,想刪除添加文件直接在Eclipse裏操作就好了何必跳轉到命令行?【話說eclipse裏好像有相關的功能但是我還沒仔細看暫時忽略。。。】

直接在Eclipse裏進行操作的後果就是在使用svn提交時,在svn st 命令的列表中,所有新加入的文件前面會有‘?’,而刪除的文件前會有‘1’,我們需要把有‘?’的行使用svn add添加進版本控制,對?的行使用 svn rm;問題是如何進行這一批量操作呢?

通過“svn st | grep ?”命令可以得到需要添加的文件列表,但每行都以‘?’開頭所以無法直接通過xargs傳給svn add。 那麼問題轉換爲如何才能把那些?過濾掉呢?
例:
得到的文件列表:
d:\PROJET\repo\trunk>svn st | grep ?
? main.xml
? logo.png
? bin
? gen
? add.png
希望最終執行的命令:svn add main.xml logo.png bin gen add.png

要注意使用svn add -A 並不是一個好方法;對於我這個新手來講解決方案不是太明顯,但是經過研究和發帖求助還是找到了答案;

svn st | grep ? | sed "s/?//" |xargs svn add

svn st | awk '{if($1 == "?"){print $2}}'|xargs svn add

第一種方案使用sed 把?替換爲空然後傳過去就好了,第二種使用了awk命令;這兩個命令在進行字符串的替換等處理時是非常常用的,有了他們思路就比較完整了;建議和我一樣的新手們好好研究一下sed以及正則表達式,很組合成很強大的腳本哦;)


下一篇文章就給大家分享我寫的文件夾備份腳本,下次見嘍


發佈了73 篇原創文章 · 獲贊 101 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章