libgit2 / libgit2/libgit2sharp

Unable to iterate commits on all branches for a specific path (KeyNotFoundException)

Abierto
#1,599 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
C#
Estrellas
3.5k
Forks
925
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

When you attempt to use repository.QueryBy(string, CommitFilter) and specify all branches as the IncludeReachableFrom parameter, a KeyNotFound exception is thrown.

Reproduction steps

Add the following test to FileHistoryFixture to reproduce the issue

        [Fact]
        public void CanListChangesThatIncludeMultipleBranches()
        {
            var repoPath = CreateEmptyRepository();
            const string path1 = "Test1.txt";
            const string path2 = "Test2.txt";

            using (var repo = new Repository(repoPath))
            {
                // Make initial changes.
                var initial = MakeAndCommitChange(repo, repoPath, path1, "Hello World", "initial commit");
                MakeAndCommitChange(repo, repoPath, path2, "Goodbye world", "unrelated file change 1");
                var update1 = MakeAndCommitChange(repo, repoPath, path1, "Hello World!", "added punctuation");
                var branch = repo.CreateBranch("branch");
                Commands.Checkout(repo, branch);
                var branchUpdate = MakeAndCommitChange(repo, repoPath, path1, "Hello World again", "branch change");
                MakeAndCommitChange(repo, repoPath, path2, "Goodbye cruel world", "unrelated file change 2");
                Commands.Checkout(repo, repo.Branches["master"]);
                var update2 = MakeAndCommitChange(repo, repoPath, path1, "Hola Mundo", "switching to spanish");

                var commits = repo.Commits
                    .QueryBy(path1, new CommitFilter { IncludeReachableFrom = repo.Branches, SortBy = CommitSortStrategies.Topological})
                    .ToList();

                Assert.Equal(4, commits.Count);
                Assert.Equal(branchUpdate.Sha, commits[0].Commit.Sha);
                Assert.Equal(update2.Sha, commits[1].Commit.Sha);
                Assert.Equal(update1.Sha, commits[2].Commit.Sha);
                Assert.Equal(initial.Sha, commits[3].Commit.Sha);
            }
        }
Version of LibGit2Sharp (release number or SHA1)

f8e2d42ed9051fa5a5348c1a13d006f0cc069bc7

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Añade la prueba de regresión proporcionada a FileHistoryFixture y ejecútala contra repository.Commits.QueryBy con el CommitFilter multi-branch. Traza la ruta de QueryBy que gestiona IncludeReachableFrom y compara su comportamiento con los cuatro commits esperados. La tarea está terminada cuando la prueba ya no lanza KeyNotFoundException y devuelve los cuatro commits en el orden indicado.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
csharp, git
Área
tooling
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.