How to work on the offline subversion repository

Subversion作爲開源社區的使用廣泛的版本管理工具獲得越來越多人的認可。由於其設計理念的關係,簡化branch的很多功能,同時對於Merge的功能支持有限,爲了能夠支持分佈式的開發就需要大家採用頻繁少改動量的方式向代碼庫中提交代碼,這樣儘量減少代碼中的衝突。一旦你的網絡環境改變了,例如出差或者是休假,那你就很難在你的代碼中進行復雜的操作。

 

這裏可以和舉一個簡單的例子,就是你現在想對你的代碼進行refactoring的操作,需要修改一些類名(svn mv classA.java classB.java),但是這時你對classA.java 已經進行了一些修改,這樣如果你不能及時將你的修改操作進行提交的話,那你就無法很方便的執行上面的重命名操作。

 

那有沒有有一個好的方法能幫我完成一個離線的Subversion代碼修改呢?<p>我上個禮拜在出差的過程中就遇到這樣的問題,由於當時的環境不允許我連入公司內部網絡提交代碼,我需要構建一個離線的本地開發環境來記錄我對代碼的修改,同時在回到公司之後將這些代碼修改提交到公司內部的Subversion repository。

 

通過Google 我找到了一個叫做Git的版本管理工具,這個軟件提供了一個git-svn 子命令,這樣你就可以輕鬆實現一個基於你的Subversion代碼庫基礎上新獨立的Git代碼庫,當然這樣你自己在本地的修改可以被Git管理起來,通過 git-svn 完成Subversion代碼庫 到 本地代碼庫的同步,以及本地代碼庫到Subversion代碼庫的同步工作。

具體步驟如下

1. 使用 git-svn clone <your svn url> projectname

2. 這時你可以放心出差或者是度假了,如果有必要你可以在 projectname 目錄下進行你的工作

3. 使用git commit -a -m "I am commiting the code offline " 提交你的代碼

4. 當你的出差或者是度假回來

5. 你可以使用 git-svn rebase 來獲取自從你離線之後SVN的所有改變信息,當然如果發生衝突了,那還是需要你手工解決這些衝突。

6. 然後你可以使用 git-svn dcommit將你的工作內容提交Subversion的代碼庫中,當然沒有人知道你在用Git來管理你本地的代碼;)

 

是不是有點動心了,我們現在開始準備安裝Git。

如果你是Linux用戶,大家可以用apt 或者 yum 來獲取Git 的安裝包。

對於Windows用戶,目前我知道的方法就是通過CygWin安裝git包。

如果你是Vista用戶,你會遇到一些額外的問題,好在這些問題都有相關的解決方法,你可以參考Capi's Coroner 的 Blog

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章