Skip to content

Commit 63f8d6d

Browse files
committed
Merge pull request #942 from libgit2/ntk/history_rewriter_notes
Restrict potential reference targets of HistoryRewriter
2 parents cc04c43 + 59eb6c8 commit 63f8d6d

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

LibGit2Sharp.Tests/FilterBranchFixture.cs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,8 @@ public void CanRewriteAuthorOfCommits()
162162

163163
AssertSucceedingButNotError();
164164

165-
var nonBackedUpRefs = repo.Refs.Where(x => !x.CanonicalName.StartsWith("refs/original"));
165+
var nonBackedUpRefs = repo.Refs.Where(
166+
x => !x.CanonicalName.StartsWith("refs/original/") && !x.CanonicalName.StartsWith("refs/notes/"));
166167
Assert.Empty(repo.Commits.QueryBy(new CommitFilter { Since = nonBackedUpRefs })
167168
.Where(c => c.Author.Name != "Ben Straub"));
168169
}
@@ -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)