導航:首頁 > 版本升級 > svn文件夾使用方法

svn文件夾使用方法

發布時間:2021-10-24 10:57:46

㈠ tortiseSvn 中如何在每個文件夾下顯示.svn文件

這是SVN的版本問題,SVN的1.6.X及以下版本是在每個文件夾都生成一個.svn隱藏文件夾,SVN的1.7.X版是內只在版本庫根目錄容下生成一個.svn隱藏文件夾,這是正常情況,一般不必在意。
另外,即便SVN伺服器端是1.6.X版,但如果用的客戶端是TortoiseSVN 1.7.X版,那麼同樣會只在根目錄下生成.svn文件夾。

如果你一定想要在每個文件夾都生成.svn文件夾,那隻有將SVN客戶端更換為1.6.X版。

㈡ 我怎麼在SVN中創建一個文件夾,並且把我的項目上傳到SVN伺服器上呢

<p>svn是基於關系資料庫的(berkleydb)或一系列二進制文件的(fs_fs)。一方面這解決了許多回問題
(例如,並行讀寫答共享文件)以及添加了許多新功能(例如運行時的事務特性。)。然而另一方面,數據存儲由此變得不透明。</p>
<p>
</p>
<p>基於以上所以你在服務上是找不到你提交的原始文件,因為svn每次提交做的都是原子提交,所以你在伺服器上能找到的都是一些碎片文件。</p>
<p>
</p>
<p></p>

㈢ 如何正確使用SVN建立本地文件管理

要看你的SVN伺服器是怎麼配置的了,一般來說你在哪裡執行的svncreate,伺服器端的數據就存在哪個文件夾里你的採納是我前進的動力,還有不懂的地方,請繼續「追問」。如你還有別的問題,可另外向我求助;答題不易,互相理解,互相幫助。

㈣ .svn文件夾是干什麼的

.svn文件是subversion的版本控制信息文件 當某個目錄處於subversion的版本控制時,在這個目錄中就會.svn這個文件夾,這個.svn文件夾中的文件就是一些版本信息文件,供subversion使用,一般不要人為去改這些文件。

㈤ svn使用教程是什麼

分支在SVN中一點都不特別,其實它就是版本庫中的另外一個目錄。sVN是按文件:所有的資源控制系統都是把文件的元信息隱藏在一個類似。svn、cvs等的文件夾里。SVN有:目前為止這是跟SVN相比Git缺少的最大的一個特徵。

將svnserve.conf中的#

authz-db=authz

和#password-db

=passwd的『#』號去掉且前面不能存在空格。



應用途徑:

SVN伺服器既具有CVS所具有數據儲存的優點,像是信息資源存儲後會形成資源樹結構,便於存儲的同時,數據一般不會丟失,同時又擁有自己的特色。SVN是通過關系資料庫及二進制的存儲方式,同時解決了既往不能同時讀寫同一文件等問題,同時增添了自己特有的「零或一」原則。

以上內容參考:網路-版本控制

以上內容參考:網路-SVN

㈥ 怎樣在svn中新建一個目錄

沒太看明來白你的cwc和cw的關系,不過就自事論事的回答在SVN中新建文件夾的方法很簡單,在客戶端checkout處理的文件夾下,新建一個文件夾,右鍵點擊該文件夾,選擇TortoiseSVN——add,然後再commit就OK了。

㈦ 新手,請教svn怎麼啟動,並在下面新建文件夾

如果你用的SVN客戶端是TortoiseSVN的話,那麼是沒有主界面的,在文件夾空白處點擊右鍵,SVN的所有內功能都集成在右容鍵菜單里了。

如果是第一次用的話,你需要先checkout,將整個版本庫從伺服器端下到本地,然後在checkout出來的文件夾里,你可以自己按需要新建文件夾,並add、commit

你可以看我的網路文庫,裡面有篇在windows下使用SVN的PPT

㈧ svn如何使用

svn(subversion)是近年來崛起的版本管理工具,是cvs的接班人。目前,絕大多數開源軟體都使用svn作為代碼版本管理軟體。如何快速建立Subversion伺服器,並且在項目中使用起來,這是大家最關心的問題,與CVS相比,Subversion有更多的選擇,也更加的容易,幾個命令就可以建立一套伺服器環境,

