Skip to content

Commit f39a648

Browse files
committed
Silently ignore rewriting of commits under refs/notes/*
Fix #942
1 parent 296aa06 commit f39a648

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

LibGit2Sharp.Tests/FilterBranchFixture.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections;
23
using System.Collections.Generic;
34
using System.Linq;
45
using LibGit2Sharp.Tests.TestHelpers;
@@ -801,6 +802,26 @@ public void HandlesNameRewritingOfChainedTags()
801802
Assert.Equal(annotationB, backedUpTag.ResolveToDirectReference().Target);
802803
}
803804

805+
[Fact]
806+
public void RewritingNotesHasNoEffect()
807+
{
808+
var notesRefsRetriever = new Func<IEnumerable<Reference>>(() => repo.Refs.Where(r => r.CanonicalName.StartsWith("refs/notes/")));
809+
var originalNotesRefs = notesRefsRetriever().ToList();
810+
var commits = repo.Commits.QueryBy(new CommitFilter { Since = originalNotesRefs }).ToArray();
811+
812+
repo.Refs.RewriteHistory(new RewriteHistoryOptions
813+
{
814+
OnError = OnError,
815+
OnSucceeding = OnSucceeding,
816+
CommitHeaderRewriter =
817+
c => CommitRewriteInfo.From(c, author: Constants.Signature),
818+
}, commits);
819+
820+
AssertSucceedingButNotError();
821+
822+
Assert.Equal(originalNotesRefs.OrderBy(r => r.CanonicalName), notesRefsRetriever().OrderBy(r => r.CanonicalName));
823+
}
824+
804825
private static string TagNameRewriter(string name, bool isAnnotated, string target)
805826
{
806827
const string tagPrefix = "refs/tags/";

LibGit2Sharp/Core/HistoryRewriter.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,11 @@ public void Execute()
5959
// before A.
6060
foreach (var reference in refsToRewrite.OrderBy(ReferenceDepth))
6161
{
62-
// TODO: Check how rewriting of notes actually behaves
62+
// TODO: Rewrite refs/notes/* properly
63+
if (reference.CanonicalName.StartsWith("refs/notes/"))
64+
{
65+
continue;
66+
}
6367

6468
RewriteReference(reference);
6569
}

0 commit comments

Comments
 (0)