Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorLluis Sanchez <slluis.devel@gmail.com>2015-12-16 01:09:50 +0300
committerLluis Sanchez <slluis.devel@gmail.com>2015-12-16 01:09:50 +0300
commit050eb0dea0d9e1c5422e4fdbb56ceeb0fb16f07e (patch)
tree613a2ee07a621275330088b674fc838edb6c99af /main
parentcd402ebdaa8c3d5e6fc9776d9446e2cb15c927e6 (diff)
parent864a7af68f65ef8fe765719e725488714519a236 (diff)
Merge pull request #1184 from mono/cycle6-bug34236
[Git] Fix rebase reordering commits.
Diffstat (limited to 'main')
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseGitRepositoryTests.cs29
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs4
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);