GHC の開発の darcs から git への移行

3月31日から4月2日にかけて行われた、GHC の開発 repository の darcs から git への移行に関するつぶやきをまとめてみました。(その前からちょくちょくと移行準備が行われていましたが、本題とは外れるので準備段階でのつぶやきは省いています。)
4
shelarcy(しぇらーしぃ) @shelarcy

Git への移行作業のため、GHC やライブラリなどの repository が read-only に設定されたそうです。 http://www.haskell.org/pipermail/cvs-ghc/2011-March/060767.html

2011-03-31 23:09:35
shelarcy(しぇらーしぃ) @shelarcy

なお、Git への移行後すぐに行われる予定だった GHC 7.2.1 のリリースは、Simon Peyton Jones 多忙のため5月の中頃から末にかけて行われる予定に変わりました。 http://j.mp/gpU433

2011-03-31 23:11:45
shelarcy(しぇらーしぃ) @shelarcy

.。oO(April Fool 扱い回避のため、今のうちに書いておきました。)

2011-03-31 23:13:18
mooz @stillpedant

Darcs どうなってしまうん……とつぶやこうとして,日付を思い出した.全く. "InfoQ: Haskell moves to Git" - http://j.mp/dP7Xvj

2011-04-01 18:05:41
shelarcy(しぇらーしぃ) @shelarcy

git への移行にあたり、GHC Wiki にこれまで darcs repository で開発していた変更を git repository に反映させるための方法を書いたドキュメントが提供されています。 http://j.mp/hGwvNx

2011-04-02 11:13:36
shelarcy(しぇらーしぃ) @shelarcy

あと (GHC や付属のライブラリ開発者を含め) 古くからの Haskell ユーザーには darcs ユーザーが多いので、darcs ユーザー向けの git マニュアルなんかも用意されています。 http://j.mp/ifsTjZ

2011-04-02 11:17:31
shelarcy(しぇらーしぃ) @shelarcy

.。oO(こっちは正確には、 darcs が darcs 2 になる前の、一度他のバージョン管理システムに移行しようとしていた頃に書かれたマニュアルを更新したものですが。)

2011-04-02 11:20:33
shelarcy(しぇらーしぃ) @shelarcy

さて GHC が darcs から git に移行した理由ですが、別 branch で開発した多くの変更(patch)を HEAD(Current)に merge する際の使い勝手が問題でした。 http://j.mp/ecaYC5

2011-04-02 11:39:54
shelarcy(しぇらーしぃ) @shelarcy

開発中の darcs の rebase 機能も使ってみたようですが、変更間の衝突をうまく解決する方法が見つからず git に移行することにしたようです。 http://twitter.com/shelarcy/status/32016164632657920

2011-04-02 11:53:39
shelarcy(しぇらーしぃ) @shelarcy

(移行の理由を推測する際によく挙がる)性能に関しては darcs 2 で大きく改善されたのですが、GHC の依存する全ライブラリやツールを darcs2 形式に移行させることができなかったのと、

2011-04-02 11:58:02
shelarcy(しぇらーしぃ) @shelarcy

(patch が置いてかれることを警戒してか) Ian が repository に対して "darcs optimize"コマンドをあんまり使わなかったことが性能面のネックとなっていたと思います。

2011-04-02 11:59:15
shelarcy(しぇらーしぃ) @shelarcy

あと、Simon Marlow は patch 間の変更が衝突する際の解決にフラストレーションを感じていたようですし、GHC や base パッケージへの darcs 2 化は行われていたので、性能はメインの理由ではないと思います。多分。 http://j.mp/gLccP5

2011-04-02 12:03:45
shelarcy(しぇらーしぃ) @shelarcy

結局、darcs は衝突しない変更(patch)を選んで入れるのに適していたバージョン管理システムだったものの、Simon Marlow の開発では衝突する変更が主な問題となっていたために、衝突の解決が得意な git に移行したという感じでしょうか。

2011-04-02 12:07:37
shelarcy(しぇらーしぃ) @shelarcy

ただ、git に移行したからといって github に repository を移行したわけではありません。というわけで、この記事は間違いです。 http://www.infoq.com/news/2011/04/haskell-git

2011-04-02 12:16:27
shelarcy(しぇらーしぃ) @shelarcy

.。oO(github に mirror を作るという話はありますけれど……。あと、リンク先の github の repository は古いですね。)

2011-04-02 12:21:04
shelarcy(しぇらーしぃ) @shelarcy

サーバー移行の際に無効になってしまいましたが。 > http://cvs.haskell.org/darcs/ghc

2011-04-02 12:30:06
shelarcy(しぇらーしぃ) @shelarcy

というわけで、残念ながら以下のコマンドは無効です。 git clone http://cvs.haskell.org/darcs/ghc.git

2011-04-02 12:31:32
Lennart Kolmodin @kolmodin

"git clone ghc" in less than 3 minutes, "./sync-all get" in less than 7 minutes. So less than 10 minutes for ghc! An improvement. #haskell

2011-04-02 17:48:56
shelarcy(しぇらーしぃ) @shelarcy

新しい github の mirror ができたようですね。 https://github.com/ghc/ghc ……ただ、まだ本体だけで各種パッケージは登録されていないようですが。

2011-04-03 13:42:41
shelarcy(しぇらーしぃ) @shelarcy

git protocol 使っていないので、darcs.haskell.org の GHC の git repository が(おそらく darcs repository に比べて)遅いという話が出てますね。 http://j.mp/fY19Ly

2011-04-04 18:01:44