從 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. stumble says:

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

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

  2. Sparkle says:

    但是git for windows很烂

  3. shoting says:

    To stumble
    有TortoiseGit喔
    而且更新的頗勤的

  4. Willie says:

    Mercurial 現在有 bookmarks / tasks (http://x.zpuppet.org/2009/03/09/mercurial-tasks-extension/) 的 extensions,搭配 rebase/transplant/strip 我想應該可以做到和 git local branch 差不多的功能?

    @shoting 不過和 TortoiseSVN 比起來, TortoiseGit 和 TortoiseHG 還有很大的進步空間吧... Orz

  5. lucky17 says:

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

  6. Gea-Suan Lin says:

    公司早就是純 Git 環境...

Leave a Reply

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