本文是使用Subversion最快速的教程,在最短的時間里幫助您建立起一套可用的伺服器環境,只需略加調整就可以應用到實際項目當中。
本教程分為以下幾個部分,為了說明簡單,教程是在windows下使用的方式,以方便資源有限的項目使用。在UNIX環境下,只是安裝方式不同,命令執行並無太大區別。

工具/原料
Subversion伺服器程序安裝包

Subversion的Windows客戶端TortoiseSVN安裝包

方法/步驟
1軟體下載

<1>、下載Subversion伺服器程序

到官方網站的下載二進制安裝文件,來到二進制包下載部分,找到 Windows NT, 2000, XP and 2003部分,然後選擇Apache 2.0 或者 Apache 2.2,這樣我們可以看到許多下載的內容,目前可以下載Setup-Subversion-1.7.12.msi 。

<2>、下載Subversion的Windows客戶端TortoiseSVN。

TortoiseSVN是擴展Windows Shell的一套工具,可以看作Windows資源管理器的插件,安裝之後Windows就可以識別Subversion的工作目錄。
官方網站是TortoiseSVN ,下載方式和前面的svn伺服器類似,在Download頁面的我們可以選擇下載的版本,目前的最高穩定版本的安裝文件為TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi。

2svn伺服器和客戶端安裝

<1>、安裝Subversion,直接運行Setup-Subversion-1.5.3.msi ,根據提示安裝即可,這樣我們就有了一套伺服器可以運行的環境。

<2>、安裝TortoiseSVN,同樣直接運行TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi按照提示安裝即可,不過最後完成後會提示是否重啟,其實重啟只是使svn工作拷貝在windows中的特殊樣式生效,與所有的實際功能無關,這里為了立刻看到好的效果,還是重新啟動機器。

<3>、安裝svn的客戶端程序,需要的話還可以安裝svn的語言包,注意語言包的版本也必須與客戶端程序的版本一致

3建立版本庫(Repository)

運行Subversion伺服器需要首先要建立一個版本庫(Repository),可以看作伺服器上存放數據的資料庫,在安裝了Subversion伺服器之後,可以直接運行,如:

svnadmin create E:\svndemo\repository

就會在目錄E:\svndemo\repository下創建一個版本庫。

我們也可以使用TortoiseSVN圖形化的完成這一步:
在目錄E:\svndemo\repository下"右鍵->TortoiseSVN->Create Repository here...「, 然後可以選擇版本庫模式, 這里使用默認即可, 然後就創建了一系列目錄和文件。

步驟閱讀 .4SVN配置用戶和許可權

來到E:\svndemo\repository\conf目錄,修改svnserve.conf:

# [general]
# password-db = passwd
改為:
[general]
password-db = passwd

然後修改同目錄的passwd文件,去掉下面三行的注釋:
# [users]
# harry = harryssecret
# sally = sallyssecret
最後變成:
[users]
harry = harryssecret
sally = sallyssecret

在passwd文件中,「=」前的字元就是用戶名,後面的就是密碼。還要注意「[users]」前面的注釋「#」一定要刪除掉。

步驟閱讀 .5運行獨立伺服器

在任意目錄下運行:
svnserve -d -r E:\svndemo\repository 我們的伺服器程序就已經啟動了。注意不要關閉命令行窗口,關閉窗口也會把svnserve停止。

6初始化導入

來到我們想要導入的項目根目錄,在這個例子里是E:\svndemo\initproject,目錄下有一個readme.txt文件:

右鍵->TortoiseSVN->Import...
在URL of repository輸入「svn://localhost/trunk」
在Import Message中輸入你的日誌信息

完成之後目錄沒有任何變化,如果沒有報錯,數據就已經全部導入到了我們剛才定義的版本庫中。

需要注意的是,這一步操作可以完全在另一台安裝了TortoiseSVN的主機上進行。例如運行svnserve的主機的IP是133.96.121.22,則URL部分輸入的內容就是「svn://133.96.121.22/trunk」。

步驟閱讀 .7基本客戶端操作

取出版本庫到一個工作拷貝:

來到任意空目錄下,在本例中是E:\svndemo\wc1,運行右鍵->Checkout,在URL of repository中輸入svn://localhost/trunk,這樣我們就得到了一份工作拷貝。

在工作拷貝中作出修改並提交:

