svn 命令列提交忽略修改或新增的檔案

2021-09-02 06:58:24 字數 2009 閱讀 4606

在開發中搭建測試環境時,經常碰到開發人員需要根據自己的情況修改本地checkout下來的配置檔案,比如jdbc,config等等,這些修改後的檔案往往是不需要再提交到svn repo中的。不然肯定亂套了。

這樣就帶來乙個需求,怎樣才能在提交時忽略掉這些檔案呢?用tortoisesvn很簡單,直接在介面操作新增到ignore list中。在命令列應該怎麼做呢?

網上之前看了很多做法,比較多的一種是這樣的:

假設working copy的目錄為temp

1. cd到temp所在的目錄下:

2. svn propedit svn:ignore .

注意:請別漏掉最後的點(.表示當前目錄),如果報錯請看下面

3. 開啟的檔案就是忽略列表檔案了(預設是空的),每一行是一項,在該檔案中輸入temp,儲存退出

4. svn st檢視狀態,temp的?狀態已經消除了

其實就是將需要忽略的檔案新增到乙個檔案中,這個檔案由 svn propedit svn:ignore命令開啟

但在實際的測試中,我發現,針對不在版本控制中的檔案,也就是狀態為"?"的檔案,這種方法是有效的。說到檔案的狀態,這裡簡要列舉一下:

svn status列印五列字元,緊跟一些空格,接著是檔案或者目錄名。第一列告訴乙個檔案的狀態或它的內容,返回**解釋如下:

a item檔案、目錄或是符號鏈item預定加入到版本庫。

c item檔案item發生衝突,在從伺服器更新時與本地版本發生交迭,在你提交到版本庫前,必須手工的解決衝突。

d item檔案、目錄或是符號鏈item預定從版本庫中刪除。

m item檔案item的內容被修改了。

r item檔案、目錄或是符號鏈item預定將要替換版本庫中的item,這意味著這個物件首先要被刪除,另外乙個同名的物件將要被新增,所有的操作發生在乙個修訂版本。

x item目錄沒有版本化,但是與subversion的外部定義關聯。

? item檔案、目錄或是符號鏈item不在版本控制之下,你可以通過使用svn status的--quiet-q)引數或父目錄的svn:ignore屬性忽略這個問題。

! item檔案、目錄或是符號鏈item在版本控制之下,但是已經丟失或者不完整,這可能因為使用非subversion命令刪除造成的,如果是乙個目錄,有可能是檢出或是更新時的中斷造成的,使用svn update可以重新從版本庫獲得檔案或者目錄,也可以使用svn revert file恢復原來的檔案。

~ item檔案、目錄或是符號鏈item在版本庫已經存在,但你的工作拷貝中的是另乙個。舉乙個例子,你刪除了乙個版本庫的檔案,新建了乙個在原來的位置,而且整個過程中沒有使用svn delete或是svn add。

i item檔案、目錄或是符號鏈item不在版本控制下,subversion已經配置好了會在svn add、svn import和svn status命令忽略這個檔案,注意,這個符號只會在使用svn status的引數--no-ignore時才會出現—否則這個檔案會被忽略且不會顯示!

針對需要刪除版本庫中的檔案,但是在本地又得保留副本,可以採用下面的命令

svn del --keep-local config.properties

這樣,在 config.properties中的修改就不會提交到版本庫中了,相當於把檔案從"m"狀態變為"?"狀態

svn 命令列 修改上次提交日誌

由於需要使用 jenkins 配合shell 指令碼來做一些 和svn 相關的處理,而svn 不支援 類似git 的tag,而用svn copy 的方式太low,也不方便直接在 svn log 中體現出來.所以 我想 直接修改svn的 上次提交的log資訊,類似git commit ammend,但...

svn命令列修改已提交的版本備註

參考文章 由於預設情況下為安全起見subversion不允許開發人員修改已提交reversion的日誌資訊,這樣會報錯誤,提示不能修改以及請svn管理員安裝pre revprop change hook。這個hook是什麼意思呢?實際上是乙個版本日誌變更的預處理程式,主要是用來儲存老的日誌資訊,以避...

svn 命令列 批量刪除和批量新增

如果使用svn的命令列,例如在linux下的終端中使用,svn的新增命令是svn add,刪除命令是svn del,但是缺乏批量的操作,如果我在資源管理器中,手動新增了好多個資料夾下的各種各樣的檔案,然後我想一次性add,svn就力不從心了,即使使用svn add 也會因為新添檔案的父目錄已經被新增...