影音先锋AⅤ天堂资源站,13小箩利洗澡无码视频APP,午夜理论片日本中文在线,最近新免费韩国日本电影

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

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

2022-10-13   

Revision25并沒(méi)有對(duì)b.txt文件進(jìn)行修改,

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

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

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

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

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

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

而其他沒(méi)有修改的文件并不會(huì)更新為最新版本。

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

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

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

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

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

在前面所說(shuō)的“.svn”目錄中有一個(gè)文件名為“entries”的文件,

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

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

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

10.文件的鎖定

前面說(shuō)過(guò)Subversion的版本控制模型是一種叫做Copy-Modify-Merge

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

該模型在對(duì)文本文件進(jìn)行版本控制時(shí)工作的很好,

但是有些需要進(jìn)行版本控制的文件并不是文本文件,

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

因?yàn)槲谋疚募梢院喜ⅲM(jìn)制文件則無(wú)法合并。

所以Subversion從1.2開(kāi)始支持一種叫Lock-Modify-Unlock

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

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

這種模型要求在對(duì)一個(gè)文件修改前首先要鎖定這個(gè)文件,

然后才能修改,這時(shí),別人將無(wú)法對(duì)該文件進(jìn)行修改,

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

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

這時(shí)就完成了對(duì)文件的鎖定。

這時(shí),如果其他人想對(duì)文件進(jìn)行鎖定時(shí),

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

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

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

如果你想仍然鎖定該文件,請(qǐng)?jiān)赾ommit時(shí)彈出的對(duì)話框中選中keep lock復(fù)選框。

11.文件的附加屬性

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

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

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

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

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

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

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

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

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

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

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

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

Repository也會(huì)生成新的Revision,

所以從某種意義上來(lái)說(shuō),

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

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

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

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

因?yàn)樗c我們上面的文件鎖定會(huì)產(chǎn)生的一個(gè)問(wèn)題有關(guān)。

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

考慮這種情況,

張三和李四同時(shí)想對(duì)一個(gè)圖片文件a.jpg作修改,

張三在修改時(shí)先將該文件鎖定,然后進(jìn)行修改,

同時(shí)李四也開(kāi)始對(duì)該文件進(jìn)行修改,

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

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

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

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

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

由于圖片文件無(wú)法合并,

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

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

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

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

表示該文件是一個(gè)只讀文件(該文件的Windows只讀屬性的復(fù)選框?yàn)檫x中),

這個(gè)灰色的圖標(biāo)就會(huì)提醒想對(duì)該文件進(jìn)行修改的人,

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

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

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

文件也會(huì)變成只讀的了。

李四在這種情況下就會(huì)避免在沒(méi)有鎖定文件時(shí)對(duì)文件進(jìn)行修改。

對(duì)非文本文件添加“svn:needs-lock”

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

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

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

具體的方法是:

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

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

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

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

在彈出的屬性對(duì)話框中選中Subversion頁(yè)。

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

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

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

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

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

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

a.jpg就會(huì)添加到他們的Working Copy中,

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

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

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

12.回到以前的版本

由于Subversion會(huì)記錄你對(duì)Repository的每一次修改,

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

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

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

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

TortoiseSVN-Update to Revision...,

然后輸入你想要回復(fù)到的Revision號(hào),點(diǎn)OK按鈕。

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

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

上面那種方法就不適合,

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

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

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

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

然后在Working Copy中單擊右鍵,

TortoiseSVN-Show Log,

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

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

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

(比如Repository的最新Revision是30,

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

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

選中Revision17,

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

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

選中“Revert changes from these revision”。

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

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

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

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

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

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

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

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

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

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

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

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

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

13.查看修改

有時(shí)我們對(duì)Working Copy的許多文件進(jìn)行了修改,

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

TortoiseSVN-Check For Modifications,

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

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

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

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

TortoiseSVN-Check For Modifications,

在彈出的對(duì)話框點(diǎn)擊Check Repository按鈕后,

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

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

當(dāng)你想鎖定一個(gè)文件時(shí),你想先看看這個(gè)文件有沒(méi)有被別人鎖定,

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

如果你想鎖定的文件不在這里面,那就說(shuō)明該文件目前沒(méi)有人鎖定。

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

標(biāo)簽

<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>