php學(xué)建網(wǎng)站搜索引擎優(yōu)化的簡寫是
1.?什么是SVN
SVN全名Subversion,即版本控制系統(tǒng)。SVN與CVS一樣,是一個跨平臺的軟件,支持大多數(shù)常見的操作系統(tǒng)。
作為一個開源的版本控制系統(tǒng),Subversion管理著隨時間改變的數(shù)據(jù)。這些數(shù)據(jù)放置在一個中央資料檔案庫(repository)中。這個檔案庫很像一個普通的文件服務(wù)器,不過它會記住每一次文件的變動。
這樣你就可以把檔案恢復(fù)到舊的版本,或是瀏覽文件的變動歷史。Subversion是一個通用的系統(tǒng),可用來管理任何類型的文件,其中包括了程序源碼。
Git –?版本控制系統(tǒng)。
SVN是集中式,Git是分布式。
1.1.?SVN工作原理
??
1.2.?我們使用SVN能做什么?
1、?多人共享同一的資源,并且可以對資源實現(xiàn)修改和更新;
2、?記錄資源的每一次變更,以及記錄更改該資源的人,并且可以恢復(fù)到之前的任何一個修改點;
2.?安裝
SVN的安裝分為2部分,第一部分是服務(wù)端安裝,第二部分的客戶端安裝。
注意:一般情況下,我們只需要安裝客戶端即可,因為在企業(yè)中服務(wù)端是否運維來維護的,我們只需要開通一個賬號即可。
常用的客戶端又分為2種,第一種是安裝在操作系統(tǒng)中的客戶端,另外一種是Eclipse的插件。
2.1.?服務(wù)端安裝(windows)
?
選擇相應(yīng)的文件安裝。
??
安裝完成后會在系統(tǒng)服務(wù)中有SVN服務(wù)項,并且默認(rèn)是開機啟動。
?
打開管理工具:
?
至此,服務(wù)端安裝完成。
2.2.?客戶端安裝
先安裝客戶端,再安裝語言包。
點擊右鍵查看是否有SVN選項。
接下來安裝語言包:
?
選擇中文:
?
中文生效:
?
此處客戶端安裝完成!
2.3.?Eclipse插件安裝
3.?創(chuàng)建資源庫和用戶
3.1.?創(chuàng)建用戶
?
3.2.?創(chuàng)建資源庫
資源庫:用戶提交文件到SVN,存放文件的倉庫。
我們選擇自定義權(quán)限:
創(chuàng)建完成:
?
測試:?
資源庫創(chuàng)建完成。?
3.3.?svn的幾個操作說明:
1、Check out(檢出):從服務(wù)器端取得代碼
把服務(wù)器資料庫里存放的某個項目代碼取出來,放到本地主機中,這個動作叫做“check out”。使用具體步驟:進入要安裝項目文件的目錄中,點擊鼠標(biāo)右鍵,選擇SVN Check out項,然后填寫項目的原始路徑和安裝路徑后點擊“ok”即可。
2、Update(更新):更新項目代碼
以前checkout過的一個項目代碼,當(dāng)服務(wù)器上有了更新的代碼,或者本地代碼損壞或丟失,update可以自動判斷本地哪些文件較舊,或者缺少,都會自 動更新。當(dāng)然,你也可以刪除掉本地代碼,重新check out。使用具體步驟為:在要更新的項目上點擊鼠標(biāo)右鍵,選擇“SVN Update”項即可。
3、Commit(提交):將本地代碼上傳到服務(wù)器
當(dāng)修改(增加,刪除,修改等所有寫操作)過本地代碼后,這個動做會把新代碼提交到SVN。如果本地代碼做了修改,不執(zhí)行commit操作,SVN服務(wù)器上是 不會有這個新版本的,也就是說其它人也得不到。對代碼做過修改后,應(yīng)盡快commit。使用具體步驟:在修改完待上傳的項目上點擊鼠標(biāo)右鍵,選擇“SVN Commit”項即可。
4、share Project(共享工程):ecplise中的操作
把一個非svn的工程,上傳到svn中。
3.4.?使用客戶端訪問
?
測試導(dǎo)入文件:
搞定。
4.?SVN協(xié)議
訪問SVN資源庫的協(xié)議通常有三種:
1、?http
a)?客戶端和瀏覽器都可以訪問。
2、?https
a)?客戶端和瀏覽器都可以訪問,同時比http更安全。
3、?svn
a)?只能通過客戶端訪問。
5.?資源倉庫
SVN資源倉庫中有三個非常重要的目錄,trunk(主干)、branches(分支)、tags(標(biāo)簽),其作用是:
這三個目錄,都是可以存放文件的,只是在功能方面有一些區(qū)別(只是約定):
trunk:一般的項目都是基于主干開發(fā)的。
branches:分支,一般用于有某些開發(fā)功能時,需要基于主干開分支,開發(fā)完成后要合并到主干。
tags:標(biāo)簽,項目開發(fā)完成后,發(fā)布上線時,需要將主干的代碼打標(biāo)簽到tags中,一般情況下,tags的內(nèi)容是只讀的。
這三個目錄在實際項目開發(fā)過程中的應(yīng)用:
?
Release:發(fā)行版,穩(wěn)定版。
RC:Release.Candidate發(fā)行候選版本。
6.??SVN項目實戰(zhàn)
在企業(yè)開發(fā)過程中,更為常用的是通過Eclipse的插件來管理文件版本。
6.1.?在Eclipse中創(chuàng)建SVN連接
創(chuàng)建svn?的資源庫連接。
??
?
6.2.?將項目發(fā)布到SVN的trunk
?
分別創(chuàng)建trunk、branches、tags:
?
與資源庫進行同步(比較不同):
?
這么多內(nèi)容都是應(yīng)該提交到SVN的嗎?
不是的,對于Maven項目而言,只提交src和pom.xml即可。
只需要項目相關(guān)的內(nèi)容。
?
提交pom.xml
只去提交src里面的內(nèi)容和pom.xml文件
每次執(zhí)行與資源庫同步時都會有以上內(nèi)容,會影響每次提交的選擇,所以可以選擇將這些目錄文件忽略掉。
6.3.?忽略指定的資源
6.3.1.?全局指定
6.3.2.?單個指定
刪除忽略:
?
6.4.?提交代碼
當(dāng)我們在本地將代碼修改后需要提交到SVN倉庫,以便別人可以獲取到最新的代碼。
?注意:不建議直接提交,因為該文件可能會被其他人修改,從而造成沖突,推薦在提交(更新)之前先執(zhí)行與資源庫同步。
?
6.5.?更新代碼
6.6.?沖突解決(難點亦是重點)
什么是沖突?
沖突就是在同一個版本基礎(chǔ)之上,多個人對該文件修改了修改,其中一個人將文件提交到SVN,這時,該文件已經(jīng)是新的版本,但是,其他人的本地還是舊的版本,
這時,其他人并不知道該文件已經(jīng)有了新的版本,執(zhí)行提交操作,這時就產(chǎn)生了沖突。
解決沖突的核心思想:為了避免沖突,要在最新的版本之上修改(也就是說修改之前先更新),再提交。
如果我更新了之后,在編寫代碼的同時別人將該文件再次更新(我不可能時時刻刻都查看更新),這時直接提交會造成沖突,正確的做法是:提交之前將該文件先執(zhí)行與資源庫同步操作,先將沖突解決掉再提交代碼。
接下來就需要討論下個話題了,如何解決沖突?
首先要先明確,解決沖突是不能通過工具自動完成的,必須人工完成,當(dāng)然了,可以借助工具輔助完成。
下面,演示沖突的解決過程:
6.6.1.?制造沖突
在Eclipse中將文件內(nèi)容修改,用于模擬用戶1修改文件:
然后,在桌面中的目錄中修改該文件,用于模擬用戶2修改文件:
?
這時,先將桌面中的文件提交:
?
提交成功。
在Eclipse中將項目與資源庫同步:
??
6.6.2.?解決沖突(關(guān)鍵內(nèi)容來了)
0、選擇team?與資源庫同步
?
1、?雙擊打開該文件,查看沖突的內(nèi)容
?
2、?將遠程更新的內(nèi)容寫到本地
3、?將該文件標(biāo)記為合并(注意,一定是已經(jīng)處理完沖突了才能標(biāo)記,要不然會將服務(wù)端的文件覆蓋掉)
4、?現(xiàn)在,就可以大膽的提交了
6.7.?沖突的另一種解決方案
有些時候可能會是這種情況:
服務(wù)端文件的內(nèi)容被大量的修改,如果按照上面的方法一個個解決,非常的麻煩,這時你可以嘗試以下的解決方案:
1、?備份本地的文件
2、?將該文件執(zhí)行 還原 操作,并且再執(zhí)行 更新 操作(也就說,放棄自己的修改,更新到最新的版本)
3、?將備份文件中修改的內(nèi)容,拷貝(不是全部啊,只是自己修改的部分內(nèi)容)回該文件,再執(zhí)行提交就OK了。
總結(jié):這種解決方案的核心思想是,放棄自己的修改,把本地文件更新到最新版本,在最新版本基礎(chǔ)之上修改,并且提交。
6.8.?沖突解決
本地修改了代碼,服務(wù)器做了更新,
?
7.?新檢出的項目 ,轉(zhuǎn)換成?maven?工程
?
8.?svn的操作整理
沖突的解決:
建議,如果本地的代碼出現(xiàn)了?* ,本地代碼和服務(wù)器代碼不一致。 不要去做更新的操作。
去做與資源庫同步的操作。
可以確定沖突的文件。 解決沖突。
推薦:把自己的代碼,進行本地備份,然后刪除工作空間中的代碼,進行還原,并且更新。
然后把本地本分的代碼和工作空間的代碼進行比對,合并
再做提交。