SVN服務器端和客戶端安裝與使用

一、SVN
1、什么是svn
svn:全稱Subversion,是代碼版本管理軟件,管理著隨時間改變的數(shù)據(jù)。這些數(shù)據(jù)放置在一個中央資料檔案庫 (repository) 中。 這個檔案庫很像一個普通的文件服務器, 不過它會記住每一次文件的變動。這樣你就可以把檔案恢復到舊的版本, 或是瀏覽文件的變動歷史。 許多人會把版本控制系統(tǒng)想像成某種 “時光機器”。
SVN它也是安裝在服務器端的一個軟件,用來管理我們每次提交的代碼。沒提交一次代碼,svn就會記?。涸摯翁峤坏拇a是什么、提交人是誰、這個代碼的提交較上次的代碼有什么變化。
2、同類型產(chǎn)品
vss:visual source safe
cvs:Concurrent Versions system
github: 分布式代碼控制管理軟件,林納斯開發(fā)的(Linux)
3、使用svn開發(fā)的作用
①、可以記錄一個文件的多個版本,并且能回到之前的某個版本
②、可以對相同的文件進行“融合/整合”,而不是覆蓋文件。
③ 公司領導可以通過svn查看每個人的工作情況
二、SVN的安裝

1、服務器端安裝(Subversion for windows)

2、客戶端安裝(TortoiseSVN)
根據(jù)自己電腦的位數(shù)(32位或者64位)來選擇安裝。
查看自己電腦位數(shù)的方法:右鍵我的電腦?屬性

雙擊一個版本,一路next,最后點擊finish完成安裝。
安裝完成:在任何文件夾的空白處包括桌面,右鍵會看到如下選項,表示安裝成功。

安裝完成,如果看不到右鍵選項,重啟電腦。
三、使用SVN服務
1、創(chuàng)建多個倉庫(存儲代碼文件)
1、先在E:/svn/app/下新建三個倉庫(放項目代碼的)

創(chuàng)建倉庫:
用命令:svnadmin create 倉庫地址
svnadmin create E:/svn/app/shop
如果提示

錯誤。解決辦法:類似于mysql和httpd。
方法一:添加svnadmin.exe所在目錄到系統(tǒng)的環(huán)境變量。
右鍵我的電腦?屬性?高級?環(huán)境變量?Path.
編輯Path,添加svnadmin.exe所在目錄到Path中。
方法二:切換到svnadmin.exe所在目錄,再執(zhí)行該命令即可。
切換方法:

到此,倉庫創(chuàng)建成功。
把其他兩個倉庫也創(chuàng)建好:(針對個別電腦不能自動將命令目錄放到環(huán)境變量中的情況)

到此,三個倉庫都創(chuàng)建好了。
2、啟動倉庫服務
用命令:svnserve –d –r 倉庫地址
svnserve –d –r E:/svn/app/shop

服務啟動完成,這個dos窗口不能關閉,關閉表示svn倉庫服務關閉。這是一個掛起服務。
3、與倉庫取得聯(lián)系
1、新建了三個文件夾,分別表示三個程序員的電腦

2、這三個程序員,要和svn倉庫聯(lián)系
在每個程序員的“電腦”上的工作目錄中,右鍵?SVN Checkout…

彈出如下對話框:

點擊“ok”。

然后看一下yasuo的文件夾(電腦):

查看隱藏文件的方法:

相同的辦法,另外兩個程序員,也和我們的倉庫取得聯(lián)系。
4、給svn倉庫提交第一個程序文件
第一步:右鍵文件->SVN->add

第二步:右鍵->SVN Commit…

點擊“ok”

出現(xiàn)“認證失敗”是因為,我們沒有權限提交。
那么現(xiàn)階段,先為了提交成功,先打開“匿名賬號”。
打開“匿名賬號”的方法:
找到該項目的倉庫配置文件:

打開svnserve.conf文件,進行如下配置:

注意:19行前面不要有空格。
修改完配置文件,無需重啟倉庫服務。
再次提交:

