🔧

LibGit2Sharpを使用してGitリポジトリを操作する方法

2024/10/04に公開

解法

LibGit2Sharpを使用してGitリポジトリを操作する基本的な方法を紹介します。以下のC#コードは、ファイルの作成、追加、コミット、そしてリモートリポジトリへのプッシュを行います。

using LibGit2Sharp;
using System;
using System.IO;

// トークンを第一引数から取得
string token = args[0];

// リポジトリとファイルの設定
string repoPath = @"D:\NuitsLabo";
string fileName = "example.txt";
string filePath = Path.Combine(repoPath, fileName);
string fileContent = "Hello, LibGit2Sharp";
string commitMessage = "Add example.txt";
string branchName = "main";

// ファイルを作成し、内容を書き込む
File.WriteAllText(filePath, fileContent);

// リポジトリを開く
using var repo = new Repository(repoPath);

// 1. ファイルの追加(ステージング)
Commands.Stage(repo, fileName);

// 2. コミット
var author = new Signature("Your Name", "your.email@example.com", DateTimeOffset.Now);
var committer = author;
var commit = repo.Commit(commitMessage, author, committer);

// 3. プッシュ(コマンドライン引数から取得したトークンを使用)
var remote = repo.Network.Remotes["origin"];
var options = new PushOptions
{
    CredentialsProvider = (_url, _user, _cred) =>
        new UsernamePasswordCredentials { Username = token, Password = string.Empty }
};

repo.Network.Push(remote, $"refs/heads/{branchName}", options);

解説

このコードは以下の操作を行います:

  1. コマンドライン引数からトークンを取得します。
  2. 指定されたパスにファイルを作成し、内容を書き込みます。
  3. Gitリポジトリを開きます。
  4. 作成したファイルをステージングエリアに追加します。
  5. 変更をコミットします。
  6. リモートリポジトリに変更をプッシュします(トークン認証を使用)。

補足情報

  • このコードを実行する前に、LibGit2SharpをNuGetからインストールする必要があります。
  • トークンは個人アクセストークン(PAT)を使用しています。これはGitHubやGitLabなどのサービスから取得できます。
  • リポジトリパスやファイル名、著者情報は適宜変更してください。
  • エラーハンドリングは省略されていますが、実際の使用時には適切に実装することをお勧めします。
  • トークンはセキュリティ上重要な情報です。実際の運用では、環境変数や安全な設定管理システムを使用することを検討してください。

Discussion