ディスカッション (11件)
分散型バージョン管理システムとしてGitの影に隠れがちですが、実は20年もの歴史を持つ「Mercurial」が、なぜ今もなお現役で活用されているのか?その秘密に迫る動画が公開されました。長年コミュニティで愛され続ける理由や、独自の進化を遂げた背景に興味がある方はぜひチェックしてみてください。
以前いた大手テック企業では、レガシーなバージョン管理システムの上にMercurialのレイヤーを被せて使ってた。これすごく良かったんだよね。Gitで普段扱わなきゃいけないようなワークフローより、ずっとシンプルで分かりやすかった。Gitの方が強力なのは理解できるけど、大半のチームにそこまでの機能が必要なのかな?
Mercurialは大好きだったな。今でもLinuxいじり用に置いてあるLinux MintのVMに入れているくらいだし。特に気に入ってたのはTortoiseHgで、これがあればMercurialとWindowsエクスプローラーが統合できるんだ。似たようなTortoiseGitもあるけど、少なくとも本格的に開発をやってた頃は結構問題が多かった。
20年近く前、Subversionの後継としてGitとMercurialのどちらにするか選定する手伝いをしたことがある。残念ながら、Mercurialという間違った方を選んでしまったんだけどね。
「間違った」と言ったのは、明らかにGitが覇権を握ったからで、それ以来Mercurialは使っていないから。ただ、技術的な観点から見れば正しい選択だったと今でも思ってる。必要な機能とパフォーマンスをすべて備えつつ、Mercurialの方が圧倒的にユーザーフレンドリーだったからね。まあ、どちらが生き残るかなんて未来を予知することはできなかったけど!
Matt Mackallは最近何してるか知ってる人いる?彼がMercurialを始めて、早い段階から熱意を持って周りを巻き込んでいたのを見てたから、彼が自分の作ったものや参加した仲間(いわゆる「hg crew」)を大事にしていたのがよく伝わってきた。2010年頃だと思うけど、エンジニアとしての思考法を彼からたくさん学んだし、プロジェクト内の個性的な面々を親切かつ誠実にまとめている姿も印象的だった。
もう何年もhgは使ってないな。Bitbucketがサポート終了したのが決定打だったし、自分でホスティングする気もなかったし。Gitの使い方はすごくベーシックで、gitconfigもここ数年ほぼ手付かず。でもたまに行き詰まると、結局ネットで検索しまくって、いろいろな記事やコメントを見ては「あー、hg使いたいなあ」ってなる。
jjが今後数年で正当な評価を受けるようになることを心から願ってる。
Mercurialの方が安全で優れていたよ。今でも使ってるし、やっぱりこっちの方が安全だと思う。
ただ、短命なブランチのための解決策であるはずのbookmarks機能は、理解するのが難しいね。僕が鈍いだけかもしれないけど、使いこなせなくて、そのせいでツール全体の有用性がだいぶ下がっちゃってる。
GitHubみたいなサイトが必要だよね。Heptapodを使えれば最高なんだけど、プロジェクトを立ち上げても何もできず、結局閉鎖しちゃったし。その点、今の光回線ならセルフホスティングはずっと現実的になったけどね。
ずっとGitよりMercurial派だったけど、Jujutsuが出てきた今、Mercurialの終焉はほぼ確実だと思う。
GitリポジトリでMercurialを使える信頼性の高い方法があれば生き残れるかもしれないけど、Jujutsuが使えるならわざわざそうする理由もないよね。
RedditではMercurialを使ってたよ。メイン言語をPythonに切り替えた直後にMercurialに移行したんだ。Pythonで書かれてる方が使いやすいだろうと思ってね。
オープンソース化する日までずっとMercurialを使ってたよ。実際こっちの方が気に入ってたんだけど、その時点で「みんな」がGitを使ってたから、移行しないとまともに見られないし、コントリビューションも得られないって分かってたんだ。2008年の話だね。[0]
当時はチケットシステム[1]とGitリポジトリを自前でホストしてたんだけど、使ってたシステムにはPull Request機能がなかったから、Linuxカーネルと同じようにメーリングリスト経由でgit-send-emailコマンドを使ってパッチを送ってもらうという、古いやり方でやってたよ。
一番凄かったのは、オープンソース化を祝う打ち上げパーティーをサンフランシスコでやった時のこと。会場の手配とか物理的な準備に時間がかかるから、数ヶ月前から日付を決めてたんだ。これがRedditにとって初めての「絶対に動かせない締切」だったよ。
僕はチケットシステムとコードリポジトリのセットアップを担当してたんだけど、同時にデプロイのために本番サーバーを公開リポジトリからプルするように切り替える作業もやってて、完全に透明性を確保しようとしてた(これも全部僕が設定したんだ)。
結局、会場のバーでラップトップを開いて、開場5分前までかけて最後の公開設定をしてたんだ。当時、僕はGitを使ってまだ1週間くらいしか経ってなかったのに!誰でもクローンできる人気リポジトリを運営することになってたんだから、いい思い出だよ。
BitbucketがGitへの移行を強制するまでずっとhgにしがみついてたよ。今でもGitは嫌いだけど、Perforceはそれ以上に嫌いだ。
まあ、結局言いたかったのはPerforceが最悪ってこと(笑)