SVN文件屬性小結

前言

在使用SVN的過程中往往會遭遇這樣的問題:Checkout至本地的文件往往不帶可執行權限或可寫權限,這是由於SVN的文件屬性設置導致的。現時網上對於SVN屬性相關的中文文章非常少,基本只描述了問題現象而沒有系統地講解其背後的原理,本文在此做個小結。

SVN文件屬性概述

SVN版本控制系統提供了多項文件屬性供用戶應用於不同的使用場景下(例如防衝突等),此外還提供了針對目錄操作的目錄屬性,本文不涉及該部分。SVN文件屬性的名稱均以“svn:”開頭。以SVN 1.9爲例,共支持如下文件屬性:

名稱 描述
svn:keywords 擴展關鍵字
svn:executable 文件可執行權限
svn:eol-style EOL(行尾結束字符)
svn:mime-type 文件MIME類型
svn:needs-lock 文件鎖(一般用於防止在多人開發場景下的提交衝突與內容覆蓋)

上述SVN文件屬性的詳細說明可通過svn ps --help命令獲取。

SVN文件屬性操作

SVN提供了一組命令供用戶對SVN文件屬性進行增刪改查操作,分別是:

命令 快捷命令 功能
svn propdel svn pd / svn pdel 刪除屬性
svn propedit svn pedit / svn pe 編輯屬性
svn propget svn pget / svn pg 獲取指定屬性的屬性值
svn proplist svn plist / svn pl 顯示屬性
svn propset svn pset / svn ps 設置屬性

上述命令均可通過--help參數獲取詳細的使用說明。

svn propdel

SVN文件屬性刪除命令,基本格式爲

svn propdel PROPNAME [PATH...]

其中PROPNAME即需要刪除的SVN文件屬性名,[PATH...]即目標操作對象或文件。以常見的文件解鎖操作爲例,文件鎖定操作由svn:needs-lock屬性決定的,若需要清除該屬性,可執行如下命令

svn propdel svn:needs-lock main.c

svn propedit

SVN文件屬性編輯命令,基本格式爲

svn propedit PROPNAME TARGET...

以修改一個文件svn:keywords屬性值爲例,可執行如下命令

 svn pedit svn:keywords main.c

執行該命令時,SVN將打開一個GNU nano文本編輯器界面供用戶修改屬性,總體的操作流程和Git基本一致。

svn propget

SVN文件屬性值獲取命令,基本格式爲

svn propget PROPNAME [TARGET[@REV]...]

以獲取一個文件的svn:keywords屬性值爲例,可執行如下命令

svn propget svn:keywords main.c

執行上述命令後,系統將回顯對應的屬性值。

svn proplist

SVN文件屬性列舉命令,該命令用於查看目標文件的所有屬性(但不顯示具體的屬性值),其基本格式爲

svn proplist [TARGET[@REV]...]

以查看某一文件的所有屬性值爲例,可執行如下命令

root@ubuntu:~# svn pl main.c
Properties on 'main.c':
  svn:keywords
  svn:needs-lock

svn propset

SVN文件屬性設置命令,該命令用於爲目標文件添加用戶所需的文件屬性,其基本格式爲

svn propset PROPNAME PROPVAL PATH...

以常見的爲目標文件添加可執行權限爲例,可執行如下命令

root@ubuntu:~# svn ps svn:executable on main.c
property 'svn:executable' set on 'main.c'

 

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