SVN的屬性


   SVN中的屬性是指附着在某個文件,某個目錄,或者某個版本庫上的鍵值對,與文件或者版本庫的內容相比,它們算是某種隱形內容。可以在一個對象上附着任意多個屬性(鍵值對),唯一的限制就是內存。鍵名由ASCII字符組成,類似變量名,鍵值則可以是任意值,包括字符串和二進制。

   屬性的修改,提交,更新,沖突解決與內容的修改,提交,更新,沖突解決一致。

   SVN支持兩種類型的屬性:版本化屬性和非版本化屬性。

   版本化屬性依賴於某一個版本文件或目錄而存在,與文件內容一樣,接受版本控制。提交針對某個文件或者目錄屬性的修改,與提交文件內容的修改一樣,會產生新的修訂版本號(revision number)

   非版本化屬性則針對整個版本庫,與某個修訂版本號(revision number)對應,它顯然是無法接受版本控制的(當然你可以查看它在上一個修訂號時的值,如果有的話)。

   可以自己定義並添加屬性,但是很多實踐者並不鼓勵這種做法,因為屬性類似隱形內容,難以搜索和管理。在實踐中,一般是在提交修改時,在log中嵌入一些信息(最好預先設定log的格式,便於編程處理),攜帶想要的鍵值對。這種做法當然只能與某次版本對應,但是對於大部分實踐,已經夠了。

   自定義版本化屬性的一個例子是:圖片文件的版權信息。

   自定義非版本化屬性的一個例子是:提交對應的bug ID。

   那么,SVN屬性的重點是,它自身使用一些保留屬性為使用者提供方便的特性。這些保留屬性的名字以svn:開頭,自定義屬性的名字最好不要也以這個開頭。svn在提交的時候,會自動添加一些保留屬性,比如:svn:mime-type,svn:executable。svn還允許定一些配置信息,自定義自動化屬性設置。

   保留的版本化屬性舉例:svn:mime-type,它的值是文件對應的mime類型。

   保留的非版本化屬性舉例:svn:date(版本提交的日期),svn:author(版本提交的作者),svn:log(版本提交的日志信息)。

   屬性操作舉例:

   1.添加一個版本化屬性:

      svn propset copyright '(c) 2006 Red-Bean Software' calc/button.c(設置button.c的版權信息)

      svn propset license -F /path/to/LICENSE calc/button.c(設置button.c的版權信息,LICENSE的內容被作為licence的值)

      svn propset copyright '(c) 2006 Red-Bean Software' calc/*(設置calc目錄下所有文件的版權信息)

      svn propedit copyright calc/button.c(設置或者編輯button.c文件的版權信息,推薦的修改方式)

   2.列出屬性:

      svn proplist calc/button.c

      輸出:

      Properties on 'calc/button.c':

         copyright

         license

      svn proplist -v calc/button.c

      輸出:

      Properties on 'calc/button.c':

         copyright
            (c) 2006 Red-Bean Software
         license

            (c) 2006 Red-Bean Software 

      svn propget copyright calc/button.c

      輸出:

      (c) 2006 Red-Bean Software

   3.刪除屬性:

      svn propdel license calc/button.c

   4.操作非版本化屬性(可能存在權限問題,需要svn服務器允許):

      svn propset svn:log "* button.c: Fix a compiler warning." -r11 --revprop

      svn propset svn:log "* button.c: Fix a compiler warning." -r11 --revprop http://svn.example.com/repos/project


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM