国产超薄丝袜足底脚交国产_少妇愉情理伦片丰满丰满_一区二区三区中文人妻制服_久久久久88色偷偷免费_色婷婷久久久swag精品

萬能百科  > 創(chuàng)業(yè)專題百科?  > 

關(guān)于svn使用教程的信息

2022-10-13   

Revision25并沒有對b.txt文件進行修改,

因此你對b.txt文件的修改是基于b.txt文件最新的版本,

所以不會出現(xiàn)Conflict。

當(dāng)你提交b.txt的修改后,產(chǎn)生Revision26。

這時你會發(fā)現(xiàn)你的Working Copy中的a.txt文件并不是Revision25中的a.txt文件,

它還是Revision24的a.txt文件,而你的b.txt文件是Revision26的b.txt文件。

也就是說當(dāng)你Commit時,你的Working Copy中只有你提交的那些文件是最新版本,

而其他沒有修改的文件并不會更新為最新版本。

這樣就造成了你的Working Copy由不同的Revision文件所組成

(Revision24的a.txt文件和Revision26的b.txt文件)。

前面說過在提交修改前必須保證你是在文件的最新版本基礎(chǔ)上修改,

如果在這種混合版本的情況下,

怎樣才能知道當(dāng)前Working Copy中的文件是否為最新版本?

在前面所說的“.svn”目錄中有一個文件名為“entries”的文件,

該文件記錄了當(dāng)前Working Copy中的每一個文件的Revision,

因此當(dāng)你Commit時,Subversion會從該文件中取得你提交文件的Revision,

再與Repository的最新Revision一比較就可以知道你修改的文件是否基于該文件的最新版本。

10.文件的鎖定

前面說過Subversion的版本控制模型是一種叫做Copy-Modify-Merge

(拷貝-修改-合并)的模型。

該模型在對文本文件進行版本控制時工作的很好,

但是有些需要進行版本控制的文件并不是文本文件,

比如說圖像文件,這種模型在這種情況下就不能正常工作了,

因為文本文件可以合并,而二進制文件則無法合并。

所以Subversion從1.2開始支持一種叫Lock-Modify-Unlock

(鎖定-修改-解鎖)的版本控制模型。

在Windows下最常用的版本控制軟件Visual Source Safe(VSS)就是采用這種模型。

這種模型要求在對一個文件修改前首先要鎖定這個文件,

然后才能修改,這時,別人將無法對該文件進行修改,

當(dāng)修改完后再釋放鎖,使其他人可以對該文件進行鎖定,然后修改。

鎖定文件的方法是:TortoiseSVN-Get Lock...再點OK按鈕,

這時就完成了對文件的鎖定。

這時,如果其他人想對文件進行鎖定時,

Subversion會對他提示該文件已經(jīng)被別人鎖定。

當(dāng)你修改完文件后,然后單擊右鍵,SVN Commit...,

將修改提交,默認(rèn)情況下,提交的時候就會對該文件解鎖,

如果你想仍然鎖定該文件,請在commit時彈出的對話框中選中keep lock復(fù)選框。

11.文件的附加屬性

在Subversion中,每個文件可以擁有一種叫做附加屬性的東西。

附加屬性描述了該文件所擁有的一些特性。

Subversion已經(jīng)預(yù)定義了一些附加屬性

(這里只是指Subversion已經(jīng)定義了一些附加屬性的“名稱”,

并不是指已經(jīng)將這些屬性附加在文件上了,

比如默認(rèn)情況下文本文件一開始不含任何屬性,

直到人為的對該文件添加附加屬性),

并且你可以對文件添加自定義的屬性。

Subversion對待附加屬性就像對待文件內(nèi)容一樣,

當(dāng)修改了一個文件的附加屬性(添加,改變,刪除附加屬性),

即使沒有對文件的內(nèi)容進行修改,

同樣可以Commit該文件,就像更改了文件內(nèi)容那樣,

Repository也會生成新的Revision,

所以從某種意義上來說,

Subversion不區(qū)別對待文件的附加屬性的修改和文件的內(nèi)容的修改,

文件的附加屬性可以看成是一種特殊的文件內(nèi)容。

Subversion預(yù)定義了若干個附加屬性,

這里只討論“svn:needs-lock”屬性,

因為它與我們上面的文件鎖定會產(chǎn)生的一個問題有關(guān)。

其他的屬性可以參考Subversion自帶的幫助文檔。

考慮這種情況,

張三和李四同時想對一個圖片文件a.jpg作修改,

張三在修改時先將該文件鎖定,然后進行修改,

同時李四也開始對該文件進行修改,

但李四忘記了對非文本文件進行修改時應(yīng)該先鎖定該文件。

張三首先對該文件修改完畢,于是張三向服務(wù)器提交了他的修改。

之后,李四也完成了修改,當(dāng)他提交修改時,

Subversion提示李四的文件版本不是最新的,

在Commit之前應(yīng)先更新a.jpg到最新版本,

由于圖片文件無法合并,

這就意味著張三和李四之間必定有一個人的修改會作廢。

應(yīng)用“svn:needs-lock”屬性可以避免這個問題。

當(dāng)一個文件擁有“svn:needs-lock”屬性時,

該文件在沒有鎖定時,文件的圖標(biāo)是灰色的,

表示該文件是一個只讀文件(該文件的Windows只讀屬性的復(fù)選框為選中),

這個灰色的圖標(biāo)就會提醒想對該文件進行修改的人,

在修改該文件之前應(yīng)該首先鎖定該文件。

鎖定該文件之后,文件的只讀屬性就會去掉了,

一旦釋放掉鎖,文件的圖標(biāo)又會變成灰色,

文件也會變成只讀的了。

李四在這種情況下就會避免在沒有鎖定文件時對文件進行修改。

對非文本文件添加“svn:needs-lock”

屬性應(yīng)該在將該文件第一次添加到Repository時就設(shè)置,

當(dāng)然,一個文件可以在任意時刻添加附加屬性,

這樣做是為了減少李四所遇到的那個問題發(fā)生的幾率。

具體的方法是:

首先將a.jpg文件拷貝到Working Copy中,

然后在該文件上單擊右鍵,

TortoiseSVN-Add,告訴Subversion要將該文件納入版本控制,

接著在該文件上單擊右鍵并選中屬性,

在彈出的屬性對話框中選中Subversion頁。

在下拉框中選中“svn:needs-lock”,

并在下面的文本框中填入“*”

(其實這里填什么都無所謂,只要文件有“svn:needs-lock”附加屬性就行),

之后點Set按鈕,“svn:needs-lock”附加屬性就設(shè)置好了。

然后執(zhí)行Commit命令提交修改。

這時當(dāng)其他人執(zhí)行Update時,

a.jpg就會添加到他們的Working Copy中,

并且文件的附加屬性也會隨文件一起被得到。

可以看到a.jpg此時的圖標(biāo)就是灰色的,

文件的Windows屬性也是只讀的。

12.回到以前的版本

由于Subversion會記錄你對Repository的每一次修改,

因此能夠很容易的獲得Repository以前某一時刻的狀態(tài)。

比如:現(xiàn)在Repository的最新Revision是56,

這時我想看看Repository在Revision24時的狀態(tài),

可以在本地的Working Copy中單擊右鍵,

TortoiseSVN-Update to Revision...,

然后輸入你想要回復(fù)到的Revision號,點OK按鈕。

回到以前的版本還有一種情況是我想將Repository的

最新Revision的狀態(tài)與以前某一個Revision的狀態(tài)一模一樣,

上面那種方法就不適合,

上面的那種方法只是將本地的Working Copy回復(fù)到以前的狀態(tài),

而服務(wù)器端的Repository并沒有回到以前的狀態(tài)。

將Repository的最新Revison的狀態(tài)回復(fù)到以前某個Revision的狀態(tài)具體的方法是:

先執(zhí)行Update命令將Working Copy更新到最新的Revision,

然后在Working Copy中單擊右鍵,

TortoiseSVN-Show Log,

彈出的Log Messages窗口中會顯示該Repository的所有Revision,

選中最新的Revision,之后按住Shift鍵,

再單擊你想回復(fù)到的Revision+1的那個Revision

(比如Repository的最新Revision是30,

你想將Repository的狀態(tài)回復(fù)到Revision16,

那么就選中Revision30,再按住Shift鍵,

選中Revision17,

就是說選中Revision17到Revision30之間的所有Revision)。

然后在選中的Revision上單擊右鍵,

選中“Revert changes from these revision”。

再點Yes按鈕,就可以將Working Copy的狀態(tài)回復(fù)到目標(biāo)Revision。

注意,此時只是Working Copy回復(fù)到目標(biāo)Revision,

之后應(yīng)該用Commit提交修改,

這樣Repository最新狀態(tài)就與目標(biāo)Revision的狀態(tài)一樣了。

這兩種回復(fù)到以前版本的方式截然不同,

第一種方式是將整個Working Copy回復(fù)到某個Revision,

也就是說這種方式Working Copy中的“.svn”目錄所存的文件副本也與目標(biāo)Revision的一模一樣,

如果這時你沒有修改文件,你將不能執(zhí)行Commit命令。

而第二種方式客戶端Working Copy中的

“.svn”目錄所存的副本始終是最新的Revision的文件副本

(這里我們基于一個假設(shè):在Update之后沒有其他人對Repository做修改)。

這種方式就像是我們自己手工將Working Copy的文件狀態(tài)修改為目標(biāo)Revision,

在修改之后提交修改一樣。

13.查看修改

有時我們對Working Copy的許多文件進行了修改,

這些文件位于不同的子目錄,我們就可以在Working Copy的最上層目錄單擊右鍵,

TortoiseSVN-Check For Modifications,

彈出的對話框就會顯示你所做的所有修改明細(xì)。

還有一種情況是我們的Working Copy已經(jīng)很久沒有執(zhí)行Update命令,

我們想看看Working Copy中有哪些文件已經(jīng)發(fā)生修改了,

這時就可以在Working Copy的最上層目錄單擊右鍵,

TortoiseSVN-Check For Modifications,

在彈出的對話框點擊Check Repository按鈕后,

就會顯示服務(wù)器端已經(jīng)修改了的文件。

該方法還有一個用途就是查看文件的鎖定,

當(dāng)你想鎖定一個文件時,你想先看看這個文件有沒有被別人鎖定,

點擊Check Repository按鈕會顯示服務(wù)器端Repository所有被鎖定的文件,

如果你想鎖定的文件不在這里面,那就說明該文件目前沒有人鎖定。

詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。

標(biāo)簽