打開readme.txt,作出修改,然後右鍵->Commit...,這樣我們就把修改提交到了版本庫,我們可以運行。

察看所作的修改:

readme.txt上右鍵->TortoiseSVN->Show Log,這樣我們就可以看到我們對這個文件所有的提交。在版本1上右鍵->Compare with working ,我們可以比較工作拷貝的文件和版本1的區別。

最後,所有的內容都已經錄制為動畫文件,大家可以參考。

關於本教程大家有什麼意見,可以這里討論 。

如果更新文件以後,有兩個人或者多個人同時修改了某個文件的某個位置,是否沖突,(一般不會這樣子,因為上傳的版本是可以編譯通過的,而且每個人負責自己的模塊,不會多人獨立修改同一個文件,別人也是先更新,後上傳修改,,,,)

開發者習慣性動作。早上上班第一件事就是更新svn版本庫,再開始一天的工作。

晚上下班,或者其他時候要上傳東西可以直接上傳因為你負責的東西沒人去修改。

沖突是怎麼產生的呢:因為不同的人,同時修改了同一個文件的同一個地方,這個時候,他提交了,你沒有提交,你就提交不了,這個時候,你要先更新,更新就會出現代碼沖突問題。最好不要多人同時修改一個文件,公用的文件,更改之前要和大家溝通一下,或者解決沖突 呵呵

先更新,沒有沖突,再提交。有沖突,解決沖突再提交。否則也提交不了。

對於一些處於沖突狀態下的文件 ,右鍵TortoiseSVN ->Resolved,解決沖突。解決沖突: http://www.blogjava.net/jasmine214--love/archive/2011/04/07/347769.html

更新-解決沖突-刪掉以下三個文件-提交(如果自己沒有修改的文件有沖突,刪除再更新即可,自己修改的文件解決沖突)

test.php.mine 是沖突前自己的文件

test.php.版本號 是沖突前本地的版本文件

test.php.伺服器的版本號 是沖突後伺服器版本文件

END注意事項
如果修改文件後提交不了,大多是因為版本不一致造成的。更新一下,不產生沖突的情況,就可以提交了。

更新文件,如果出現沖突的情況,打開沖突文件test.php會看到類似以下的內容

<<<<<<<<<<<<<<<
asdfadfadfadf
11111111111111
=======
asdfadfadfadf
111111111111111
222222222222
>>>>>>>>>>>>>>>>

結合別人修改的內容和自己修改的內容,然後把文件中的<<<<<,=====,>>>>>>>這類沖突符號去掉。去掉後,還是不能提交的,為什麼?因為沖突時會產生三個文件,有這三個文件存在肯定提交不了。

客戶端用的tortoisesvn(這個估計程序員用的最多),沖突時會多產生,三個文件

test.php.mine 是沖突前自己的文件

test.php.版本號 是沖突前本地的版本文件

test.php.伺服器的版本號 是沖突後伺服器版本文件

提交的時候,把這三個文件刪除掉就可以提交了。

產生覆蓋的原因。

a),在修改沖突文件test.php時,把別人代碼都刪除掉了,只留下了自己的代碼。這樣就會產生覆蓋了。

b),把test.php.mine中的內容直接到test.php文件,這樣也會產生代碼覆蓋。

上面二種情況都是我親眼看到新手這樣操作的,要避免這二種操作方法。

㈨ svn如何實現文件移動 我想把文件從一個文件夾中移動到另一個文件夾中。怎麼實現

1、如果客戶端是TortoiseSVN的話來,你可以在版本自庫瀏覽器中直接拖動文件,拖動後會自動彈出commit窗口,commit後記得客戶端本地update一下,以保持與伺服器一致。

2、客戶端是TortoiseSVN的話,另一個辦法就是滑鼠右鍵點中這個文件,不要放開,拖動到相應的文件夾,然後放開時有相應的菜單可以選擇。

㈩ 詳細使用TortoiseSVN的步驟

