libgit2 / libgit2/libgit2sharp
CommitLog order does not reflect order of commits.
オープン
まだ誰も着手していません。
- 主要言語
- C#
- スター
- 3.5k
- フォーク
- 925
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
Hi!
I am currently working on an E2E test which involves creating many commits, I am running into some issues however.
The repository's commit log order is different compared to the order of commits I have made.
Reproduction steps
public LibGitRepositoryBuilder WithManyCommits(int numberOfCommits, string commitMessage)
{
for (int i = 0; i < numberOfCommits; i++)
{
// Create & stage file.
var filePath = Path.Combine(_repoPath, $"{Guid.NewGuid()}.txt");
File.Create(filePath).Dispose();
var relativeFilePathToRoot = Path.GetRelativePath(_repository.Info.WorkingDirectory, filePath);
Commands.Stage(_repository, relativeFilePathToRoot);
_repository.Commit($"{commitMessage}-{i}", new Signature("bot", "bot@noreply.com", DateTimeOffset.UtcNow), new Signature("bot", "bot@noreply.com", DateTimeOffset.UtcNow));
}
return this;
}
var repo = new LibGitRepositoryBuilder(path)
.WithManyCommits(100, "Hello world")
.Build();
Expected behavior
- "Hello world-99"
- "Hello world-98"
- "Hello world-97"
- ....
Actual behavior
Version of LibGit2Sharp (release number or SHA1)
0.30.0
Operating system(s) tested; .NET runtime tested
OS
Edition Windows 11 Pro for Workstations
Version 23H2
Installed on 22/02/2024
OS build 22631.3593
Experience Windows Feature Experience Pack 1000.22700.1003.0
.NET
.NET 8.0
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、示されている LibGitRepositoryBuilder.WithManyCommits の例で順序の問題を再現し、リポジトリのコミットログがどのように列挙されているかを調べます。Issue ではソースファイルもテストも指定されていないため、最初に CommitLog の実装と既存のログテストを見つけます。順番に作成されたコミットが、期待どおり新しいものから先に表示されれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- csharp, git
- 領域
- devtools
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100