svn 一次性提交整個目錄包括子目錄
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的用法介紹講解完畢。
svn add *
svn add */**/*
等同於
svn add * --force