TortoiseSVN是一個SVN的客戶端,下面是我以前不知道從哪復制的大致使用,希望對你有用:
五.客戶端的使用
1.Checkout Repository
首先要Checkout伺服器端的Repository,
所謂的Checkout就是指獲得伺服器端指定的Repository存儲的所有文件。
這個Checkout和Visual Source Safe的Checkout意義完全不一樣,
VSS的Checkout指的是鎖定某個文件,如果你以前使用過VSS,
在學習Subversion時這個問題一定要注意。
Checkout的具體方式是:
在客戶端新建一個空目錄,比如:F:\Project1
在該目錄上單擊右鍵,在彈出式菜單中選中SVN Checkout...,
之後在「URL of Repository」文本框中填入你想要連接的Repository的地址,
這個URL地址可以用瀏覽方式加入。
對於在本教程第二節建立的Repository,
URL應該是「svn://xxx/project1」
(xxx可以是伺服器端主機名,也可以是伺服器端的ip地址)。
然後點OK,會彈出一個認證對話框,
輸入在教程第三節設置的用戶名和密碼。
點OK後就完成了對Repository的Checkout。
比如:在伺服器端Repository中有一個a.txt文件,
那麼Checkout之後F:\Project1目錄下也會出現一個a.txt文件。
在本例中由於伺服器端的Repository還未添加任何文件,
所以在客戶端的F:\Project1下沒有文件被Checkout。
執行Checkout除了會在F:\Project1產生Repository存儲的文件及目錄外,
還會產生了一個「.svn」的隱含目錄,該目錄是由subversion管理的,
不要刪除或者手工改動其中的文件和目錄。
現在F:\Project1中的文件和目錄就叫做Repository的「Working Copy」簡寫「WC」
(這個簡寫...汗)。
以後對Repository中文件和目錄的修改,添加,刪除的操作,
都是通過對這個「Working Copy」的操作實現的。
Checkout執行完後,
會發現F:\Project1目錄的圖標的左下角附著了一個小的狀態圖標
(當F:\Project1目錄中的文件改變時,這個狀態圖標也會隨之變化),
它表示F:\Project1是一個Repository的「Working Copy」,
F:\Project1內的所有文件和目錄也會有類似的狀態圖標。

2.添加文件
將要添加的文件或者目錄拷貝到F:\Project1下,
然後在該文件或目錄上單擊右鍵,TortoiseSVN->Add,點OK。
如果添加了不止一個文件或目錄,
則滑鼠不要在F:\Project1中點中任何文件,
然後單擊右鍵,TortoiseSVN->Add,
就可以添加多個文件或目錄。
這時文件的狀態圖標會發生變化。
Add命令只是告訴本地的「Working Copy」將該文件納入版本管理,
並沒有將這個改變提交到伺服器端,
如果想要別人也看見你對Repository的修改,你需要
在F:\Project1下單擊右鍵,SVN Commit...,
將你所做的修改提交到Repository。
文件的狀態圖標也會更新。
不管你在「Working Copy」內添加、修改、刪除文件後,
要想其他人也看見你的修改,
都必須用Commit命令將所做修改遞交到伺服器端的Repository。

3.修改文件
用文本編輯器或IDE對文件修改後,
文件的狀態圖標會變化,
然後單擊右鍵,SVN Commit...
提交修改,只有當執行Commit提交修改後,
你所作的修改才會反映到伺服器端的Repository中。

4.刪除文件
刪除文件時,選中要刪除的文件或目錄,
單擊右鍵,TortoiseSVN->Delete,提交修改。
注意千萬不要用「Delete」鍵來刪除文件,否則將無法提交你的修改。
這一點對目錄的刪除來說尤為重要。

5.放棄修改
當你添加、修改、刪除文件後,決定放棄修改,
你可以單擊右鍵,TortoiseSVN->Revert,
本地的「Working Copy」中的文件和目錄會恢復到你修改前的狀態。

6.獲取Repository的最新版本
當一個團隊合作開發項目時,
每一個人都在不斷的對Repository進行更新,
你需要不斷的更新自己的「Working Copy」,
以獲取項目最新的文件。
當第一次獲得最新Repository的文件時,
我們用Checkout命令,前面已經介紹了,
以後再獲取最新文件時就不用Checkout了。
而改用Update命令。
接著前面的例子,這時F:\Project1已經成為一個「Working Copy」了
(通過執行Checkout命令),現在其他人已經對Repository進行了修改,
我想將別人的修改反映到我的「Working Copy」中,
具體的方法是:在F:\Project1目錄上單擊右鍵,
SVN Update。這時F:\Project1中的文件就是最新的版本了。
注意,如果當你的「Working Copy」中有被修改的文件,
或者有被刪除的文件,並且還未提交這些修改時,
這些文件在執行Update過程中是不會被更新的。
比如你修改了F:\Project1下a.txt文件,
還未提交修改,那麼,
當你對F:\Project1進行Update時,
a.txt文件是不會更新為Repository上的a.txt文件的。
所以如果想放棄當前的所有修改,
並將F:\Project1下所有文件及目錄更新到最新版本,
應該先對F:\Project1執行Revert命令再執行Update命令。

