svn快速教程
本文拷貝自網址:http://www.subversion.org.cn/?action-viewnews-itemid-1
如何快速建立Subversion伺服器,並且在項目中使用起來,這是大家最關心的問題,與CVS相比,Subversion有更多的選擇,也更加的容易,幾個命令就可以建立一套伺服器環境,可以使用起來,這裡配套有動畫教程。
本文是使用Subversion最快速的教程,在最短的時間裡協助您建立起一套可用的伺服器環境,只需略加調整就可以應用到實際項目當中。
本教程分為以下幾個部分,為了說明簡單,教程是在windows下使用的方式,以方便資源有限的項目使用。在UNIX環境下,只是安裝方式不同,命令執行並無太大區別。
- 軟體下載
- 伺服器和用戶端安裝
- 建立版本庫(Repository)
- 配置使用者和許可權
- 運行獨立伺服器
- 初始化匯入
- 基本用戶端操作
1,軟體下載下載Subversion伺服器程式。
到官方網站的下載二進位安裝檔案,來到二進位包下載部分,找到
Windows NT, 2000, XP and 2003部分,然後選擇Apache 2.0 或者Apache
2.2,這樣我們可以看到許多下載的內容,目前可以下載Setup-Subversion-1.5.3.msi 。
下載Subversion的Windows用戶端TortoiseSVN。
TortoiseSVN是擴充Windows Shell的一套工具,可以看作Windows資源管理員的外掛程式,安裝之後Windows就可以識別Subversion的工作目錄。
官方網站是TortoiseSVN ,下載方式和前面的svn伺服器類似,在Download頁面的我們可以選擇下載的版本,目前的最高穩定版本的安裝檔案為TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi。
2,伺服器和用戶端安裝
伺服器安裝,直接運行Setup-Subversion-1.5.3.msi ,根據提示安裝即可,這樣我們就有了一套伺服器可以啟動並執行環境。
安裝TortoiseSVN,同樣直接運行TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi按照提示安裝即可,不過最後完成後會提示是否重啟,其實重啟只是使svn工作拷貝在windows中的特殊樣式生效,與所有的實際功能無關,這裡為了立刻看到好的效果,還是重新啟動機器。
3,建立版本庫(Repository)
運行Subversion伺服器需要首先要建立一個版本庫(Repository),可以看作伺服器上存放資料的資料庫,在安裝了Subversion伺服器之後,可以直接運行,如:
svnadmin create E:\svndemo\repository
就會在目錄E:\svndemo\repository下建立一個版本庫。
我們也可以使用TortoiseSVN圖形化的完成這一步:
在目錄E:\svndemo\repository下"右鍵->TortoiseSVN->Create Repository here...“, 然後可以選擇版本庫模式, 這裡使用預設即可, 然後就建立了一系列目錄和檔案。
4,配置使用者和許可權
來到E:\svndemo\repository\conf目錄,修改svnserve.conf:
# [general]
# password-db = passwd
改為:
[general]
password-db = passwd
然後修改同目錄的passwd檔案,去掉下面三行的注釋:
# [users]
# harry = harryssecret
# sally = sallyssecret
最後變成:
[users]
harry = harryssecret
sally = sallyssecret
在passwd檔案中,“=”前的字元就是使用者名稱,後面的就是密碼。還要注意“[users]”前面的注釋“#”一定要刪除掉。
5,運行獨立伺服器
在任意目錄下運行:
svnserve -d -r E:\svndemo\repository 我們的伺服器程式就已經啟動了。注意不要關閉命令列視窗,關閉視窗也會把svnserve停止。
6,初始化匯入
來到我們想要匯入的項目根目錄,在這個例子裡是E:\svndemo\initproject,目錄下有一個readme.txt檔案:
右鍵->TortoiseSVN->Import...
在URL of repository輸入“svn://localhost/trunk”
在Import Message中輸入你的日誌資訊
完成之後目錄沒有任何變化,如果沒有報錯,資料就已經全部匯入到了我們剛才定義的版本庫中。
需要注意的是,這一步操作可以完全在另一台安裝了TortoiseSVN的主機上進行。例如運行svnserve的主機的IP是133.96.121.22,則URL部分輸入的內容就是“svn://133.96.121.22/trunk”。
7,基本用戶端操作
取出版本庫到一個工作拷貝:
來到任意空目錄下,在本例中是E:\svndemo\wc1,運行右鍵->Checkout,在URL of repository中輸入svn://localhost/trunk,這樣我們就得到了一份工作拷貝。
在工作拷貝中作出修改並提交:
開啟readme.txt,作出修改,然後右鍵->Commit...,這樣我們就把修改提交到了版本庫,我們可以運行。
察看所作的修改:
readme.txt上右鍵->TortoiseSVN->Show Log,這樣我們就可以看到我們對這個檔案所有的提交。在版本1上右鍵->Compare with working copy,我們可以比較工作拷貝的檔案和版本1的區別。
最後,所有的內容都已經錄製為動畫檔案,大家可以參考。
關於本教程大家有什麼意見,可以這裡討論 。
- 如果更新檔案以後,有兩個人或者多個人同時修改了某個檔案的某個位置,是否衝突,(一般不會這樣子,因為上傳的版本是可以編譯通過的,而且每個人負責自己的模組,不會多人獨立修改同一個檔案,別人也是先更新,後上傳修改,,,,)
- 開發人員習慣性動作。早上上班第一件事就是更新svn版本庫,再開始一天的工作。
- 晚上下班,或者其他時候要上傳東西可以直接上傳因為你負責的東西沒人去修改。
- 衝突是怎麼產生的呢:因為不同的人,同時修改了同一個檔案的同一個地方,這個時候,他提交了,你沒有提交,你就提交不了,這個時候,你要先更新,更新就會出現代碼衝突問題。最好不要多人同時修改一個檔案,公用的檔案,更改之前要和大家溝通一下,或者解決衝突 呵呵
- 先更新,沒有衝突,再提交。有衝突,解決衝突再提交。否則也提交不了。
- 對於一些處於衝突狀態下的檔案 ,右鍵TortoiseSVN ->Resolved,解決衝突。解決衝突: http://www.blogjava.net/jasmine214--love/archive/2011/04/07/347769.html
- 更新-解決衝突-刪掉以下三個檔案-提交(如果自己沒有修改的檔案有衝突,刪除再更新即可,自己修改的檔案解決衝突)
test.php.mine 是衝突前自己的檔案
test.php.版本號碼 是衝突前本地的版本檔案
test.php.伺服器的版本號碼 是衝突後伺服器版本檔案
svn代碼衝突,不能提交的解決方案
張映 發表於 2010-10-25
分類目錄: 伺服器相關
對於剛接觸svn的人來說,svn衝突後,不能提交是件讓人很鬱悶的事情。最讓人鬱悶的事,是代碼間的覆蓋。你把我代碼蓋了,我會很火大的。誰把誰的蓋了都不爽。
為什麼會出現代碼衝突問題呢,因為不同的人,同時修改了同一個檔案的同一個地方,這個時候,他提交了,你沒有提交,你就提交不了,這個時候,你要先更新,更新就會出現代碼衝突問題。一般情況,要盡量避免多個人修改同一個檔案,如果你改的檔案是公用檔案,這個時候,最好和大家勾通一下,大家都在改就不好了。
下面我說一個,通用的解決衝突的辦法,還不會覆蓋代碼,以test.php為例 :
1,修改檔案後提交不了,大多是因為版本不一致造成的。更新一下,不產生衝突的情況,就可以提交了。
2,更新檔案,如果出現衝突的情況,開啟衝突檔案test.php會看到類似以下的內容
<<<<<<<<<<<<<<<
asdfadfadfadf
11111111111111
=======
asdfadfadfadf
111111111111111
222222222222
>>>>>>>>>>>>>>>>
結合別人修改的內容和自己修改的內容,然後把檔案中的<<<<<,=====,>>>>>>>這類衝突符號去掉。去掉後,還是不能提交的,為什嗎?因為衝突時會產生三個檔案,有這三個檔案存在肯定提交不了。
用戶端用的tortoisesvn(這個估計程式員用的最多),衝突時會多產生,三個檔案
test.php.mine 是衝突前自己的檔案
test.php.版本號碼 是衝突前本地的版本檔案
test.php.伺服器的版本號碼 是衝突後伺服器版本檔案
提交的時候,把這三個檔案刪除掉就可以提交了。
3,產生覆蓋的原因。
a),在修改衝突檔案test.php時,把別人代碼都刪除掉了,只留下了自己的代碼。這樣就會產生覆蓋了。
b),把test.php.mine中的內容直接copy到test.php檔案,這樣也會產生代碼覆蓋。
上面二種情況都是我親眼看到新手這樣操作的,要避免這二種操作方法。
原文:http://blog.51yip.com/server/1071.html
- 為了避免衝突,修改檔案之前,首先要進行更新的操作。