◆ Process で git コマンド呼び出す
◆ ツールから自動コミットなので Author と Committer も変えてみる

C# を bat ファイル代わりに使ってたときに ついでに git の処理もバッチ処理で自動でやりたいなと思ったのでやってみました

git を操作するためのライブラリもあるようですが できるだけデフォルトで使えるものでやりたかったので git コマンドを呼び出す形にしています
今回の例では dev ブランチを master ブランチにマージしています
コマンドを呼び出すだけなのでこのサンプルだけあればあとは好きに書き換えられると思います

static int executeCommand(string command, string arguments = "")
{
var process = new Process
{
StartInfo = new ProcessStartInfo(command)
{
Arguments = arguments,
UseShellExecute = false,
}
};
process.Start();
process.WaitForExit();
return process.ExitCode;
}

static void gitCommand(string arguments)
{
if (executeCommand("git", arguments) != 0)
{
throw new Exception("git command error");
}
}

var repo_path = @"C:\path\to\repository";
gitCommand($@"-C {repo_path} checkout master");
gitCommand($@"-C {repo_path} merge dev");
gitCommand($@"-C {repo_path} -c user.name=autocommit -c user.email=autocommit@autocommit commit --amend --no-edit --reset-author");

コマンドを呼び出すだけなので単純です
gitCommand メソッドに git コマンドの引数を渡せば実行してくれます

せっかくなので自動でコミットされたものとわかるように Author と Committer も変更するようにしています
Author だけなら --author でいいのですが Committer もとなると git config で設定しておかないといけないようで -c で git config を指定しています

--amend じゃなくても merge のときに --no-commit にして後から Author など指定してコミットもできますが git の使い方の話になるのでそのへんは省略します