7.subversion的版本控制模型
當你用subversion進行版本控制時,
Subversion會記錄你對Repository進行的每一次修改(包括添加,修改,刪除等等),
每修改一次Repository都會產生一個新的Revision(修訂版本號),
不同的Revision代表了不同時刻Repository的狀態,
因此我們可以用這個Revision回朔任意時刻Repository的狀態,
就像時間機器一樣,也就是說某一Revision
就是Repository在某一時刻的一個「快照」。
注意:Revision不是針對某一個文件或者目錄,
而是針對整個Repository而言的。
每修改一次Repository,Revision 都會增加1。
Subversion的版本控制模型是一種叫做Copy-Modify-Merge
(拷貝-修改-合並)的模型。
考慮這種情況:
張三和李四是公司同一個部門的同事,
他們共同維護一個文本文件a.txt,
並且對該文件進行版本控制,
因此他們把這個文件放到一個Repository上共同維護該文件。
周一上午9點,張三和李四同時想對a.txt文件進行修改,
於是他們同時從Repository上取得該文件的最新版本(Revision 10),
然後進行修改。過了三分鍾,張三首先完成了修改,
他在該文件的第五行修改了一個單詞的拼寫(將Typo改為Type),
於是張三對修改後的文件執行Commit命令,
將修改提交到伺服器端的Repository中。
這時Repository的Revision變為11。
六分鍾過後,李四也完成了他的修改,
他修改了該文件第十行上的一個單詞拼寫(將He改為She),
於是他也對修改後的文件執行Commit命令,
這時Subversion 在提交修改時會發現,
李四修改的文件是Revision10的a.txt文件,
而不是最新的Revision 11的a.txt文件。
於是,Subversion 提示李四在提交修改前,
應該先將Working Copy更新到最新版本,
李四執行Update命令將Working Copy更新到Revision 11,
這時Subversion會提示已經完成合並,
李四的a.txt文件的第五行的「Typo」已經變為了「Type」,
第十行還是「She」,就是說Subversion已經將張三的修改「合並」到李四的a.txt文件中了。
之後,李四再執行Commit命令,就能將他對第十行的修改(將He改為She)
提交到伺服器端的Repository中了(生成Revision 12)。
但是這種合並在某些情況下會變得復雜一些,
比如:李四對a.txt文件的修改並不是第十行,
而是與張三同樣修改第五行的單詞,
李四將「Typo」改為「Typr」,並且提交修改,
這時Subversion會提示李四在提交修改前,
應該先將Working Copy更新到最新版本,
李四執行Update命令將Working Copy更新到Revision 11,
這時Subversion將Revision11的a.txt文件與
李四修改的a.txt文件進行合並時發現李四修改的同樣是第五行,
於是Subversion就無法判斷是李四的修改(「Tpyr」)
正確還是張三的修改(「Type」)正確,
因為他們都是在Revision10的a.txt基礎上作的修改。
這種情況叫做Conflict(沖突),
a.txt文件的圖標會變成一個黃色三角。
這時,只能依靠李四自己去判斷到底第三行應該修改為「Typr」還是「Type」。
當李四確定修改之後,在a.txt文件上單擊右鍵,TortoiseSVN->Resolved
告訴Subversion已經解決了Conflict。
這時再執行Commit命令就能提交修改(生成Revision 12)。
Subversion 這種控制方式保證了你對文件所作的修改都是基於文件的最新版本。

