Meta(旧Facebook)は、社内向けのユーザーフレンドリーでスケーラブルなソースコード管理システム「Sapling」のGit互換クライアントをオープンソース化した。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Meta(旧Facebook)は2022年11月15日(米国時間)、社内向けのユーザーフレンドリーでスケーラブルなソースコード管理システム「Sapling」のGit互換クライアントをオープンソース化したと発表した。
Saplingクライアントは、互換性のあるSaplingサーバおよび仮想ファイルシステム(Metaは将来、これらもオープンソース化したい意向)との組み合わせにより、数千万のファイル、数千万のコミット、数千万のブランチを持つMetaの社内リポジトリを管理してきた。
MetaはSaplingシステムを、主に大規模なモノリシックリポジトリ(モノリポ)で使用しているが、SaplingクライアントはGitリポジトリのクローンや操作もサポートしており、開発者はGitHubなどのGitホスティングサービスの操作に利用することもできる。
Metaは2012年ごろ、急速に大規模化していた社内のモノリポをさらにスケールアップしていくための取り組みとして、Saplingの開発を開始した。当時利用していたソースコード管理システムでは、Metaの大規模リポジトリを扱えず、リポジトリを分割するとモノリポの利点(依存関係管理を簡素化できる、広範な変更を迅速に反映できるなど)が失われることから、Metaはソースコード管理システムのスケールアップを目指した。
Saplingは、オープンソースの分散型バージョン管理システム「Mercurial」の拡張として開発を開始し、新しいストレージフォーマット、ワイヤプロトコル、アルゴリズム、動作といった特徴を持つ独自システムとして成長するに至った。MetaはSaplingのスケーラビリティだけでなく、ソース管理での使い勝手の向上にも力を入れるようになった。
その結果としてSaplingクライアントは、GitやMercurialのユーザーになじみのあるものになっており、リポジトリのクローン、コミット、リベース、コミットのプッシュなど、全てのコマンドがシンプルで使いやすいように設計されている。「各コマンドは1つのタスクを実行」「ローカルブランチの名前は任意」「ステージングエリアがない」と、Metaは説明している。
さらに、MetaはSaplingの使い勝手の良さを、3つの領域を取り上げて紹介している。
最も重要なSaplingコマンドの一つとして、スマートログ(sl)がある。Saplingクライアントで「sl」コマンドを引数なしで実行するだけで、「全てのローカルコミット」「現在の場所」「重要なリモートブランチの場所」「どのファイルが変更されたか」「どのコミットが古いか」「どのコミットに新しいバージョンがあるか」などを確認できる。
またスマートログでは、重要でないリモートブランチは表示されず、メインにある何千もの無関係なコミットは、破線の後ろに隠される。そのため、リポジトリのサイズにかかわらず、リポジトリの明確で簡潔な全体像が得られる。
GUI(グラフィカルユーザーインタフェース)に慣れている人のために、スマートログの対話的なWeb UIも提供されている。「sl web」を実行するだけでWebブラウザが起動し、そこからスマートログ、コミット、修正、チェックアウトなどを表示できる。
「sl undo」「sl redo」「sl uncommit」「sl unamend」のようなコマンドを使えば、多くの操作を簡単に元に戻せる。「sl hide」「sl unhide」のようなコマンドは、コミットを簡単かつ安全に隠したり、再表示したりできる。
Saplingは明確なコマンドとワークフローを提供し、スタック内のコミットの編集、並べ替え、理解を容易にする。
スタック内のコミットを編集したい場合、「sl goto COMMIT」でコミットをチェックアウトし、変更を加え、「sl amend」で修正すれば済む。Saplingがスタックの先頭を、新しく修正されたコミットに自動的に移動(リベース)するので、直ちにコンフリクトを解決できる。直ちにコンフリクトを修正しない場合は、そのコミットで作業を続け、後で「sl restack」を実行して、スタックを再び元に戻せる。
Saplingでは、スタックをナビゲートするコマンド(sl next、sl prev、sl goto top/bottom)や、スタックを調整するコマンド(sl fold、sl split)も提供される。また、作業コピーから未コミットの変更をスタック内の適切なコミットに自動的に取り込めるコマンド(sl absorb、sl amend -to COMMIT)も利用できる。
Metaは将来的に、Saplingと互換性のある仮想ファイルシステムのオープンソース化も目指している。この仮想ファイルシステムにより、任意の大きさの作業コピーを扱い、変更したファイルの数にかかわらず、チェックアウトを高速化できるようになるとしている。
さらに、Saplingと互換性のあるサーバも、オープンソース化を目指している。このサーバが提供するスケーラブルで分散型のソース管理サービスは、MetaでSaplingの運用に使われている(近いうちにGitリポジトリの運用にも使われる)。このサーバは、多くの新しいソース管理体験を可能にするという。
Copyright © ITmedia, Inc. All Rights Reserved.