一待逞、SVN
1受楼、什么是svn
svn:全稱Subversion垦搬,是代碼版本管理軟件,管理著隨時(shí)間改變的數(shù)據(jù)艳汽。這些數(shù)據(jù)放置在一個(gè)中央資料檔案庫(kù) (repository) 中猴贰。 這個(gè)檔案庫(kù)很像一個(gè)普通的文件服務(wù)器, 不過(guò)它會(huì)記住每一次文件的變動(dòng)。這樣你就可以把檔案恢復(fù)到舊的版本, 或是瀏覽文件的變動(dòng)歷史河狐。 許多人會(huì)把版本控制系統(tǒng)想像成某種 “時(shí)光機(jī)器”米绕。
SVN它也是安裝在服務(wù)器端的一個(gè)軟件,用來(lái)管理我們每次提交的代碼馋艺。沒提交一次代碼栅干,svn就會(huì)記住:該次提交的代碼是什么捐祠、提交人是誰(shuí)碱鳞、這個(gè)代碼的提交較上次的代碼有什么變化。
2踱蛀、同類型產(chǎn)品
vss:visual source safe
cvs:Concurrent Versions system
github: 分布式代碼控制管理軟件窿给,林納斯開發(fā)的(Linux)
3、使用svn開發(fā)的作用
①率拒、可以記錄一個(gè)文件的多個(gè)版本崩泡,并且能回到之前的某個(gè)版本
②、可以對(duì)相同的文件進(jìn)行“融合/整合”猬膨,而不是覆蓋文件角撞。
③ 公司領(lǐng)導(dǎo)可以通過(guò)svn查看每個(gè)人的工作情況
二、SVN的安裝
1勃痴、服務(wù)器端安裝(Subversion for windows)
2谒所、客戶端安裝(TortoiseSVN)
根據(jù)自己電腦的位數(shù)(32位或者64位)來(lái)選擇安裝。
查看自己電腦位數(shù)的方法:右鍵我的電腦?屬性
雙擊一個(gè)版本召耘,一路next百炬,最后點(diǎn)擊finish完成安裝褐隆。
安裝完成:在任何文件夾的空白處包括桌面污它,右鍵會(huì)看到如下選項(xiàng),表示安裝成功。
安裝完成衫贬,如果看不到右鍵選項(xiàng)德澈,重啟電腦。
三固惯、使用SVN服務(wù)
1梆造、創(chuàng)建多個(gè)倉(cāng)庫(kù)(存儲(chǔ)代碼文件)
1、先在E:/svn/app/下新建三個(gè)倉(cāng)庫(kù)(放項(xiàng)目代碼的)
創(chuàng)建倉(cāng)庫(kù):
用命令:svnadmin create 倉(cāng)庫(kù)地址
svnadmin create E:/svn/app/shop
如果提示
錯(cuò)誤葬毫。解決辦法:類似于mysql和httpd镇辉。
方法一:添加svnadmin.exe所在目錄到系統(tǒng)的環(huán)境變量。
右鍵我的電腦?屬性?高級(jí)?環(huán)境變量?Path.
編輯Path贴捡,添加svnadmin.exe所在目錄到Path中忽肛。
方法二:切換到svnadmin.exe所在目錄,再執(zhí)行該命令即可烂斋。
切換方法:
到此屹逛,倉(cāng)庫(kù)創(chuàng)建成功。
把其他兩個(gè)倉(cāng)庫(kù)也創(chuàng)建好:(針對(duì)個(gè)別電腦不能自動(dòng)將命令目錄放到環(huán)境變量中的情況)
到此汛骂,三個(gè)倉(cāng)庫(kù)都創(chuàng)建好了罕模。
2、啟動(dòng)倉(cāng)庫(kù)服務(wù)
用命令:svnserve –d –r 倉(cāng)庫(kù)地址
svnserve –d –r E:/svn/app/shop
服務(wù)啟動(dòng)完成帘瞭,這個(gè)dos窗口不能關(guān)閉淑掌,關(guān)閉表示svn倉(cāng)庫(kù)服務(wù)關(guān)閉。這是一個(gè)掛起服務(wù)图张。
3锋拖、與倉(cāng)庫(kù)取得聯(lián)系
1、新建了三個(gè)文件夾祸轮,分別表示三個(gè)程序員的電腦
2兽埃、這三個(gè)程序員,要和svn倉(cāng)庫(kù)聯(lián)系
在每個(gè)程序員的“電腦”上的工作目錄中适袜,右鍵?SVN Checkout…
彈出如下對(duì)話框:
點(diǎn)擊“ok”柄错。
然后看一下yasuo的文件夾(電腦):
查看隱藏文件的方法:
相同的辦法,另外兩個(gè)程序員苦酱,也和我們的倉(cāng)庫(kù)取得聯(lián)系售貌。
4、給svn倉(cāng)庫(kù)提交第一個(gè)程序文件
第一步:右鍵文件->SVN->add
第二步:右鍵->SVN Commit…
點(diǎn)擊“ok”
出現(xiàn)“認(rèn)證失敗”是因?yàn)橐哂覀儧]有權(quán)限提交颂跨。
那么現(xiàn)階段,先為了提交成功扯饶,先打開“匿名賬號(hào)”恒削。
打開“匿名賬號(hào)”的方法:
找到該項(xiàng)目的倉(cāng)庫(kù)配置文件:
打開svnserve.conf文件池颈,進(jìn)行如下配置:
注意:19行前面不要有空格。
修改完配置文件钓丰,無(wú)需重啟倉(cāng)庫(kù)服務(wù)躯砰。
再次提交:
4.1文件顏色標(biāo)志
① 藍(lán)色加號(hào):本地的.svn對(duì)該文件有形成管理(遠(yuǎn)程倉(cāng)庫(kù) 還沒有該文件記錄),該文件已經(jīng)執(zhí)行add操作
② 綠色對(duì)號(hào):本地文件携丁、.svn管理的版本文件琢歇、遠(yuǎn)程倉(cāng)庫(kù)文件 三者內(nèi)容完全一致
③ 紅色嘆號(hào):本地文件? 與? .svn和倉(cāng)庫(kù)文件 不一致(用戶自己修改了該已經(jīng)提交過(guò)的文件)
④ 黃色嘆號(hào):表示該文件正處于沖突狀態(tài)
⑤ 藍(lán)色問(wèn)號(hào):新建的一個(gè)文件,本地.svn 和 遠(yuǎn)程倉(cāng)庫(kù) 對(duì)該文件都沒有記錄
4.2在倉(cāng)庫(kù)內(nèi)部查看已經(jīng)提交的文件信息(看一下梦鉴,了解一下)
查看的結(jié)果:
這里就是了解一下李茫,能看到我們提交的東西就可以了。
4.3 ruiwen和jie要到倉(cāng)庫(kù)服務(wù)器中將已有的文件取得
update操作過(guò)后:
jie也是同樣的步驟肥橙。
到此涌矢,三個(gè)程序員都有這個(gè)文件了。從現(xiàn)在開始快骗,他們就可以一起開發(fā)了娜庇。
5、svn常見操作
checkout? ->第一次和倉(cāng)庫(kù)取得聯(lián)
update->后續(xù)更新
commit->提交
6方篮、目錄和文件的提交
6.1一次性提交多個(gè)文件
一次性提交多個(gè)文件名秀,無(wú)需add,只需直接SVN Commit…藕溅。svn會(huì)將沒有執(zhí)行過(guò)add操作的文件找出來(lái)匕得。
6.2提交文件夾
在yasuo的工作目錄中,新建了Controller的文件夾巾表,在Controller文件夾下新建了兩個(gè)控制器User和Index控制汁掠。
在Controller文件夾下,右鍵集币,顯示如下情況:
發(fā)現(xiàn)沒有add和commit考阱,也就無(wú)法提交,原因是他們的父級(jí)目錄還沒有提交鞠苟。
先提交他們的父級(jí)目錄乞榨,也就是Controller文件夾。當(dāng)然了当娱,提交Controller文件夾的時(shí)候吃既,自動(dòng)會(huì)關(guān)聯(lián)上他里面的文件。
選擇上這些文件跨细,提交即可鹦倚。
7、同時(shí)運(yùn)行多個(gè)svn倉(cāng)庫(kù)服務(wù)
錯(cuò)誤的同時(shí)運(yùn)行多個(gè)svn倉(cāng)庫(kù)服務(wù)的方式:
在打開一個(gè)dos窗口冀惭,在執(zhí)行svnserve命令震叙,開啟book和car的服務(wù)愤诱。
svnserve –d –r e:/svn/app/book
svnserve –d –r e:/svn/app/car
svnserve –d –r e:/svn/app/shop
如果這樣開啟三個(gè)服務(wù)是不行的,這樣的話捐友,我們?cè)跈z出(checkout)的時(shí)候,localhost指向不明確了溃槐。
正確的辦法:
開啟一個(gè)總的服務(wù):
svnserve –d –r E:/svn/app
到這里匣砖,三個(gè)倉(cāng)庫(kù)的服務(wù)都開啟了。
實(shí)驗(yàn):與book倉(cāng)庫(kù)取得聯(lián)系(檢出checkout)昏滴。
新模擬了兩個(gè)程序員的電腦(Xishi和Diaochan)猴鲫,在Diaochan的工作目錄下,右鍵?Checkout…
注意:此時(shí)谣殊,localhost指向的是E:/svn/app目錄拂共,所以,我們?cè)谙霗z出book項(xiàng)目的代碼的時(shí)候姻几,要加一層book目錄宜狐。
7.1已有用戶更換svn主機(jī)名地址
當(dāng)svn服務(wù)主機(jī)地址改變后,我們就要相應(yīng)的改變主機(jī)地址蛇捌。改變的辦法:
看到上圖抚恒,表示主機(jī)更換成功。
8络拌、同一個(gè)文件的不同版本切換
在yasuo的工作目錄中俭驮,新建了一個(gè)banben.txt的文件,第一次寫了11111并提交春贸;第二次加入2222再次提交混萝;第三次加入33333再次提交。到此萍恕,banben.txt這個(gè)文件有三個(gè)版本逸嘀。
如何來(lái)查看它有幾個(gè)版本呢?
看到的結(jié)果:
如何切換到之前的某個(gè)版本允粤?
回到之前的版本厘熟,我們一般是查看為主,當(dāng)然有時(shí)候也會(huì)修改维哈。
如果回到以前的版本绳姨,并且修改了文件,并且還要提交阔挠,會(huì)出現(xiàn)“過(guò)期”錯(cuò)誤飘庄。
原因是,svn倉(cāng)庫(kù)服務(wù)购撼,如果本地的文件版本 低于 倉(cāng)庫(kù)服務(wù)器的版本跪削,則不允許直接提交谴仙。
四、解決沖突(重點(diǎn))
在多人開發(fā)同一個(gè)文件的時(shí)候碾盐,很多時(shí)候會(huì)出現(xiàn)晃跺,兩個(gè)程序員的代碼在同一處(行)或者不同處(行)不同的情況。這個(gè)時(shí)候在提交代碼的時(shí)候就會(huì)提示有沖突毫玖。但是沖突的根本原因是客戶端的版本低于服務(wù)端的版本掀虎。
1、沖突的具體形式
1.1大家修改的代碼不在同一處(行)
此種情況付枫,一般來(lái)說(shuō)沒什么毛病烹玉,比較好處理,svn一般會(huì)幫我們將文件融合到一起阐滩。
起始版本是11號(hào)(yasuo二打、jie、svn服務(wù)器的該文件版本都是11號(hào)):
jie先將他的工作目錄下的該文件修改了掂榔。將一句話刪除了:
修改之后要提交
jie提交后继效,jie的本地文件版本和svn服務(wù)器端版本都變?yōu)榱?2號(hào)版本。
yasuo開始修改它的工作目錄下的代碼:
修改完畢装获,提交
yasuo此時(shí)遇到文件過(guò)時(shí)的問(wèn)題莲趣。原因是他的本地文件版本是11號(hào),而jie已經(jīng)將服務(wù)器端的版本變更為12號(hào)了饱溢。此時(shí)需要更新他的本地文件也為12號(hào)才能提交喧伞。
然后再次提交:提交成功。
jie在update一下自己的代碼即可绩郎。
1.2大家修改的代碼在同一處(行)
起始文件:
yasuo先在333333這行修改潘鲫,然后提交。
jie在3333的位置也進(jìn)行修改肋杖,然后得先更新溉仑,在提交,上面已經(jīng)說(shuō)過(guò)原因了状植。
jie在更新后浊竟,出現(xiàn)了下面三個(gè)文件:
這幾個(gè)文件是輔助文件,幫助我們來(lái)解決沖突的津畸。這三個(gè)文件都可以用記事本打開查看振定。
對(duì)比這三個(gè)文件,得出一個(gè)最終的版本:
然后進(jìn)行提交即可肉拓。
小貼士:在實(shí)際開發(fā)中后频,有些時(shí)候,代碼的沖突比較大,這個(gè)時(shí)候最好是和其他程序員進(jìn)行溝通卑惜,共同解決沖突膏执。
五、賬號(hào)和權(quán)限
1露久、先關(guān)閉“匿名”賬號(hào)
2更米、使得設(shè)置賬號(hào)和配置權(quán)限的文件生效
3、設(shè)置賬號(hào)
在生效的passwd文件中毫痕,設(shè)置用戶名和密碼征峦。
4、給賬號(hào)設(shè)置權(quán)限
4.1給具體用戶設(shè)置權(quán)限
① 開啟唯一倉(cāng)庫(kù)服務(wù)? svnserve.exe -d -r d:/svn/app/shop
[/]
用戶名 = 具體操作權(quán)限
② 開啟多個(gè)倉(cāng)庫(kù)服務(wù)? svnserve.exe -d -r d:/svn/app
[shop:/]? ? //或者 [book:/]? [car:/]
用戶名 = 具體操作權(quán)限
權(quán)限有兩種:讀(能update镇草,能從倉(cāng)庫(kù)update代碼)和寫(能提交代碼commit)。讀用r表示瘤旨,寫用w表示梯啤。
現(xiàn)在,給jie和yasuo權(quán)限:
亞索再次提交:
這里不要記住用戶名和密碼的原因是:因?yàn)閖ie和yasuo本來(lái)是兩個(gè)人存哲,也就意味著是兩臺(tái)電腦因宇。而我們是在一臺(tái)電腦上模擬操作的,yasuo記住用戶名和密碼祟偷,那么jie在提交的時(shí)候其實(shí)用的也是yasuo的用戶名和密碼察滑。
如果不小心記住了用戶名和密碼怎么辦?
3.2給一個(gè)組別設(shè)置權(quán)限
有些時(shí)候修肠,我們公司在開發(fā)一個(gè)項(xiàng)目的時(shí)候贺辰,往往會(huì)請(qǐng)一些公司以外的人(外包)來(lái)做一些專業(yè)性的東西。比如嵌施,我們要做一個(gè)視頻網(wǎng)站饲化。播放器找另一家的公司的人來(lái)做,這個(gè)時(shí)候吗伤,就需要給其他公司的人設(shè)置權(quán)限吃靠。
辦法:
先給這些人設(shè)置賬號(hào)密碼
給這些人分成一個(gè)組,并給權(quán)限
給組設(shè)置權(quán)限的時(shí)候足淆,組名前要加“@”符合巢块。
3.3開啟只操作某個(gè)目錄權(quán)限
還是上面的例子,最好的解決辦法是把外部人員的可操作目錄單獨(dú)設(shè)置巧号,比如開發(fā)播放器的三個(gè)人族奢,我們讓他們只有操作shipin目錄的權(quán)限。
六丹鸿、設(shè)置開機(jī)啟動(dòng)svn倉(cāng)庫(kù)服務(wù)
添加svn倉(cāng)庫(kù)服務(wù)語(yǔ)法:
sc create 服務(wù)名 binPath= "可執(zhí)行文件路徑 –r 倉(cāng)庫(kù)地址 --service" start= auto
sc create svnd binPath= "e:/svn/server/bin/svnserve.exe -r e:/svn/app --service" start= auto
注意語(yǔ)法中的空格
在電腦的服務(wù)中查看
刪除服務(wù)的命令:
sc delete 服務(wù)名
sc delete svnd
也可以對(duì)創(chuàng)建和刪除svn服務(wù)的命令生成一個(gè)批處理文件歹鱼。
生成的辦法就是將命令保存到一個(gè)記事本中,然后講記事本的后綴改為bat即可卜高。
七弥姻、svn使用細(xì)節(jié)
①南片、提交、更新代碼庭敦。
②疼进、領(lǐng)導(dǎo)查看每個(gè)員工的工作情況。
領(lǐng)導(dǎo)可以通過(guò)show log來(lái)查看每個(gè)員工的工作情況
八秧廉、真實(shí)環(huán)境使用svn說(shuō)明
解決沖突補(bǔ)充:
jie開發(fā)login.php和register.php
yasuo開發(fā)login.php和index.php
作者:peng_js
鏈接:http://www.reibang.com/p/dff9c62f1f3f
來(lái)源:簡(jiǎn)書
著作權(quán)歸作者所有伞广。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處疼电。