8.「.svn」目錄
在客戶端Working Copy的每一層目錄中都會有一個「.svn」目錄,
該目錄是Subversion進行管理用的目錄。
不要手動修改其中的文件。
該目錄存儲了Working Copy的一個副本
(實際存儲副本的地方是F:\project1\.svn\text-base目錄),
比如:F:\Project1是一個Working Copy,
該目錄下有兩個文件a.txt和b.txt還有一個子目錄ccc,
子目錄ccc中還有一個d.txt文件。
「.svn」目錄中存儲的是你最近一次執行完Update或者Commit命令之後當前目錄中文件的副本,
比如:F:\project1\.svn\text-base中存儲的a.txt和b.txt
是最近一次執行完Update或者Commit命令之後F:\project1下的a.txt和b.txt的拷貝。
也就是說你所作的修改都是基於「.svn」目錄存儲的那些文件。
這種機制可以讓我們在不連接網路的情況下,
將Working Copy中的文件恢復到修改之前的狀態。
Subversion的Revert命令就是利用了這種機制來實現的。
比如你修改了F:\project1\a.txt文件,
這時你又改變了主意想放棄對該文件的修改,
你可以單擊右鍵,TortoiseSVN->Revert,
修改過的F:\project1\a.txt文件
就會被F:\project1\.svn\text-base中a.txt文件的副本所替代,
使得a.txt恢復到修改前的狀態。
Working Copy中每一個子目錄下都會有一個「.svn」目錄,
並不是只有最上層目錄才有「.svn」目錄。
所以,F:\project1\ccc下也有一個「.svn」目錄,
該目錄存儲的是F:\project1\ccc\d.txt的副本
(d.txt的副本位於F:\project1\ccc\.svn\text-base)。
也就是說每個「.svn」目錄只存儲同級目錄中的「文件」副本,
而不存儲「目錄」副本。「.svn」目錄存有許多重要的內容,
所以前面說在刪除文件或目錄時,
必須用TortoiseSVN->Delete,
而不能用「Delete」鍵來刪除文件或目錄,尤其是對於目錄的刪除。

9.混合版本
Subversion的Working Copy被設計成一種能夠包含不同版本的文件共存的形式。
比如F:\Project1是一個Working Copy,
該目錄下有兩個文件a.txt和b.txt。
執行Update命令,將Working Copy更新到最新版本(Revision 24)。
這時,a.txt和b.txt的Revision都是24
(其實對於單個文件來說並不存在Revision,
Revision是對於整個Repository而言的,
這里所指的是Repository的Revision24所存儲的a.txt和b.txt,
但為了方便而採用這種描述方式,請注意,下同)。
之後,你的同事修改了a.txt,並且提交了修改,
這時Repository的Revision就變成25了。
注意,這時你沒有再次執行Update,
因此你的Working Copy的Revision還是24。
這時你修改了b.txt文件,並提交修改。
因為Revision25並沒有對b.txt文件進行修改,
因此你對b.txt文件的修改是基於b.txt文件最新的版本,
所以不會出現Conflict。
當你提交b.txt的修改後,產生Revision26。
這時你會發現你的Working Copy中的a.txt文件並不是Revision25中的a.txt文件,
它還是Revision24的a.txt文件,而你的b.txt文件是Revision26的b.txt文件。
也就是說當你Commit時,你的Working Copy中只有你提交的那些文件是最新版本,
而其他沒有修改的文件並不會更新為最新版本。
這樣就造成了你的Working Copy由不同的Revision文件所組成
(Revision24的a.txt文件和Revision26的b.txt文件)。
前面說過在提交修改前必須保證你是在文件的最新版本基礎上修改,
如果在這種混合版本的情況下,
怎樣才能知道當前Working Copy中的文件是否為最新版本?
在前面所說的「.svn」目錄中有一個文件名為「entries」的文件,
該文件記錄了當前Working Copy中的每一個文件的Revision,
因此當你Commit時,Subversion會從該文件中取得你提交文件的Revision,
再與Repository的最新Revision一比較就可以知道你修改的文件是否基於該文件的最新版本。

