2011年8月17日

記錄文章:一次向svn中增加所有新增文件 svn add all new files

以下摘自:《卓有成效的程序員》之自動化

        我經常會一次往Subversion裡添加一批文件。在使用命令行做這件事時,你必須指定所有想要添加的文件名。如果文件不多的話這還不算太糟糕,但如果 你要添加20個文件,那就費事了。當然你也可以用通配符,但這樣一來就可能匹配到已經在版本控制之下的文件(這不會有什麼損害,只不過會輸出一堆錯誤信 息,可能會跟別的錯誤信息混淆)。為瞭解決這個問題,我寫了一行簡單的bash命令:
  svn st | grep '^\?' | tr '^\?' ' ' | sed 's/[ ]*//' | sed 's/[ ]/\\ /g' | xargs svn add
  表4.3詳細解釋了這一行命令。
 
  我大概花了15分鐘寫出這條命令,然後用了它成百上千次。
      ****************************************************
      這個自動化過程已經很完美了,一個「簡單」的shell腳本,這是一個權威編寫並使用了百上千次的腳本。
然後我在一個博客中看到這樣一個腳本:
svn st|awk '{print $2}'|xargs svn add。
乍看之下覺得更加精煉,仔細看下就會發現這個腳本沒有區分文件狀態。所以完善了以下這個腳本:

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

這樣,以後我可能使用這個腳本成百上千次。(當然這個腳本也沒有考慮過濾掉不要添加的文件)

當你第三次做一件事情的時候,就應該考慮將其工具化,自動化!