svn的使用的全部流程svn詳細安裝方法
svn的使用的全部流程svn詳細安裝方法
②運行svn checkout命令,命令格式如下:格式;③工作副本;運行checkout命令后進入MyERP目錄,看到里面什么都沒有。真的什么都沒有嗎?不是的。檢出命令會在這一目錄下創(chuàng)建一個隱藏目錄.svn,用來保存與服務(wù)器交互的重要信息,其中包括從服務(wù)器端取回的最新版本信息、文件狀態(tài)、更新時間等。SVN正是以此為依據(jù)判斷當(dāng)前目錄中文件的狀態(tài)。所以這個隱藏目錄千萬不要刪除或修改其中的內(nèi)容——完全無視它的存在吧。如果服務(wù)器端保存的文件可以視為一個“正本”,那么每個開發(fā)人員檢出到本地目錄的文件可以視為“副本”,通常稱為工作副本。提交;①進入D:\;DevWorkSpace\;SVNSpace\;MyERP目錄。②創(chuàng)建一個文件test.txt。
導(dǎo)讀②運行svn checkout命令,命令格式如下:格式;③工作副本;運行checkout命令后進入MyERP目錄,看到里面什么都沒有。真的什么都沒有嗎?不是的。檢出命令會在這一目錄下創(chuàng)建一個隱藏目錄.svn,用來保存與服務(wù)器交互的重要信息,其中包括從服務(wù)器端取回的最新版本信息、文件狀態(tài)、更新時間等。SVN正是以此為依據(jù)判斷當(dāng)前目錄中文件的狀態(tài)。所以這個隱藏目錄千萬不要刪除或修改其中的內(nèi)容——完全無視它的存在吧。如果服務(wù)器端保存的文件可以視為一個“正本”,那么每個開發(fā)人員檢出到本地目錄的文件可以視為“副本”,通常稱為工作副本。提交;①進入D:\;DevWorkSpace\;SVNSpace\;MyERP目錄。②創(chuàng)建一個文件test.txt。
![](https://img.51dongshi.com/20250108/wz/18388994152.jpg)
使用命令行模式訪問SVN服務(wù)器檢出①首先進入自己的工作目錄,例如:D:\DevWorkSpace\SVNSpace②運行svn checkout命令,命令格式如下格式③工作副本運行checkout命令后進入MyERP目錄,看到里面什么都沒有。真的什么都沒有嗎?不是的。檢出命令會在這一目錄下創(chuàng)建一個隱藏目錄.svn,用來保存與服務(wù)器交互的重要信息,其中包括從服務(wù)器端取回的最新版本信息、文件狀態(tài)、更新時間等。SVN正是以此為依據(jù)判斷當(dāng)前目錄中文件的狀態(tài)。所以這個隱藏目錄千萬不要刪除或修改其中的內(nèi)容——完全無視它的存在吧。如果服務(wù)器端保存的文件可以視為一個“正本”,那么每個開發(fā)人員檢出到本地目錄的文件可以視為“副本”,通常稱為工作副本。提交①進入D:\DevWorkSpace\SVNSpace\MyERP目錄②創(chuàng)建一個文件test.txt③執(zhí)行svn commit命令,運行結(jié)果是說明一個文件必須納入版本控制才可以提交到服務(wù)器端。④執(zhí)行svn add命令,將test.txt納入版本控制⑤再次執(zhí)行svn commit命令此時要求附加日志信息⑥使用-m參數(shù)附加日志信息原因是沒有權(quán)限⑦暫時先開啟匿名訪問權(quán)限[1]進入對應(yīng)的版本庫目錄下的conf目錄:D:\DevRepository\Subversion\ERP\conf[2]打開svnserve.conf[3]將第19行的# anon-access = read改為anon-access = write,也就是去掉“# ”,將read改為write。注意前面不要留空格,一定要頂格寫。[4]不需要重啟SVN服務(wù),甚至命令行窗口都不需要重新打開。⑧重新執(zhí)行提交命令說明提交成功了。⑨其實svn commit命令最后可以不指定具體文件,此時表示提交當(dāng)前工作副本中的所有修改。更新①將服務(wù)器端文件檢出到一個新的目錄,模擬另外一個終端②回到MyERP目錄,對test.txt文件修改后提交。③進入TomERP目錄④執(zhí)行svn update命令這樣我們就可以在TomERP目錄下看到MyERP目錄下提交的修改。⑤思考:更新和檢出的相同點和不同點分別是什么?工作副本中文件的幾種狀態(tài)①沒有修改,現(xiàn)行版本本檔案在工作目錄中沒有被修改,而且自當(dāng)前版本之后,其他終端也沒有任何該文件的修改被提交到服務(wù)器,即當(dāng)前工作副本的版本和服務(wù)器端最新版本是一致的。對它執(zhí)行svn commit和svn update都不會發(fā)生任何事。②本地修改, 現(xiàn)行版本這個文件被修改過,但這個修改還沒有提交到服務(wù)器,而且自當(dāng)前版本之后,其他終端也沒有任何該文件的修改被提交到服務(wù)器,所以當(dāng)前工作副本的版本和服務(wù)器端最新版本仍然是一致的。由于有尚未送交回去的本地修改,所以對它的 svn commit會成功提交你的修改,而 svn update 則不會作任何事。③沒有修改,過時版本這個文件沒有修改,但是版本庫中有其他終端提交的修改。此時當(dāng)前工作副本的版本比服務(wù)器端的版本落后了,我們稱之為“過時”。對當(dāng)前文件的 svn commit 不會發(fā)生任何事,而 svn update 會讓工作目錄中的文件更新至最新版本。④本地修改,過時版本服務(wù)器端存在沒有更新到本地的修改,導(dǎo)致當(dāng)前版本過時。如果這個文件在本地有未提交的修改,則無法提交,對它執(zhí)行svn commit 會產(chǎn)生“out-of-date”錯誤。此時應(yīng)該先嘗試更新本地文件。更新時SVN會嘗試將服務(wù)器端的更新與本地文件進行合并,合并的結(jié)果有兩種可能:一個是服務(wù)器端和本地修改位于文件的不同位置,合并成功;另一個是服務(wù)器端的修改正好和本地修改位于同一個位置,發(fā)生沖突。將工作副本整體回復(fù)到某一個歷史版本①假設(shè)當(dāng)前版本為12,想要取回版本9②執(zhí)行svn update命令③這里需要注意的是,SVN版本號并不是對某一個文件進行編號,而是對應(yīng)整個版本庫總體狀態(tài)的一個“快照”,取回某個版本不是取回版本號對應(yīng)的某個文件,而是整個項目的一個快照。4.6 將某個文件恢復(fù)到某個版本中的狀態(tài),同時不涉及其他文件①假設(shè)想要取回pp.txt在版本10時的狀態(tài)②執(zhí)行svn update命令③綜合這兩個例子,我們可以認為版本號和文件名構(gòu)成了一個橫縱坐標(biāo)系,通過文件路徑和版本號定位其在某一個時刻的狀態(tài)。單一版本庫權(quán)限配置匿名訪問:前已述及授權(quán)訪問①要設(shè)置授權(quán)訪問就需要創(chuàng)建用戶,并為用戶設(shè)定權(quán)限②打開授權(quán)訪問的配置[1]打開D:\DevRepository\Subversion\ERP\conf\svnserve.conf[2]將第19行anon-access = write注釋掉:# anon-access = write表明該版本庫不接受匿名訪問[3]將第20行# auth-access = write注釋打開:auth-access = write表明該版本庫使用授權(quán)訪問[4]將第27行注釋打開:password-db = passwd表明使用同目錄下的passwd文件保存用戶信息[5]將第36行注釋打開:authz-db = authz表明使用同目錄下的authz文件保存權(quán)限信息[6]打開passwd文件創(chuàng)建用戶[7]打開authz文件:#后面注釋的是例子創(chuàng)建用戶組指定路徑,給用戶和用戶組授權(quán)權(quán)限的繼承性:父目錄設(shè)置的權(quán)限,對子目錄同樣有效——除非子目錄進行了更為具體的設(shè)定這個例子表示當(dāng)前版本庫下的subDir目錄只有userOther有讀寫權(quán)限,其它用戶無任何權(quán)限多版本庫共享配置在版本庫根目錄D:\DevRepository\Subversion下創(chuàng)建commConf目錄將未修改的authz和passwd文件拷貝到commConf目錄下修改需要設(shè)置權(quán)限的版本庫的svnserve.conf文件①password-db = ../../commConf/passwd②authz-db = ../../commConf/authz6.4 在password中創(chuàng)建用戶在authz中針對不同版本庫為不同用戶授予權(quán)限# [repository:/baz/fuz]# @harry_and_sally = rw# * = r[ERP:/]userERP = rw* =[OA:/]userOA = rw* =[CRM:/]userCRM = rw* =查看工作副本信息使用svn info命令執(zhí)行效果如下7.3 對某一個文件使用svn info命令查看目錄或文件日志信息使用svn log命令[注意:使用這個命令的前提是設(shè)置匿名訪問為none,即:anon-access = none,否則會出現(xiàn)“svn: E220001: 條目不可讀”錯誤]在Eclipse中安裝SVN客戶端插件Eclipse插件應(yīng)用市場在Eclipse中訪問Eclipse Marketplace Client可以搜索Subversion,下載插件,按提示安裝即可。使用壓縮包如果不能聯(lián)網(wǎng)可以使用下載好的插件壓縮包eclipse_svn_site-1.10.5.zip,這個壓縮包是從http://subclipse.tigris.org/網(wǎng)站(subclipse是這款Eclipse插件的名稱)上下載的。安裝方法是:①解壓eclipse_svn_site-1.10.5.zip中的features和plugins這兩個目錄②將features和plugins復(fù)制到Eclipse安裝目錄/dropins/eclipse_svn_site-1.10.5下③重啟Eclipse④進入Eclipse依次打開Window→Preferences→Team→SVN,看到如下界面即說明SVN插件安裝成功創(chuàng)建資源庫位置①切換到透視圖SVN資源庫研究②創(chuàng)建資源庫位置此時可以查看版本庫中的文件及目錄結(jié)構(gòu)檢出①檢出分兩種情況從服務(wù)器端獲取到的是一些零散的文件,不能作為項目檢出此時會彈出一個新建項目向?qū)В詴@樣是因為我們需要創(chuàng)建一個項目來保存從服務(wù)器端取回的文件從服務(wù)器端獲取到的是一個完整的項目,例如此時必須作為項目檢出項目從服務(wù)器檢出后,會成為一個工作副本,根目錄下會自動創(chuàng)建.svn隱藏目錄提交①新創(chuàng)建文件后,文件圖標(biāo)上會以“?”標(biāo)識,表示該文件尚未納入版本控制②在新創(chuàng)建的文件上點右鍵→Team→添加至版本控制,這樣文件圖標(biāo)上會顯示“+”,表示當(dāng)前文件已納入版本控制,但還未提交至服務(wù)器。③在要提交的文件上點右鍵→Team→提交...會提交文件,在彈出的對話框中可以不填寫日志。文件提交后,圖標(biāo)會變?yōu)椤敖鹕膱A柱體”表示當(dāng)前文件的版本和服務(wù)器端一致。④文件修改后圖標(biāo)會變?yōu)椤?”,表示當(dāng)前文件或目錄包含未提交的修改。更新①更新整個項目時可以在項目上點右鍵→Team→更新②更新某個具體的文件時,可以在文件上點右鍵→Team→更新共享項目①在Eclipse中創(chuàng)建的新項目想要發(fā)布到SVN服務(wù)器端,可以通過“共享”項目實現(xiàn)②在項目上點右鍵→Team→Share Project...→選擇一種版本控制工具選擇一個資源庫位置切換到Team Synchronizing透視圖,選擇項目中要提交的內(nèi)容,通常是項目中的全部內(nèi)容恢復(fù)歷史版本①在需要回復(fù)的文件上點右鍵→Team→顯示資源歷史記錄→得到如下界面②選擇某一個歷史記錄點右鍵→獲取內(nèi)容。文件就會恢復(fù)到指定版本的狀態(tài),同時圖標(biāo)變?yōu)椤?”。③獲取歷史記錄時,如果出現(xiàn)如下錯誤提示可以通過將對應(yīng)版本庫中的svnserve.conf文件中的anon-access設(shè)置為none解決。解決沖突①什么情況下會發(fā)生沖突兩個開發(fā)人員,Harry和Sally,分別從服務(wù)器端下載了文件A。Harry修改之后,A變成了A’,Sally修改之后,A變成了A’’。Harry先一步提交,使服務(wù)器端文件的版本也變成了A’Sally本地的文件A’’已經(jīng)過時了,此時她已無法提交文件,服務(wù)器會要求她先進行一次更新操作。此時Sally的更新操作有兩種可能(1)Sally所做的修改與Harry不是同一個位置,更新操作嘗試合并文件成功。(2)Sally所做的修改與Harry恰好是同一個位置,更新操作嘗試合并文件失敗,發(fā)生沖突。發(fā)生沖突后,本地工作副本會發(fā)生如下變化(1)文件A中的內(nèi)容發(fā)生如下改變public static void main(String[] args) {System.out.println("Edit By Command!");System.out.println("Edit By Command!");<<<<<<< .mineSystem.out.println("Edit By Eclipse!");=======System.out.println("Edit By Command!New Edit");>>>>>>> .r14System.out.println("Edit By Command!");System.out.println("Edit By Command!");}其中,從<<<<<< .mine到=======之間是發(fā)生沖突時本地副本的內(nèi)容。從=======到>>>>>>> .r14是發(fā)生沖突時服務(wù)器端的最新內(nèi)容。注意這里r后面的數(shù)字是發(fā)生沖突時服務(wù)器端的版本號,有可能是任何整數(shù)值,r14只是一個例子。同時文件圖標(biāo)變成一個“黃色的!”。(2)與沖突文件同目錄下新增文件,擴展名為.mine,其內(nèi)容是發(fā)生沖突時本地副本的文件內(nèi)容。(3)與沖突文件同目錄下新增文件,擴展名為.r小版本號,例如MyCRM.java.r13,其內(nèi)容是沖突發(fā)生之前,服務(wù)器端的文件內(nèi)容,可以作為解決沖突的參照。(4)與沖突文件同目錄下新增文件,擴展名為.r大版本號,例如MyCRM.java.r14,其內(nèi)容是沖突發(fā)生時,服務(wù)器端的文件內(nèi)容。②解決沖突(1)在沖突文件上點右鍵→Team→編輯沖突...→出現(xiàn)如下界面以對比的方式將本地內(nèi)容與沖突內(nèi)容顯示出來,其中左側(cè)為本地內(nèi)容,右側(cè)為沖突內(nèi)容。其中本地內(nèi)容是可以修改的。(2)根據(jù)需要和實際情況將本地內(nèi)容更正——這個過程很可能需要牽涉沖突的兩位開發(fā)人員進行必要的溝通——機器與程序目前還不能完全取代人工智能。更正后文件圖標(biāo)會變成一個“四角形”,同時沖突文件內(nèi)的<<<<<< .mine、=======以及>>>>>>> .r14等標(biāo)記都會被去掉。(3)在沖突文件上點右鍵→Team→標(biāo)記為解決此時.mine文件和.r版本號文件都會被自動刪除,沖突文件的圖標(biāo)變?yōu)椤?”,表示可以提交。(4)提交文件,文件圖標(biāo)變?yōu)椤敖鹕珗A柱體”。使用SVN獨立客戶端:TortoiseSVNTortoiseSVN簡介TortoiseSVN是一個Windows下的版本控制系統(tǒng)Apache? Subversion?的客戶端工具。TortoiseSVN的優(yōu)良特性①外殼集成TortoiseSVN 無縫地整合進 Windows 的外殼(例如資源管理器)。②重載圖標(biāo)每個版本控制的文件和目錄的狀態(tài)使用小的重載圖標(biāo)表示,可以讓你立刻看出工作副本的狀態(tài)。③圖形用戶界面當(dāng)你列出文件或文件夾的更改時,你可以點擊任意版本查看提交注釋。也可以看到更改過的文件列表 - 只要雙擊文件就可以查看更改內(nèi)容。提交對話框列出了本次提交將要包括的條目,每一個條目有一個復(fù)選框,所以你可以選擇包括哪些條目。未版本控制的文件也會被列出,以防你忘記添加新文件。④Subversion 命令的簡便訪問所有的 Subversion 命令存在于資源管理器的右鍵菜單,TortoiseSVN 在那里添加子菜單。TortoiseSVN 的歷史2002年,Tim Kemp 發(fā)現(xiàn) Subversion 是一個非常好的版本管理系統(tǒng),但是缺乏一個好的圖形界面客戶端程序。做一個與 Windows 外殼整合的 Subversion 客戶端程序的想法是受一個叫 TortoiseCVS 的 CVS客戶端程序所啟發(fā)的。Tim 研究了 TortoiseCVS 的源碼并以此為 TortoiseSVN 的基礎(chǔ)。他開始運作這個項目,注冊了域名 tortoisesvn.org 并且將源碼放在了網(wǎng)上。就在同時, Stefan Küng 正在尋找一個好用的并且免費的版本控制系統(tǒng)。他找到了 Subversion 和TortoiseSVN 的源碼。因為 TortoiseSVN 還不能使用,他加入了項目并開始編碼。很快,他就重寫了現(xiàn)有的大部分代碼并開始添加命令和功能,到了某個時段,最初的代碼已經(jīng)都被改寫了。由于 Subversion 變得越來越穩(wěn)定,它吸引了越來越多用戶,他們同時也開始使用 TortoiseSVN 作為Subversion 的客戶端程序。用戶數(shù)量快速增長(并且每天還在增長)。這時候,Lübbe Onken 提出幫助項目提供精美的圖標(biāo)和 TortoiseSVN 的標(biāo)志。現(xiàn)在他負責(zé)照看網(wǎng)站和管理多語言翻譯。TortoiseSVN安裝①下載安裝程序:http://tortoisesvn.net/downloads.htmlWin32位:TortoiseSVN-1.8.7.25475-win32-svn-1.8.9.msiWin64位:TortoiseSVN-1.8.7.25475-x64-svn-1.8.9.msiWin32位語言包:LanguagePack_1.8.7.25475-win32-zh_CN.msiWin64位語言包:LanguagePack_1.8.7.25475-x64-zh_CN.msi②以Win32位為例中文語言包安裝在任意目錄下點右鍵→TortoiseSVN→settings檢出10.5.1 創(chuàng)建一個目錄用來存放檢出得到的文件,例如MyCRM10.5.2 進入目錄MyCRM,點右鍵10.5.3 可以看到檢出得到的文件此時文件圖標(biāo)上沒有任何標(biāo)識。可能你會想到通過重啟電腦的方式解決這一問題——其實不用這么麻煩。文件圖標(biāo)是受外殼程序控制的,我們只需要重啟外殼程序——explorer.exe就可以了。打開任務(wù)管理器,選中explorer.exe進程,結(jié)束進程,然后新建進程explorer.exe就可以了。如果一切順利的話,你會看到文件圖標(biāo)變成了這樣:TortoiseSVN圖標(biāo)含義●圖標(biāo)1:一個新檢出的工作副本使用綠色的對勾做重載。表示Subversion狀態(tài)正常。●圖標(biāo)2:在你開始編輯一個文件后,狀態(tài)就變成了已修改,而圖標(biāo)重載變成了紅色感嘆號。通過這種方式,你可以很容易地看出哪些文件從你上次更新工作副本后被修改過,需要被提交。●圖標(biāo)3:如果在更新的過程中出現(xiàn)了沖突,圖標(biāo)會變成黃色感嘆號。●圖標(biāo)4:如果你給一個文件設(shè)置了svn:needs-lock屬性,Subversion會讓此文件只讀,直到你獲得文件鎖。具有這個重載圖標(biāo)的文件來表示你必須在編輯之前先得到鎖。●圖標(biāo)5:如果你擁有了一個文件的鎖,并且Subversion狀態(tài)是正常,這個重載圖標(biāo)就提醒你如果不使用該文件的話應(yīng)該釋放鎖,允許別人提交對該文件的修改。●圖標(biāo)6:這個圖標(biāo)表示當(dāng)前文件夾下的某些文件或文件夾已經(jīng)被調(diào)度從版本控制中刪除,或是該文件夾下某個受版本控制的文件丟失了。●圖標(biāo)7:加號告訴你有一個文件或目錄已經(jīng)被調(diào)度加入版本控制。●圖標(biāo)8:橫條告訴你有一個文件或目錄被版本控制系統(tǒng)所忽略。這個圖標(biāo)重載是可選的。●圖標(biāo)9:這個圖標(biāo)說明文件和目錄未被版本控制,但是也沒有被忽略。這個圖標(biāo)重載是可選的。10.6 納入版本控制①新建文件abc.txt②在文件上點右鍵③添加后文件圖標(biāo)發(fā)生變化10.7 提交①使用TortoiseSVN可以提交具體某一個文件,或某一個目錄下的所有改變。方法就是在想要提交的項目下點右鍵,然后SVN Commit...,就可以看到如下界面②日志內(nèi)容如果不填,TortoiseSVN會提交一個空字符串作為日志信息。③提交后顯示信息如下④沒有納入版本控制的文件默認是不在提交范圍內(nèi)的,直接在新創(chuàng)建的文件上點右鍵只能看到add操作的選項,如前所述。但在新創(chuàng)建的文件所在目錄點右鍵選擇SVN commit...,可以看到如下界面將文件newFile.txt選中同樣可以提交文件,TortoiseSVN會幫我們自動將newFile.txt納入版本控制10.8 更新在要更新的文件或目錄上點右鍵→SVN Update10.9 回復(fù)歷史版本①查看歷史版本內(nèi)容[1]首先需要把對應(yīng)版本庫的匿名訪問權(quán)限設(shè)置為none:anon-access = none[2]在要查看歷史版本的文件上點右鍵→TortoiseSVN→Show log[3]在感興趣的歷史版本上點右鍵,可以與當(dāng)前工作副本進行比較,或直接打開。②在要回復(fù)歷史版本的文件上點右鍵→Update to revision填上想要回到的版本即可10.10 解決沖突①文件發(fā)生沖突時的狀態(tài)和在Eclipse中一樣,這里就不贅述了。②在沖突的文件上點右鍵→Edit Conflicts③有“嘆號”的行是發(fā)生沖突的行④在沖突行點右鍵可以選擇四種操作:[1]使用我的[2]使用他們的[3]把我的放在他們的前面[4]把他們的放在我的前面⑤在沖突解決后,直接保存——這時TortoiseSVN自動彈出如下確認界面⑥文件變?yōu)榧t色嘆號標(biāo)志,自動生成的三個文件被刪除。提交修改即可
svn的使用的全部流程svn詳細安裝方法
②運行svn checkout命令,命令格式如下:格式;③工作副本;運行checkout命令后進入MyERP目錄,看到里面什么都沒有。真的什么都沒有嗎?不是的。檢出命令會在這一目錄下創(chuàng)建一個隱藏目錄.svn,用來保存與服務(wù)器交互的重要信息,其中包括從服務(wù)器端取回的最新版本信息、文件狀態(tài)、更新時間等。SVN正是以此為依據(jù)判斷當(dāng)前目錄中文件的狀態(tài)。所以這個隱藏目錄千萬不要刪除或修改其中的內(nèi)容——完全無視它的存在吧。如果服務(wù)器端保存的文件可以視為一個“正本”,那么每個開發(fā)人員檢出到本地目錄的文件可以視為“副本”,通常稱為工作副本。提交;①進入D:\;DevWorkSpace\;SVNSpace\;MyERP目錄。②創(chuàng)建一個文件test.txt。
為你推薦