SVN整合圖形化操作介面
一,圖形化操作介面的好處
Svn的圖形化操作介面,只需要在對應的使用者資料夾中點選滑鼠右鍵,就可以彈出相應的操作選項,比如update,commit。
二,安裝步驟:
1,下載:TortoiseSVN-1.8.0.24401-win32-svn-1.8.0.msi,
2,直接無腦安裝。
3,安裝完成以後必須重啟計算機。
三,圖示解析:
情景:
1,
建立使用者目錄後,並通過checkout關聯了倉庫以後,在使用者目錄裡新建一個檔案,剛建立完顯示的就是這個圖示,也就是還沒有通過add新增到版本控制中。
2,
將沒有納入版本控制的檔案通過add命令納入版本控制,之後就變成了這個圖示,但是這個檔案在伺服器上還是不存在的。
3,
納入版本控制之後,通過commit命令將這個檔案提交到svn伺服器之後,這個檔案將會變成這個圖示。
4,
將一經提交的檔案進行修改,儲存之後,當前這個檔案就肯定要比伺服器上的版本新,如果是這樣的話,就會出現這個圖示。
5,
關於這個圖示,涉及到一個鎖機制。就好比多個人同時可以鎖一個門,這個門上本來沒有鎖,一個人過來,拿著一個鎖將門鎖上,那麼這個鎖只有這個人有鑰匙,別的人是打不開這個門的,如果別人想開啟這個門,必須要等之前的人將將鎖開啟,並拿走鎖,那麼下一個人才可以用他的鎖將這個門鎖上。
這涉及到許可權驗證,如果一個人對一個檔案進行了操作,這個人通過使用者名稱和密碼就會鎖上這個檔案,別的人就無法操作這個檔案了。
許可權驗證:
svn許可權設定
*啟用許可權驗證
*檔案位置:%倉庫%/conf/svnserve.conf
*修改內容
auth-access= write ,確定必須進行驗證
password-db= passwd ,確定賬號檔案的位置
*內容:一行表示一個賬號,格式:賬號=密碼
authz-db= authz ,確定許可權檔案的位置
[groups]
itcast=user1,user2 # 用於確定分組,多個賬號之間使用,分隔
[oa:/] #給指定的倉庫設定許可權,:/當前倉庫的根。如果設定成:/abc ,給指定倉庫中的abc目錄設定內容
@itcast= rw #給分組設定許可權
user3= rw #給指定的使用者設定許可權
*= #給除已經指定許可權使用者之外的其他人設定許可權。( read ('r'),read-write ('rw') , no access('').)
以上的配置說明了,在oa這個倉庫中,user1和user2被分到了itcast組中,itcast組的對oa中的檔案的操作許可權是讀寫,user3對oa中檔案的操作許可權也是讀寫,* = 表示除了這三個人之外的其他人都是沒有任何許可權的。
配置好之後,在進行操作,返回我們的使用者目錄user2,將一個已經提交的檔案加鎖,右鍵點選,選擇TortoiseSVNàget lock,點選確定,需要填寫使用者名稱和密碼,這裡填寫的是剛才配置的使用者名稱和密碼,然後這個鎖的圖示就出現了。
如果別的使用者下載這個檔案,通過commit提交時,會顯示資訊,這個檔案被使用者2鎖定,
在點選確定時,會提示輸入使用者名稱和密碼,正確輸入user2的使用者名稱和密碼之後,提交,就成功了,這時鎖會被釋放掉,別的使用者就可以再操作這個檔案了。
6,
要求一個檔案必須加鎖,然後才能使用。
選中相應檔案,右鍵,選擇property,點選new...,選擇Needs-Lock。
選擇Locking required(read-only update)。
修改後會先變成感嘆號圖示,再單獨提交這個檔案,會提示輸入使用者密碼,假如這次輸入user1的使用者名稱和密碼,確定後,這個檔案就會變成這個圖示。
檢視這個檔案的屬性,會發現它已經變成只讀的了。
所以這個時候,操作這個檔案必須獲得鎖才能進行操作,例如我們開啟這個檔案,寫點東西進去,儲存的時候,就會讓你去另存為...。
所以我們要操作這個檔案,必須先在這個檔案上右鍵,選擇:
Svn get lock...
會提示輸入使用者名稱密碼,輸入我們加鎖的使用者名稱和密碼,即user1。
確定之後,這個檔案的圖示就會變成綠對勾,就可以正常操作了。
再次提交的時候,需要輸入使用者名稱和密碼,輸入user1的使用者名稱和密碼,提交之後,圖示又回到灰色對勾狀態。
7,
假如我們的工作目錄中,不想讓某個檔案出現在svn伺服器上,也就是說,使用者本地有這個檔案,提交的時候不提交這個檔案,忽略這個檔案。
新建一個檔案demo08.txt,在空白處點選提交的時候,列表中會出現demo08.txt檔案,如果通過忽略這個檔案,就可以不在commit時出現這個檔案。
點選之後,就會變成這個圖示了。
例如我們要將這個demo08.txt檔案忽略掉,
再次點選提交的時候,就不會有這個檔案了。
不再有demo08.txt檔案。8,
通過如下方式將這個檔案刪除。
這種方式與系統delete方式的區別:
在提交的時候就會看到區別:
這時我們再建立一個檔案,就叫demo09.txt,與之前通過svn的delete刪除的檔名相同,這時我們會發現這個檔案的圖示就是這個紅叉。一般情況下我們既然刪除了一個檔案,那麼就代表我們不需要了,所以既然已經刪除,為什麼還要給弄出來?所以這裡svn將這個新建立的與刪除檔案同名的檔案就被標識為已刪除。
但是如果我們建立了一個demo10.txt,發現demo10.txt不會顯示已刪除的圖示,因為svn將這個系統刪除的檔案標識為丟失狀態,如果又出現一個同名的檔案,會標誌為與它刪除時狀態一樣的圖示。
9,
User1和user2下班之前同時寫一份檔案,下班時要把這個檔案提交到伺服器,假如user1在這個檔案的開頭加了一些內容,user2在這個檔案的結尾加了一些內容,這時user1手快,先提交到了伺服器,user2在提交的時候就會提示已過期,即需要下載最新版本,那麼user2就要先update最新版本,update後再提交,提交完成,會發現這個檔案的開頭是user1加的內容,末尾是user2加的內容,svn自動將檔案合併了,因為修改的位置沒有在同一個位置,所以沒有產生衝突。
假如,user1和user2在同一個位置進行了修改,提交的時候,第一個人會沒有問題,而第二個人就會無法提交,產生衝突。然後這個圖示就出現了,同時下面還會多出三個檔案:此時demo10.txt檔案中出現的內容類似:
Demo10.txt.mine是當前使用者寫的檔案內容,
Demo10.txt.r31是這個使用者修改前的原始檔案內容,
Demo10.txt.r33是對方修改後的內容。
那麼你最後到底需要哪一個呢,svn提供了編輯這個衝突的方案,
彈出視窗:
下面一欄的?表示svn不能識別了。
選擇好後
然後觀察使用者資料夾,剛才產生的那三個檔案就已經不在了,
Demo10.txt又變回了感嘆號的狀態,再次進行提交即可。
提交之後就會變回綠對勾的狀態。