概要
MetaがGit互換のソース管理クライアントをオープンソース化したみたいです。
折角なので試してみようかと思います。
導入
1. 最新リリースを入手する
GitHubのリポジトリから最新リリースを落としてきます。
https://github.com/facebook/sapling
Windowsの場合はzipファイルです。解凍して適当なディレクトリに置きます。
公式ドキュメントではC:\Program Filesに配置していますね。
Saplingの全機能を使うためにはさらに以下が必要みたいです
- Git for Windows (Gitリポジトリを扱う場合)
- Node.js (v10以降、
sl webコマンドを使うために必要)
2. Pathを通す
slコマンドを使うために環境変数にPathを通しておきます。
PowerShellのSet-Locationと競合するようなので、PowerShellで使うときはエイリアスを変更する必要があるようです。
PS> Set-Alias -Name sl -Value 'C:\Program Files\Sapling\sl.exe' -Force -Option Constant,ReadOnly,AllScope
PS> sl --version
Sapling 20221108.091155.887dee39
3. 設定
初回のみ以下のコマンドで設定ファイルを作る必要があります。
sl config --user
丁寧に説明文や設定例が記載されているので、それに従って設定します。
4. GitHubと認証する
公式曰く、GitHub CLIを使うのが推奨とのこと。
以下のコマンドで認証できます。
gh auth login --git-protocol https
GitHub Enterprise Serverとも認証できるので企業でも使いやすいですね。
利用
1. クローン
試しにsaplingのリポジトリをクローンします
$ sl clone https://github.com/facebook/sapling
$ cd sapling
$ sl
@ e11a98084 21 minutes ago evangrayk remote/main
│ Make code font not red by default
~
ディレクトリの中で、引数なしでslコマンドを実行するとコミットグラフが表示されるようです。
上記の場合Make code font not red by defaultは直近のコミットのタイトルです。
Gitの場合はリポジトリのフォルダ内に.gitというフォルダが作られますが、Saplingの場合は.slフォルダが作られるんですね。
2. コミット
適当にファイルを作ってコミットしてみます
$ echo 'Hello, World!' > hello.txt
$ sl add .
$ sl commit -m "コミット"
$ sl
@ 2xxxxxxxf 2 minutes ago xxxxxxxx
╭─╯ コミット
│
o exxxxxxx4 61 minutes ago remote/main
│
~
コミットグラフが表示されますが、見た感じ自動的にブランチが分岐しているようです。
3. GUI操作
以下のコマンドを打つとコミットグラフがブラウザで表示されます
$ sl web
4. プルリクエストの作成
このリポジトリでは実験できませんが、
プライベートな自分の実験用リポジトリで試せます。
$ sl pr
を打ち込むとプルリクを作成します。
この時、プルリクはpr1というブランチが自動で作られていました。
ブランチを切らなくても自動で別ブランチとしてスタックを作ってプルリクを出してくれるようです。
5. ReviewStackの利用
Metaの内部で利用されるコードレビューツールに触発され、GitHubのUIを意識した、GitHub用プルリクレビューツールのようです。
SaaSみたいで、運営自体はMetaが行っているようです。
なので、利用時にアクセス許可を求められます。認証情報等はブラウザのローカルに保存されるそうですが、企業では使いづらいかもしれません。
とりあえず、使いかたは簡単で、プルリクのアドレスを編集するだけです。
# 何か適当なリポジトリのプルリクをブラウザで開くと、以下のアドレスだと思います。
https://github.com/user/repo/pull/1
# このアドレスの github.com を reviewstack.dev に置き換えます
https://reviewstack.dev/user/repo/pull/1
ブラウザで上記アドレスへアクセスするとアクセス許可を求められ、
許可すると、プルリクのレビュー画面が表示されます。
画面イメージは公式リファレンスを見るのが早いですね( https://sapling-scm.com/docs/addons/reviewstack/ )
シンプルです。しかし、大体これで事足りる気がします。
VSCcode拡張機能について
VSCode用の拡張機能が存在します。
Visual Studio Code Marketplace | Sapling SCM
試しに入れてみました。Ctrl + Shift + Pでコマンドパレットを表示して利用するようです。
以下の感じのインターフェースです。

しかし、私の環境がイマイチなのかこれらはエラーが出て動いてくれませんでした。
まとめ
今回試しにSaplingを使ってみましたが、最も一般的なワークフローを少ないコマンドで実施している印象を受けました。
GitはVSCodeで強力にサポートされていたり、その他Gitクライアントも多数存在しているため、まだまだGitの方が都合が良い場面が多いかもしれませんが、プルリクを出す機能があったりして面白かったです。
開発状況は気にかけていこうと思います。

