2012-02-19 12 views
2

インデックスに追加するチャンクを手動で選択するには、git add -pがあることがわかりました。しかし、Git CLI APIを使用して、プログラムで特定のチャンクを追加する方法を探しています。プログラムでチャンクをGitリポジトリに追加するには?

これはCLIで可能ですか、または私が使用しているC#のAPIバインディングが必要ですか?

+0

バインディングを使用できるときに、なぜCLIを使用しようとしていますか? – svick

+0

私は実際にLibGit2Sharpを探していますが、CLI APIをよく知っていて、これまでより簡単に見つけることができます:) – Tower

+0

'git-add'のマニュアルページでは、' -p'を使って対話的に**選択できます追加するかどうかは分かりません。その言葉は、スクリプト化された操作ではなく、人間になります。 –

答えて

3

私は行って、git add -pの仕組みを見ました。あなたは知りたくはありません。

実際には、git diffの出力(実際にはgit diff-files -p)を解析して差分を手動で処理します。それは、あなたがそれを望むならば、それを実行中の差分に追加し、最終的には生成されたdiffとgit apply --cachedを実行します。

この1,600行のパッチ操作スクリプトであなたが望むことを実行できるようにすることを強くお勧めします。

注目すべき部分は、それがちょうどすべての兄貴のための質問のループの処理を行って、そしてあなたのための差分にそれらを圧縮するだけではあります@hunk = coalesce_overlapping_hunks(@hunk)周辺、および実際のgitツールと周りmy %patch_modes = ...すべての相互作用が含まれます説明する。あなたは上に示したコマンドだけでそれがどのように構築されているかを見ることができます。

関連する問題