4.1文件顏色標志
① 藍色加號:本地的.svn對該文件有形成管理(遠程倉庫 還沒有該文件記錄),該文件已經(jīng)執(zhí)行add操作

② 綠色對號:本地文件、.svn管理的版本文件、遠程倉庫文件 三者內容完全一致

③ 紅色嘆號:本地文件 與 .svn和倉庫文件 不一致(用戶自己修改了該已經(jīng)提交過的文件)

④ 黃色嘆號:表示該文件正處于沖突狀態(tài)

⑤ 藍色問號:新建的一個文件,本地.svn 和 遠程倉庫 對該文件都沒有記錄

4.2在倉庫內部查看已經(jīng)提交的文件信息(看一下,了解一下)

查看的結果:

這里就是了解一下,能看到我們提交的東西就可以了。
4.3 ruiwen和jie要到倉庫服務器中將已有的文件取得

update操作過后:

jie也是同樣的步驟。
到此,三個程序員都有這個文件了。從現(xiàn)在開始,他們就可以一起開發(fā)了。
5、svn常見操作

checkout ->第一次和倉庫取得聯(lián)
update->后續(xù)更新
commit->提交

6、目錄和文件的提交
6.1一次性提交多個文件
一次性提交多個文件,無需add,只需直接SVN Commit…。svn會將沒有執(zhí)行過add操作的文件找出來。

6.2提交文件夾
在yasuo的工作目錄中,新建了Controller的文件夾,在Controller文件夾下新建了兩個控制器User和Index控制。
在Controller文件夾下,右鍵,顯示如下情況:

發(fā)現(xiàn)沒有add和commit,也就無法提交,原因是他們的父級目錄還沒有提交。
先提交他們的父級目錄,也就是Controller文件夾。當然了,提交Controller文件夾的時候,自動會關聯(lián)上他里面的文件。

選擇上這些文件,提交即可。

7、同時運行多個svn倉庫服務
錯誤的同時運行多個svn倉庫服務的方式:
在打開一個dos窗口,在執(zhí)行svnserve命令,開啟book和car的服務。
svnserve –d –r e:/svn/app/book
svnserve –d –r e:/svn/app/car
svnserve –d –r e:/svn/app/shop
如果這樣開啟三個服務是不行的,這樣的話,我們在檢出(checkout)的時候,localhost指向不明確了。
正確的辦法:
開啟一個總的服務:
svnserve –d –r E:/svn/app

到這里,三個倉庫的服務都開啟了。
實驗:與book倉庫取得聯(lián)系(檢出checkout)。
新模擬了兩個程序員的電腦(Xishi和Diaochan),在Diaochan的工作目錄下,右鍵?Checkout…

注意:此時,localhost指向的是E:/svn/app目錄,所以,我們在想檢出book項目的代碼的時候,要加一層book目錄。
7.1已有用戶更換svn主機名地址
當svn服務主機地址改變后,我們就要相應的改變主機地址。改變的辦法:

看到上圖,表示主機更換成功。
8、同一個文件的不同版本切換
在yasuo的工作目錄中,新建了一個banben.txt的文件,第一次寫了11111并提交;第二次加入2222再次提交;第三次加入33333再次提交。到此,banben.txt這個文件有三個版本。
如何來查看它有幾個版本呢?

看到的結果:

如何切換到之前的某個版本?

回到之前的版本,我們一般是查看為主,當然有時候也會修改。
如果回到以前的版本,并且修改了文件,并且還要提交,會出現(xiàn)“過期”錯誤。

原因是,svn倉庫服務,如果本地的文件版本 低于 倉庫服務器的版本,則不允許直接提交。
四、解決沖突(重點)
在多人開發(fā)同一個文件的時候,很多時候會出現(xiàn),兩個程序員的代碼在同一處(行)或者不同處(行)不同的情況。這個時候在提交代碼的時候就會提示有沖突。但是沖突的根本原因是客戶端的版本低于服務端的版本。