10.文件的鎖定
前面說過Subversion的版本控制模型是一種叫做Copy-Modify-Merge
(拷貝-修改-合並)的模型。
該模型在對文本文件進行版本控制時工作的很好,
但是有些需要進行版本控制的文件並不是文本文件,
比如說圖像文件,這種模型在這種情況下就不能正常工作了,
因為文本文件可以合並,而二進制文件則無法合並。
所以Subversion從1.2開始支持一種叫Lock-Modify-Unlock
(鎖定-修改-解鎖)的版本控制模型。
在Windows下最常用的版本控制軟體Visual Source Safe(VSS)就是採用這種模型。
這種模型要求在對一個文件修改前首先要鎖定這個文件,
然後才能修改,這時,別人將無法對該文件進行修改,
當修改完後再釋放鎖,使其他人可以對該文件進行鎖定,然後修改。
鎖定文件的方法是:TortoiseSVN->Get Lock...再點OK按鈕,
這時就完成了對文件的鎖定。
這時,如果其他人想對文件進行鎖定時,
Subversion會對他提示該文件已經被別人鎖定。
當你修改完文件後,然後單擊右鍵,SVN Commit...,
將修改提交,默認情況下,提交的時候就會對該文件解鎖,
如果你想仍然鎖定該文件,請在commit時彈出的對話框中選中keep lock復選框。

11.文件的附加屬性
在Subversion中,每個文件可以擁有一種叫做附加屬性的東西。
附加屬性描述了該文件所擁有的一些特性。
Subversion已經預定義了一些附加屬性
(這里只是指Subversion已經定義了一些附加屬性的「名稱」,
並不是指已經將這些屬性附加在文件上了,
比如默認情況下文本文件一開始不含任何屬性,
直到人為的對該文件添加附加屬性),
並且你可以對文件添加自定義的屬性。
Subversion對待附加屬性就像對待文件內容一樣,
當修改了一個文件的附加屬性(添加,改變,刪除附加屬性),
即使沒有對文件的內容進行修改,
同樣可以Commit該文件,就像更改了文件內容那樣,
Repository也會生成新的Revision,
所以從某種意義上來說,
Subversion不區別對待文件的附加屬性的修改和文件的內容的修改,
文件的附加屬性可以看成是一種特殊的文件內容。
Subversion預定義了若干個附加屬性,
這里只討論「svn:needs-lock」屬性,
因為它與我們上面的文件鎖定會產生的一個問題有關。
其他的屬性可以參考Subversion自帶的幫助文檔。
考慮這種情況,
張三和李四同時想對一個圖片文件a.jpg作修改,
張三在修改時先將該文件鎖定,然後進行修改,
同時李四也開始對該文件進行修改,
但李四忘記了對非文本文件進行修改時應該先鎖定該文件。
張三首先對該文件修改完畢,於是張三向伺服器提交了他的修改。
之後,李四也完成了修改,當他提交修改時,
Subversion提示李四的文件版本不是最新的,
在Commit之前應先更新a.jpg到最新版本,
由於圖片文件無法合並,
這就意味著張三和李四之間必定有一個人的修改會作廢。
應用「svn:needs-lock」屬性可以避免這個問題。
當一個文件擁有「svn:needs-lock」屬性時,
該文件在沒有鎖定時,文件的圖標是灰色的,
表示該文件是一個只讀文件(該文件的Windows只讀屬性的復選框為選中),
這個灰色的圖標就會提醒想對該文件進行修改的人,
在修改該文件之前應該首先鎖定該文件。
鎖定該文件之後,文件的只讀屬性就會去掉了,
一旦釋放掉鎖,文件的圖標又會變成灰色,
文件也會變成只讀的了。
李四在這種情況下就會避免在沒有鎖定文件時對文件進行修改。
對非文本文件添加「svn:needs-lock」
屬性應該在將該文件第一次添加到Repository時就設置,
當然,一個文件可以在任意時刻添加附加屬性,
這樣做是為了減少李四所遇到的那個問題發生的幾率。
具體的方法是:
首先將a.jpg文件拷貝到Working Copy中,
然後在該文件上單擊右鍵,
TortoiseSVN->Add,告訴Subversion要將該文件納入版本控制,
接著在該文件上單擊右鍵並選中屬性,
在彈出的屬性對話框中選中Subversion頁。
在下拉框中選中「svn:needs-lock」,
並在下面的文本框中填入「*」
(其實這里填什麼都無所謂,只要文件有「svn:needs-lock」附加屬性就行),
之後點Set按鈕,「svn:needs-lock」附加屬性就設置好了。
然後執行Commit命令提交修改。
這時當其他人執行Update時,
a.jpg就會添加到他們的Working Copy中,
並且文件的附加屬性也會隨文件一起被得到。
可以看到a.jpg此時的圖標就是灰色的,
文件的Windows屬性也是只讀的。

