diff options
author | Lluis Sanchez <slluis.devel@gmail.com> | 2015-12-16 01:09:50 +0300 |
---|---|---|
committer | Lluis Sanchez <slluis.devel@gmail.com> | 2015-12-16 01:09:50 +0300 |
commit | 050eb0dea0d9e1c5422e4fdbb56ceeb0fb16f07e (patch) | |
tree | 613a2ee07a621275330088b674fc838edb6c99af /main | |
parent | cd402ebdaa8c3d5e6fc9776d9446e2cb15c927e6 (diff) | |
parent | 864a7af68f65ef8fe765719e725488714519a236 (diff) |
Merge pull request #1184 from mono/cycle6-bug34236
[Git] Fix rebase reordering commits.
Diffstat (limited to 'main')
2 files changed, 31 insertions, 2 deletions
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseGitRepositoryTests.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseGitRepositoryTests.cs index a3d92cdaf7..692da87379 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseGitRepositoryTests.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseGitRepositoryTests.cs @@ -497,5 +497,34 @@ index 0000000..009b64b foreach (var rev in revisions) Assert.AreEqual (GettextCatalog.GetString ("working copy"), rev); } + + [Test] + public void TestGitRebaseCommitOrdering () + { + var gitRepo = (GitRepository)Repo; + + AddFile ("init", "init", toVcs: true, commit: true); + + // Create a branch from initial commit. + gitRepo.CreateBranch ("test", null, null); + + // Create two commits in master. + AddFile ("init2", "init", toVcs: true, commit: true); + AddFile ("init3", "init", toVcs: true, commit: true); + + // Create two commits in test. + gitRepo.SwitchToBranch (new NullProgressMonitor (), "test"); + AddFile ("init4", "init", toVcs: true, commit: true); + AddFile ("init5", "init", toVcs: true, commit: true); + + gitRepo.Rebase ("master", GitUpdateOptions.None, new NullProgressMonitor ()); + + // Commits come in reverse (recent to old). + var history = gitRepo.GetHistory (LocalPath, null).Reverse ().ToArray (); + Assert.AreEqual (5, history.Length); + for (int i = 0; i < 5; ++i) { + Assert.AreEqual (string.Format ("Commit #{0}{1}", i, Environment.NewLine), history [i].Message); + } + } } } diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs index 8762f40559..0e3bd2e731 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs @@ -745,11 +745,11 @@ namespace MonoDevelop.VersionControl.Git IncludeReachableFrom = RootRepository.Head.Tip, ExcludeReachableFrom = divergence.CommonAncestor, SortBy = CommitSortStrategies.Topological - }); + }).Reverse ().ToArray (); RootRepository.Reset (ResetMode.Hard, divergence.Another); - int count = toApply.Count (); + int count = toApply.Length; int i = 1; foreach (var com in toApply) { monitor.Log.WriteLine ("Cherry-picking {0} - {1}/{2}", com.Id, i, count); |