1、沖突的具體形式
1.1大家修改的代碼不在同一處(行)
此種情況,一般來說沒什么毛病,比較好處理,svn一般會幫我們將文件融合到一起。
起始版本是11號(yasuo、jie、svn服務器的該文件版本都是11號):

jie先將他的工作目錄下的該文件修改了。將一句話刪除了:

修改之后要提交

jie提交后,jie的本地文件版本和svn服務器端版本都變?yōu)榱?2號版本。
yasuo開始修改它的工作目錄下的代碼:

修改完畢,提交

yasuo此時遇到文件過時的問題。原因是他的本地文件版本是11號,而jie已經(jīng)將服務器端的版本變更為12號了。此時需要更新他的本地文件也為12號才能提交。

然后再次提交:提交成功。

jie在update一下自己的代碼即可。
1.2大家修改的代碼在同一處(行)
起始文件:

yasuo先在333333這行修改,然后提交。
jie在3333的位置也進行修改,然后得先更新,在提交,上面已經(jīng)說過原因了。
jie在更新后,出現(xiàn)了下面三個文件:

這幾個文件是輔助文件,幫助我們來解決沖突的。這三個文件都可以用記事本打開查看。

對比這三個文件,得出一個最終的版本:

然后進行提交即可。
小貼士:在實際開發(fā)中,有些時候,代碼的沖突比較大,這個時候最好是和其他程序員進行溝通,共同解決沖突。
五、賬號和權限
1、先關閉“匿名”賬號

2、使得設置賬號和配置權限的文件生效

3、設置賬號
在生效的passwd文件中,設置用戶名和密碼。

4、給賬號設置權限
4.1給具體用戶設置權限
① 開啟唯一倉庫服務 svnserve.exe -d -r d:/svn/app/shop
[/]
用戶名 = 具體操作權限
② 開啟多個倉庫服務 svnserve.exe -d -r d:/svn/app
[shop:/] //或者 [book:/] [car:/]
用戶名 = 具體操作權限

權限有兩種:讀(能update,能從倉庫update代碼)和寫(能提交代碼commit)。讀用r表示,寫用w表示。
現(xiàn)在,給jie和yasuo權限:

亞索再次提交:

這里不要記住用戶名和密碼的原因是:因為jie和yasuo本來是兩個人,也就意味著是兩臺電腦。而我們是在一臺電腦上模擬操作的,yasuo記住用戶名和密碼,那么jie在提交的時候其實用的也是yasuo的用戶名和密碼。
如果不小心記住了用戶名和密碼怎么辦?

3.2給一個組別設置權限
有些時候,我們公司在開發(fā)一個項目的時候,往往會請一些公司以外的人(外包)來做一些專業(yè)性的東西。比如,我們要做一個視頻網(wǎng)站。播放器找另一家的公司的人來做,這個時候,就需要給其他公司的人設置權限。
辦法:
先給這些人設置賬號密碼

給這些人分成一個組,并給權限

給組設置權限的時候,組名前要加“@”符合。
3.3開啟只操作某個目錄權限
還是上面的例子,最好的解決辦法是把外部人員的可操作目錄單獨設置,比如開發(fā)播放器的三個人,我們讓他們只有操作shipin目錄的權限。

六、設置開機啟動svn倉庫服務
添加svn倉庫服務語法:
sc create 服務名 binPath= "可執(zhí)行文件路徑 –r 倉庫地址 --service" start= auto

sc create svnd binPath= "e:/svn/server/bin/svnserve.exe -r e:/svn/app --service" start= auto
注意語法中的空格

在電腦的服務中查看

刪除服務的命令:
sc delete 服務名
sc delete svnd
也可以對創(chuàng)建和刪除svn服務的命令生成一個批處理文件。
生成的辦法就是將命令保存到一個記事本中,然后講記事本的后綴改為bat即可。
七、svn使用細節(jié)
①、提交、更新代碼。
②、領導查看每個員工的工作情況。
領導可以通過show log來查看每個員工的工作情況
八、真實環(huán)境使用svn說明

解決沖突補充:
jie開發(fā)login.php和register.php
yasuo開發(fā)login.php和index.php

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容