1

次の StackOverflow エントリは、libgit2sharp を使用して、GitHub.com からテキスト ファイルの最新のコンテンツを取得する方法を説明しています: How to get file's contents on Git using LibGit2Sharp?

しかし、おそらく 1 か月前の日時を入力し、その日時のコンテンツを取り戻す必要があります。私は解決策があると思っていましたが、十分に到達する前に失敗しました:

// This C# fails after returning a few entries. After 10 minutes says out of memory.

IEnumerable<LogEntry> enumbLogEntries_LogEntry_qb = repo.Commits
  .QueryBy("articles/sql-database/sql-database-get-started.md");

foreach (LogEntry logEntry in enumbLogEntries_LogEntry_qb)
{
  Console.WriteLine(logEntry.Commit.Committer.When); // Date.

  // I hope to use logEntry.Target to get the blob of content, I think.
}

Octokit for .NET も試していますが、やはり最新のコンテンツしか取得できません。任意のソリューションをいただければ幸いです。重いGIT用語が答えを理解できないものにする可能性があることを告白します。

4

1 に答える 1

1

次のようなことを試すことができます: 関連する日時に存在する最新のコミットを見つけます (以下で呼びdtます)。次に、そのコミット内でファイルを見つけて、その内容を取得します (ファイルがそのコミットに存在する場合)。

using LibGit2Sharp;
using System.IO;

DateTimeOffset dt = DateTimeOffset.Now;  // replace this with the desired D/T
var c = repo.Commits
    .Where(c_ => c_.Author.When < dt)
    .OrderByDescending(c_ => c_.Author.When)
    .FirstOrDefault()
    ;
if (c != null)
{
    Tree tree = c.Tree;
    Blob blob = (Blob)(tree["path/to/file"].Target);
    StreamReader reader = new StreamReader(blob.GetContentStream());
    // read the file with 'reader'
}
于 2016-12-26T18:55:02.223 に答える