一次向svn中增加所有新增文件 svn add all new files【转】
生活随笔
收集整理的這篇文章主要介紹了
一次向svn中增加所有新增文件 svn add all new files【转】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以下摘自:《卓有成效的程序員》之自動化
轉自:http://blog.csdn.net/spare_h/article/details/6677435 ? ? ?
? 我經常會一次往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。乍看之下覺得更加精煉,仔細看下就會發現這個腳本沒有區分文件狀態。所以完善了以下這個腳本:svn st | awk '{if ( $1 == "?") { print $2}}' | xargs svn add這樣,以后我可能使用這個腳本成百上千次。(當然這個腳本也沒有考慮過濾掉不要添加的文件)當你第三次做一件事情的時候,就應該考慮將其工具化,自動化!名稱 svn add — 添加文件、目錄或符號鏈。概要 SVN子命令add PATH...描述 文件、目錄或符號鏈到你的工作拷貝并且預定添加到版本庫。它們會在下次提交上傳并添加到版本庫,如果你在提交之前改變了主意,你可以使用svn revert取消預定。選項 --targets FILENAME --non-recursive (-N) --quiet (-q) --config-dir DIR --no-ignore --auto-props --no-auto-props --force例子: 我們通過一個例子來看一下SVN子命令add,添加一個文件到工作拷貝: $ svn add foo.c A foo.c 當添加一個目錄,svn add缺省的行為方式是遞歸的: $ svn add testdir A testdir A testdir/a A testdir/b A testdir/c A testdir/d 你可以只添加一個目錄而不包括其內容: $ svn add --non-recursive otherdir A otherdir 通常情況下,命令svn add *會忽略所有已經在版本控制之下的目錄,有時候,你會希望添加所有工作拷貝的未版本化文件,包括那些隱藏在深處的文件,可以使用svn add的--force遞歸到版本化的目錄下: $ svn add * --force A foo.c A somedir/bar.c A otherdir/docs/baz.doc。SVN子命令add的用法介紹講解完畢。?
轉載于:https://www.cnblogs.com/sky-heaven/p/5534104.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的一次向svn中增加所有新增文件 svn add all new files【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于DDD的.NET开发框架 - ABP
- 下一篇: 关于分享