從 Subversion 與 Mercurial 換成 Git

前陣子把公司裡所有的 repository 全部換成 Git 了...

由於 Git 與 Subversion/Mercurial 運作的方法不一樣,換完後也跟著換 Workflow。

原先 Subversion (1.5+) 對 branch 的 Workflow:

  • branchestrunk 兩個目錄,平常測試時都在 trunk 裡測試,測完後 merge 到 branches 再 deploy 到 production 主機上。
  • 缺點是,如果同時要測很多東西,merge 時得自己挑 revision。

用 Subversion 用一陣子,受不了他的速度後,有陣子在評估 Mercurial 與 Git。當時一直搞不定 Git 的 hook,所以就選了 Mercurial,所以有些 repository 用 Mercurial 開發了一陣子...

在 Mercurial 上,local branch 的功能一直沒搞定,所以會轉成 Mercurial 的 repository 都是不需要 local branch 的功能。當時從 Subversion 換 Mercurial 速度快了許多。

最後全部換成 Git 的主要原因是需要 local branch (anonymous branch),branch 的 Workflow 變成:

  • 主程式碼都在 master,所有的新功能 (以項目為單位) 開 branch 發展,最後再 merge 回 master。中央的 server 只放 master branch。

速度比 Mercurial 又快了不少,local branch 也成熟,gitweb 畫面還蠻好看也是主因 (也許會試看看 cgit,畫面看起來也不錯),這次換完後大家都還蠻開心的?

Subversion 轉換成 Git 的工具是 git-svn,把 branch 抓下來後去掉 Subversion 的資訊,直接將 master branch 推上 server。

Mercurial 轉 Git 用的是 fast-export,轉的速度相當快。轉完後要更改 branch 名稱,再將 master branch 推上 server。

7 thoughts on “從 Subversion 與 Mercurial 換成 Git”

  1. git好像沒有類似Tortoise SVN的介面, bzr/mercurial倒是有
    不知道貴公司整個轉過去為什麼沒人complain dvcs太難學或沒有Tortoise系列的tools, 我想貴公司負責coding的人應該全部都是guru吧~XD

    敝公司光svn想轉成dvcs就要評估大量RD的教育訓練成本和風險了, 還有MIS自己也應該不太想學新的maintain方式, 所以SVN應該還會繼續用到SVN不進版或公司倒閉為止了吧

  2. 不知道有沒有轉換 git 的後續發展?想知道其適用性及不適用性 @@"
    感謝

Leave a Reply

Your email address will not be published. Required fields are marked *