Git
Chapters ▾ 2nd Edition

A2.1 Appendix B: Gitをあなたのアプリケーションに組み込む - Gitのコマンドラインツールを使う方法

開発者向けのアプリケーションを開発しているなら、ソース管理機能を統合することで利益が得られる可能性は高いでしょう。 また、非開発者向けのアプリケーション(例えばドキュメントエディタなど)であっても、バージョン管理機能から利益を享受できる可能性があります。Gitのモデルは、様々なシナリオに上手く適合します。

Gitをアプリケーションに統合する場合、やり方は大きく分けて3種類あります。1つ目はシェルのプロセスを生成してGitのコマンドラインツールを使う方法、2つ目はLibgit2を使う方法、3つ目はJGitを使う方法です。

Gitのコマンドラインツールを使う方法

1つ目の方法は、シェルのプロセスを生成して、Gitのコマンドラインツールを使って処理を行うやり方です。 この方法には、標準的な方法であるという利点がありますし、Gitのすべての機能がサポートされています。 また、ほとんどの実行環境には、比較的簡単にコマンドライン引数つきでプロセスを呼び出す機能が備わっているため、非常に簡単でもあります。 ただし、この方法にはいくつか欠点があります。

一つ目は、出力が全てプレインテキストであるという点です。 これはつまり、処理の進捗や結果を取得したければ、Gitの出力フォーマット(ちょくちょく変わる)を自前でパースする必要があるということです。これは非効率的ですし、エラーも発生しやすくなります。

2つ目は、エラーから回復する方法がないという点です。 リポジトリが何らかの形で壊れていたり、ユーザが設定に不正な値を指定していた場合でも、Gitは単に多くの操作を受け付けなくなるだけです。

3つ目は、プロセス管理です。 シェル環境を別プロセスとして管理する必要があるため、処理が不必要に複雑になります。 複数のGitのプロセスを協調動作させるのは(特に、複数のプロセスが同じリポジトリへアクセスする可能性がある場合は)、時に相当な困難を伴います。