svn status詳解

svn 是在提交前查看本地文本和版本庫裏面的文件的區別。返回值有許多種具體含義如下:

[url=]  L    abc.c               # svn已經在.svn目錄鎖定了abc.c

M      bar.c               # bar.c的內容已經在本地修改過了

M     baz.c               # baz.c屬性有修改,但沒有內容修改

X      3rd_party           # 這個目錄是外部定義的一部分

?      foo.o               # svn並沒有管理foo.o

!      some_dir            # svn管理這個,但它可能丟失或者不完整

~      qux                 # 作爲file/dir/link進行了版本控制,但類型已經改變

I      .screenrc           # svn不管理這個,配置確定要忽略它

A  +   moved_dir           # 包含歷史的添加,歷史記錄了它的來歷

M  +   moved_dir/README    # 包含歷史的添加,並有了本地修改

D      stuff/fish.c        # 這個文件預定要刪除

A      stuff/loot/bloo.h   # 這個文件預定要添加

C      stuff/loot/lump.c   # 這個文件在更新時發生衝突

R      xyz.c               # 這個文件預定要被替換

    S  stuff/squawk        # 這個文件已經跳轉到了分支

 

 

[/url][url=]在這種格式下,svn status打印五列字符,緊跟一些空格,接着是文件或者目錄名。第一列告訴一個文件的狀態或它的內容,返回代碼解釋如下:[/url]

[url=]A item[/url] [url=]文件、目錄或是符號鏈item預定加入到版本庫。[/url]

[url=]C item[/url] [url=]文件item發生衝突,在從服務器更新時與本地版本發生交迭,在你提交到版本庫前,必須手工的解決衝突。[/url]

[url=]D item[/url] [url=]文件、目錄或是符號鏈item預定從版本庫中刪除。[/url]

[url=]M item[/url] [url=]文件item的內容被修改了。[/url]

[url=]R item[/url] [url=]文件、目錄或是符號鏈item預定將要替換版本庫中的item,這意味着這個對象首先要被刪除,另外一個同名的對象將要被添加,所有的操作發生在一個修訂版本。[/url]

[url=]X item[/url] [url=]目錄沒有版本化,但是與Subversion的外部定義關聯,關於外部定義,可以看[/url]“外部定義”一節。

? item 文件、目錄或是符號鏈item不在版本控制之下,你可以通過使用svn status的--quiet(-q)參數或父目錄的svn:ignore屬性忽略這個問題,關於忽略文件的使用,見“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:ignore”一節。注意,這個符號只會在使用svn status的參數--no-ignore時纔會出現—否則這個文件會被忽略且不會顯示!

 

第二列說明文件或目錄的屬性的狀態(更多細節可以看“屬性”一節),如果一個M出現在第二列,說明屬性被修改了,否則顯示空白。

第三列只顯示空白或者L,L表示Subversion已經在.svn工作區域鎖定了這個項目,當你的svn commit正在運行的時候—也許正在輸入log信息,運行svn status你可以看到L標記,如果這時候Subversion並沒有運行,可以推測Subversion發生中斷並且已經鎖定,你必須運行svn cleanup來清除鎖定(本節後面將有更多論述)。

第四列只會顯示空白或+,+的意思是一個有附加歷史信息的文件或目錄預定添加或者修改到版本庫,通常出現在svn move或是svn copy時,如果是看到A  +就是說要包含歷史的增加,它可以是一個文件或是拷貝的根目錄。+表示它是即將包含歷史增加到版本庫的目錄的一部分,也就是說他的父目錄要拷貝,它只是跟着一起的。 M  +表示將要包含歷史的增加,並且已經更改了。當你提交時,首先會隨父目錄進行包含歷史的增加,然後本地的修改提交到更改後的版本。

第五列只顯示空白或是S,表示這個目錄或文件已經轉到了一個分支下了(使用svn switch)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章