Skip to content

Commit 1e2bdea

Browse files
Saamannulltoken
authored andcommitted
Insert new reflog entry on merge commit
1 parent 2dd033f commit 1e2bdea

2 files changed

Lines changed: 18 additions & 3 deletions

File tree

LibGit2Sharp.Tests/CommitFixture.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,11 +542,22 @@ public void CommitParentsAreMergeHeads()
542542
string mergeHeadPath = Path.Combine(repo.Info.Path, "MERGE_HEAD");
543543
File.WriteAllText(mergeHeadPath, "9fd738e8f7967c078dceed8190330fc8648ee56a\n");
544544

545-
Commit newMergedCommit = repo.Commit("Merge commit", DummySignature, DummySignature, false);
545+
Assert.Equal(CurrentOperation.Merge, repo.Info.CurrentOperation);
546+
547+
Commit newMergedCommit = repo.Commit("Merge commit", DummySignature, DummySignature);
548+
549+
Assert.Equal(CurrentOperation.None, repo.Info.CurrentOperation);
546550

547551
Assert.Equal(2, newMergedCommit.Parents.Count());
548552
Assert.Equal(newMergedCommit.Parents.First().Sha, "c47800c7266a2be04c571c04d5a6614691ea99bd");
549553
Assert.Equal(newMergedCommit.Parents.Skip(1).First().Sha, "9fd738e8f7967c078dceed8190330fc8648ee56a");
554+
555+
// Assert reflog entry is created
556+
var reflogEntry = repo.Refs.Log(repo.Refs.Head).First();
557+
Assert.Equal(repo.Head.Tip.Id, reflogEntry.To);
558+
Assert.NotNull(reflogEntry.Commiter.Email);
559+
Assert.NotNull(reflogEntry.Commiter.Name);
560+
Assert.Equal(string.Format("commit (merge): {0}", newMergedCommit.MessageShort), reflogEntry.Message);
550561
}
551562
}
552563

LibGit2Sharp/Repository.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -721,12 +721,12 @@ public Commit Commit(string message, Signature author, Signature committer, bool
721721
Proxy.git_repository_merge_cleanup(handle);
722722

723723
// Insert reflog entry
724-
LogCommit(result, amendPreviousCommit, isHeadOrphaned);
724+
LogCommit(result, amendPreviousCommit, isHeadOrphaned, parents.Count() > 1);
725725

726726
return result;
727727
}
728728

729-
private void LogCommit(Commit commit, bool amendPreviousCommit, bool isHeadOrphaned)
729+
private void LogCommit(Commit commit, bool amendPreviousCommit, bool isHeadOrphaned, bool isMergeCommit)
730730
{
731731
// Compute reflog message
732732
string reflogMessage = "commit";
@@ -738,6 +738,10 @@ private void LogCommit(Commit commit, bool amendPreviousCommit, bool isHeadOrpha
738738
{
739739
reflogMessage += " (amend)";
740740
}
741+
else if(isMergeCommit)
742+
{
743+
reflogMessage += " (merge)";
744+
}
741745

742746
reflogMessage = string.Format("{0}: {1}", reflogMessage, commit.MessageShort);
743747

0 commit comments

Comments
 (0)