從SVN遷移代碼到Git實踐總結(jié)

前言

在Git流行起來之前,SVN是一個比較火爆的集中式的版本控制工具。但是Git作為分布式的版本控制工具,它在管理、使用等方面都比SVN要好,越來越多的公司、開發(fā)人員開始使用Git來替代SVN。這就涉及到歷史代碼遷移問題。當(dāng)然最原始的方法就是把代碼手動下載下來,然后手動創(chuàng)建Git倉庫,再把代碼push上去。這樣做不僅耗費(fèi)時間而且對于一些有用的信息如:原先SVN中的commit紀(jì)錄等就沒有了。今天借著遷移部門之前系統(tǒng)代碼的機(jī)會,對整個過程進(jìn)行總結(jié)。

需要了解的背景知識

由于之前一直使用的是Git,沒有接觸過SVN,所以對于SVN并不是很了解,尤其是一些基礎(chǔ)的術(shù)語的了解。也正是因為這個原因讓我在往Git上遷移代碼的時候遇到了一些麻煩,甚至一度卡在那里,不知道該怎么辦了。

  • 下面簡單介紹一下SVN以及一些基礎(chǔ)的術(shù)語:

    SVN的基本工作原理是在一臺服務(wù)器上建立一個代碼倉庫,在這個倉庫里面可以存放不同項目的源代碼,每個用戶、開發(fā)人員在使用代碼倉庫之前需要先把代碼倉庫里面的代碼下載到本地(Checkout),然后用戶可以在本地對代碼進(jìn)行修改,最后用svn命令進(jìn)行提交(Commit)。整個流程跟Git的使用相差不多,只是使用的命令不同。其中剛剛介紹的創(chuàng)建代碼倉庫的服務(wù)器稱為SVN服務(wù)器,用戶、開發(fā)人員使用SVN客戶端與SVN服務(wù)器進(jìn)行交互。

    • SVN服務(wù)器:一般分為兩大種類,一類是獨(dú)立的服務(wù)器,它使用SVN協(xié)議,另一類的是借助Apache服務(wù)器來實現(xiàn)的,它使用HTTP協(xié)議
    • SVN客戶端:一般分為命令行和圖形化工具兩大類,常用的圖形化工具有TortoiseSVN
  • SVN基本命令:

    • 服務(wù)器端(管理員使用的):svnadmin、 svnserve

    • 客戶端(開發(fā)人員使用的):svn

  • SVN目錄

    • /trunk:開發(fā)主線,相當(dāng)于Git中的Master分支。

    • /branches:支線副本,相當(dāng)于Git中的其余分支。

    • /tags:標(biāo)簽,與Git中的標(biāo)簽一樣。

    一般的所有的開發(fā)工作都是基于trunk進(jìn)行的,當(dāng)一個版本開發(fā)完成,或者開發(fā)到一定段落(開發(fā)、測試、文檔、制作安裝程序、打包等結(jié)束后),代碼基本上就處于一個穩(wěn)定的狀態(tài),這是就會將代碼打上tag,當(dāng)下一個版本需要進(jìn)行開發(fā)的時候,還會在trunk進(jìn)行開發(fā)。但是此時如果發(fā)現(xiàn)了上一個已發(fā)行版本(Released Version)有一些bug,或者一些很急迫的功能要求,而正在開發(fā)的版本(Developing Version)無法滿足時間要求,這時候就需要在上一個版本上進(jìn)行修改了。解決方法是基于發(fā)行版對應(yīng)的tag,做相應(yīng)的分支(branch)進(jìn)行開發(fā)。

從SVN到Git

首先需要在本地安裝SVN客戶端,這里由于Mac本身就支持SVN(可以在命令行下使用”svn —version"進(jìn)行檢測),所以我使用的是命令行的形式。若是在Windows環(huán)境下也可以下載命令行或者圖形化的客戶端。

  1. 創(chuàng)建一個文件夾,使用checkout命令,從SVN服務(wù)器下載代碼到本地


    Paste_Image.png
  2. 使用命令獲取SVN用戶信息,然后創(chuàng)建映射文件將SVN用戶與Git用戶進(jìn)行映射
Paste_Image.png

Paste_Image.png

將這個SVN用戶與Git用戶進(jìn)行映射文件保存為txt格式,命名為authors.txt

3.使用git svn clone 命令從SVN服務(wù)器取回代碼,并在本地創(chuàng)建Git倉庫,同時使用之前創(chuàng)建的用戶映射文件

Paste_Image.png

這里使用git svn clone的語法為:

  • 如果SVN倉庫為不標(biāo)準(zhǔn)的倉庫(沒有trunk、branches、tags)使用:
    git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --tags=/tags --authors-file=authors.txt <svn-repo>/<project> <git-repo-name>
  • 如果SVN為標(biāo)準(zhǔn)倉庫:
    git svn clone --stdlayout --authors-file=authors.txt https://svn.atlassian.com/Confluence ConfluenceAsGit

4.將通過git svn clone獲得倉庫,使用git clone當(dāng)前目錄 目的目錄**” 命令克隆到本地其他地方,使用git remote rm origin去除倉庫的上游

5.使用命令git remote add origin xxxxx(git倉庫)將這個遠(yuǎn)程倉庫添加到本地倉庫的上游

6.使用命令git push origin master提交代碼

至此大功告成,而且轉(zhuǎn)換的Git倉庫還保留著原先SVN中開發(fā)人員的提交紀(jì)錄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,555評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,516評論 2 379

推薦閱讀更多精彩內(nèi)容

  • &開發(fā)過程中離不開源代碼的管理, 目地:為了解決在軟件開發(fā)過程中,由源代碼引發(fā)的各種蛋疼、繁瑣的問題。 目前開發(fā)使...
    早起的蟲兒子被鳥吃閱讀 2,453評論 0 16
  • 對于軟件開發(fā)人員來說,版本控制系統(tǒng)他們再熟悉不過了,所謂版本控制系統(tǒng)就是軟件項目開發(fā)過程中用于儲存開發(fā)人員所寫代碼...
    程序員的那點事閱讀 1,559評論 0 18
  • 源代碼管理工具的起源 為什么會出現(xiàn)源代碼管理工具? 為了解決在軟件開發(fā)過程中,由源代碼引發(fā)的各種蛋疼繁瑣問題 源代...
    小白文_Vincent閱讀 3,195評論 2 8
  • 文/青山若夫 1. 兒時伙伴娟子入獄的消息在朋友圈傳開時,猶如一顆炸雷投在我的心里。我無論如何也想不到一個年紀(jì)輕輕...
    青山若夫閱讀 1,628評論 17 39
  • 一個人是一座島 文/莫偶然 最開始的時候只有一座島,島很大,從最南邊到最北氣候截然不同,最東到最西生活的生物千奇百...
    莫偶然閱讀 2,639評論 9 62