12.回到以前的版本
由於Subversion會記錄你對Repository的每一次修改,
因此能夠很容易的獲得Repository以前某一時刻的狀態。
比如:現在Repository的最新Revision是56,
這時我想看看Repository在Revision24時的狀態,
可以在本地的Working Copy中單擊右鍵,
TortoiseSVN->Update to Revision...,
然後輸入你想要回復到的Revision號,點OK按鈕。
回到以前的版本還有一種情況是我想將Repository的
最新Revision的狀態與以前某一個Revision的狀態一模一樣,
上面那種方法就不適合,
上面的那種方法只是將本地的Working Copy回復到以前的狀態,
而伺服器端的Repository並沒有回到以前的狀態。
將Repository的最新Revison的狀態回復到以前某個Revision的狀態具體的方法是:

先執行Update命令將Working Copy更新到最新的Revision,
然後在Working Copy中單擊右鍵,
TortoiseSVN->Show Log,
彈出的Log Messages窗口中會顯示該Repository的所有Revision,
選中最新的Revision,之後按住Shift鍵,
再單擊你想回復到的Revision+1的那個Revision
(比如Repository的最新Revision是30,
你想將Repository的狀態回復到Revision16,
那麼就選中Revision30,再按住Shift鍵,
選中Revision17,
就是說選中Revision17到Revision30之間的所有Revision)。
然後在選中的Revision上單擊右鍵,
選中「Revert changes from these revision」。
再點Yes按鈕,就可以將Working Copy的狀態回復到目標Revision。
注意,此時只是Working Copy回復到目標Revision,
之後應該用Commit提交修改,
這樣Repository最新狀態就與目標Revision的狀態一樣了。
這兩種回復到以前版本的方式截然不同,
第一種方式是將整個Working Copy回復到某個Revision,
也就是說這種方式Working Copy中的「.svn」目錄所存的文件副本也與目標Revision的一模一樣,
如果這時你沒有修改文件,你將不能執行Commit命令。
而第二種方式客戶端Working Copy中的
「.svn」目錄所存的副本始終是最新的Revision的文件副本
(這里我們基於一個假設:在Update之後沒有其他人對Repository做修改)。
這種方式就像是我們自己手工將Working Copy的文件狀態修改為目標Revision,
在修改之後提交修改一樣。

13.查看修改
有時我們對Working Copy的許多文件進行了修改,
這些文件位於不同的子目錄,我們就可以在Working Copy的最上層目錄單擊右鍵,
TortoiseSVN->Check For Modifications,
彈出的對話框就會顯示你所做的所有修改明細。
還有一種情況是我們的Working Copy已經很久沒有執行Update命令,
我們想看看Working Copy中有哪些文件已經發生修改了,
這時就可以在Working Copy的最上層目錄單擊右鍵,
TortoiseSVN->Check For Modifications,
在彈出的對話框點擊Check Repository按鈕後,
就會顯示伺服器端已經修改了的文件。
該方法還有一個用途就是查看文件的鎖定,
當你想鎖定一個文件時,你想先看看這個文件有沒有被別人鎖定,
點擊Check Repository按鈕會顯示伺服器端Repository所有被鎖定的文件,
如果你想鎖定的文件不在這裡面,那就說明該文件目前沒有人鎖定。

閱讀全文

與svn文件夾使用方法相關的資料

熱點內容
app拖動效果 瀏覽:2
家裡面網路很差是什麼原因 瀏覽:714
tsnme 瀏覽:605
機器和數據科學哪個好 瀏覽:96
有沒有那網址直接可以在線看片 瀏覽:350
樓上偷窺樓下韓國電影 瀏覽:533
海災難電影中國 瀏覽:395
香港在線 瀏覽:499
大數據採集平台設計 瀏覽:77
韓國強奸經典三及電影有哪些 瀏覽:9
優酷默認的文件在哪裡 瀏覽:556
建立網站教程 瀏覽:946
linux怎樣修改帶括弧的文件 瀏覽:408
大尺度同性 瀏覽:150
主角獲得十二祖巫傳承的小說 瀏覽:780
你昨天晚上看了什麼電影的英文 瀏覽:981
穿越長徵到建國的小說 瀏覽:676
來賓賬戶不能移動桌面文件 瀏覽:667
殺戮之地柬埔寨免費 瀏覽:781
妓女給孩子哺乳的電影 瀏覽:644

友情鏈接