methaneのブログ

このブログに乗せているサンプルコードはすべてNYSLです。

Pythonの次のバージョン管理システムがMercurialに決定

1年くらい前から、マスターのSubversionとミラーのMercurial/Bazaar/Gitを運用して、Subversionの次のSCMを選んでいたPython
Gitはもっと前に却下されていたんだけど、とうとう今日、GuidoがMercurialに決定したとMLでアナウンスした。理由は、

  • Mercurialの方が(Guidoの回りで)人気が高い
  • Subversionユーザーの移行が楽
  • 多くのオペレーションでMercurialの方が速い

個人的にMercurialは捨ててBazaarメインにしていってたので残念。オペレーションに関しては、1.9くらいから大分Bazaarも早くなったんだけどなぁ。

Mercurialをやめてたのは、ファイル名をUnicodeにしないかというあたりのMLの流れから。反対派が「ファイル名はバイト列だ!」と主張していた根拠は、Makefile等たくさんのファイルで中にファイル名が記述されていてファイル名のエンコーディングが変わると対応できなくなるからとかいうものだったんだけど、同じくファイル名をUnicodeで扱ってるSubversionで問題になっているようには思えない。Makefileみたいにファイル名のエンコーディングに対応できないシステムでは、もとからASCII以外のファイル名は使わないべき。

そもそもロケールエンコーディングって、コマンドライン以外ではあまり重要ではない。ファイルシステムがファイル名をUnicodeで記録していたり、GTKでは文字列を全部UTF-8で扱ってたりする。Windowsも、コマンドプロンプトではまだcp932とか使わないといけないけど、GUIやファイル系APIUTF-16コマンドライン上のエンコーディングなんて薄っぺらいものに、リポジトリに格納するファイル名という本質的なデータが依存するのは許せない。