SVN的忽略和只讀使用方法學習記錄


前言,先扯幾句。最近學了GIT,雖然很膚淺,但是也算是用上了分布式版本管理控制系統。Linus很牛,他也很厭煩SVN,而我看這些都是工具,是否拿來使用主要看是否順手。我贊同分布式版本管理控制,它有諸多優點,但是對於在局域網中做項目的封閉式開發或者項目很小且本機就能搭建SVN服務器,這兩種情況來使用SVN也無可厚非。至於神人Linus他做的Linux系統源碼太龐大,而且項目源碼數據量大,這個對於SVN還是不太適用。准備進入公司新項目開發階段了,有同事在外地分公司工作,因此代碼版本管理尤為重要。之前有個項目居然是手工拷貝合並代碼,還好只有3個人,即使這樣也有不一致的地方,現在想起來真是汗一個。這次首先跟同事詢問代碼如何管理,同事說把源碼放在公司服務器上,用SVN同步,因為外地的同事編碼量不會太多,而我們在公司的同事可以直接通過公司局域網訪問服務器,因此用SVN還是沒問題。SVN的基本使用我都會了,這里只是想學習兩點:1、SVN設置忽略文件;2、SVN給文件設置只讀屬性(該文件必須先獲取鎖,鎖定后才能編輯,編輯好以后提交解鎖)。

首先,先說如何設置忽略文件。這里先說一下為什么要設置忽略文件,因為Visual Studio編輯器在編譯生成項目時會有一些無關代碼的文件,比如bin文件夾、obj文件夾,還有一些用戶配置文件,比如*.user、*.suo等。這類文件是不用提交同步到服務器,而是個人用個人的。對於已維護在SVN上的項目,在客戶端對於某個文件右擊在SVN子菜單中找到【刪除和增加到忽略列表】菜單,點擊它這個文件就被忽略了,需要提交一下,忽略的文件在服務器上是被刪除的,但是在每個人本機上是存在的,且不受SVN版本控制。如果我想在導入本地項目文件到服務器上或者批量添加文件時,如何忽略指定類型的文件呢?這個要點擊SVN右鍵菜單中的設置菜單,在彈出來的對話框中,常規設置中有個全局忽略樣式,這里面已經有一些東西了,我們不管它。我們把我們要忽略的東西添加進去,注意文件夾直接寫,文件可以使用通配符*和?(並且還支持正則表達式),多個項之間用空格隔開。比如我添加如下4項:[Bb]in [Oo]bj *.user *.suo。這樣在導入操作時符合忽略規則的文件夾或文件不會導入到服務器的SVN倉庫中。

然后,再來說給文件設置只讀屬性,為什么要設置只讀屬性呢?其實SVN有合並的功能,但是是對文本文件,比如txt、cs、xml、aspx等。但是對於二進制或者其他一些重要文件,合並的效果就不太好了,這時如果多人同時編輯同一文件,很容易出現沖突。而只讀屬性並不是真的只讀,其實據說有辦法可以繞開這個設置,不過這個咱們先不關心。它只是提醒我們該文件要先鎖定再編輯,在提交解鎖前,其他人是無法獲取鎖的,因此也就無法提交,他的編輯只能在本地保存副本了,這樣我們就不會對於重要的需要防范沖突的文件忘記鎖定了。對於已維護在SVN上的項目,在客戶端對於某個文件右擊在SVN子菜單中找到【屬性...】,然后再點擊【新建】按鈕,鍵選擇“svn:needs-lock”,值隨便填,這里我就填*,提交到服務器上后,這個文件以后就必須鎖定后才能編輯了。那么如果想對某個文件夾下所有的文件都設置該屬性,就右擊該文件夾,然后還是像前面一樣操作,這時在填寫鍵值的窗口上有個復選框會啟用——遞歸應用該屬性,勾選它,這個文件夾中的所有文件都會應用這個屬性,然后提交即可,那么對於后添加或后導入的文件如何自動加上該屬性呢?還要進入到之前設置全局忽略樣式的窗口,它下面有個Subversion配置文件,點擊【編輯】按鈕,會用記事本打開一個文件,里面有這么一段:

### Set enable-auto-props to 'yes' to enable automatic properties
### for 'svn add' and 'svn import', it defaults to 'no'.
### Automatic properties are defined in the section 'auto-props'.
# enable-auto-props = yes

大概意思就是:將“啟用自動屬性”設置為是來啟用自動屬性功能,啟用后對於SVN的Add和Import(添加和導入)會自動應用這些屬性,“啟用自動屬性”默認值為否,自動屬性可以在“auto-props”配置節中定義。然后將第4行的最前面的#和空格去掉即可,該文檔下方有一個[auto-props],它下面已經有若干的自動屬性定義了,只不過被注釋掉了(行首加#即為該行已被注釋),那些被注釋的自動屬性我們不管,我們配置我們的屬性,比如*.sln = svn:needs-lock=*,換一行再寫*.csproj = svn:needs-lock=*等等。

最后再扯一句啊,SVN服務器上有個權限,是對SVN用戶做的控制,里面有只讀、讀寫等權限,如果你在服務器的倉庫中對某個文件設置成只讀權限,那么對應用戶是可以將該文件拉到本地,但是修改后提交,SVN客戶端會提示無法提交(紅色字體)。這個跟之前說的設置只讀屬性不是一回事。


免責聲明!

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



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