コード例 #1
0
        /// <exception cref="System.Exception"></exception>
        private void DoCherryPickAndCheckResult(Git git, RevCommit sideCommit, ResolveMerger.MergeFailureReason
                                                reason)
        {
            // get current index state
            string indexState = IndexState(CONTENT);
            // cherry-pick
            CherryPickResult result = git.CherryPick().Include(sideCommit.Id).Call();

            NUnit.Framework.Assert.AreEqual(CherryPickResult.CherryPickStatus.FAILED, result.
                                            GetStatus());
            // staged file a causes DIRTY_INDEX
            NUnit.Framework.Assert.AreEqual(1, result.GetFailingPaths().Count);
            NUnit.Framework.Assert.AreEqual(reason, result.GetFailingPaths().Get("a"));
            NUnit.Framework.Assert.AreEqual("a(modified)", Read(new FilePath(db.WorkTree, "a"
                                                                             )));
            // index shall be unchanged
            NUnit.Framework.Assert.AreEqual(indexState, IndexState(CONTENT));
            NUnit.Framework.Assert.AreEqual(RepositoryState.SAFE, db.GetRepositoryState());
            if (reason == null)
            {
                ReflogReader reader = db.GetReflogReader(Constants.HEAD);
                NUnit.Framework.Assert.IsTrue(reader.GetLastEntry().GetComment().StartsWith("cherry-pick: "
                                                                                            ));
                reader = db.GetReflogReader(db.GetBranch());
                NUnit.Framework.Assert.IsTrue(reader.GetLastEntry().GetComment().StartsWith("cherry-pick: "
                                                                                            ));
            }
        }
コード例 #2
0
        public virtual void TestCherryPickOverExecutableChangeOnNonExectuableFileSystem()
        {
            Git      git  = new Git(db);
            FilePath file = WriteTrashFile("test.txt", "a");

            NUnit.Framework.Assert.IsNotNull(git.Add().AddFilepattern("test.txt").Call());
            NUnit.Framework.Assert.IsNotNull(git.Commit().SetMessage("commit1").Call());
            NUnit.Framework.Assert.IsNotNull(git.Checkout().SetCreateBranch(true).SetName("a"
                                                                                          ).Call());
            WriteTrashFile("test.txt", "b");
            NUnit.Framework.Assert.IsNotNull(git.Add().AddFilepattern("test.txt").Call());
            RevCommit commit2 = git.Commit().SetMessage("commit2").Call();

            NUnit.Framework.Assert.IsNotNull(commit2);
            NUnit.Framework.Assert.IsNotNull(git.Checkout().SetName(Constants.MASTER).Call());
            DirCache cache = db.LockDirCache();

            cache.GetEntry("test.txt").FileMode = FileMode.EXECUTABLE_FILE;
            cache.Write();
            NUnit.Framework.Assert.IsTrue(cache.Commit());
            cache.Unlock();
            NUnit.Framework.Assert.IsNotNull(git.Commit().SetMessage("commit3").Call());
            git.GetRepository().GetConfig().SetBoolean(ConfigConstants.CONFIG_CORE_SECTION, null
                                                       , ConfigConstants.CONFIG_KEY_FILEMODE, false);
            CherryPickResult result = git.CherryPick().Include(commit2).Call();

            NUnit.Framework.Assert.IsNotNull(result);
            NUnit.Framework.Assert.AreEqual(CherryPickResult.CherryPickStatus.OK, result.GetStatus
                                                ());
        }
コード例 #3
0
        public virtual void TestCherryPickConflictResolution()
        {
            Git              git        = new Git(db);
            RevCommit        sideCommit = PrepareCherryPick(git);
            CherryPickResult result     = git.CherryPick().Include(sideCommit.Id).Call();

            NUnit.Framework.Assert.AreEqual(CherryPickResult.CherryPickStatus.CONFLICTING, result
                                            .GetStatus());
            NUnit.Framework.Assert.IsTrue(new FilePath(db.Directory, Constants.MERGE_MSG).Exists
                                              ());
            NUnit.Framework.Assert.AreEqual("side\n\nConflicts:\n\ta\n", db.ReadMergeCommitMsg
                                                ());
            NUnit.Framework.Assert.IsTrue(new FilePath(db.Directory, Constants.CHERRY_PICK_HEAD
                                                       ).Exists());
            NUnit.Framework.Assert.AreEqual(sideCommit.Id, db.ReadCherryPickHead());
            NUnit.Framework.Assert.AreEqual(RepositoryState.CHERRY_PICKING, db.GetRepositoryState
                                                ());
            // Resolve
            WriteTrashFile("a", "a");
            git.Add().AddFilepattern("a").Call();
            NUnit.Framework.Assert.AreEqual(RepositoryState.CHERRY_PICKING_RESOLVED, db.GetRepositoryState
                                                ());
            git.Commit().SetOnly("a").SetMessage("resolve").Call();
            NUnit.Framework.Assert.AreEqual(RepositoryState.SAFE, db.GetRepositoryState());
        }
コード例 #4
0
        public virtual void TestCherryPickConflictMarkers()
        {
            Git              git        = new Git(db);
            RevCommit        sideCommit = PrepareCherryPick(git);
            CherryPickResult result     = git.CherryPick().Include(sideCommit.Id).Call();

            NUnit.Framework.Assert.AreEqual(CherryPickResult.CherryPickStatus.CONFLICTING, result
                                            .GetStatus());
            string expected = "<<<<<<< master\na(master)\n=======\na(side)\n>>>>>>> 527460a side\n";

            CheckFile(new FilePath(db.WorkTree, "a"), expected);
        }
コード例 #5
0
        public virtual void TestCherryPickConflictReset()
        {
            Git              git        = new Git(db);
            RevCommit        sideCommit = PrepareCherryPick(git);
            CherryPickResult result     = git.CherryPick().Include(sideCommit.Id).Call();

            NUnit.Framework.Assert.AreEqual(CherryPickResult.CherryPickStatus.CONFLICTING, result
                                            .GetStatus());
            NUnit.Framework.Assert.AreEqual(RepositoryState.CHERRY_PICKING, db.GetRepositoryState
                                                ());
            NUnit.Framework.Assert.IsTrue(new FilePath(db.Directory, Constants.CHERRY_PICK_HEAD
                                                       ).Exists());
            git.Reset().SetMode(ResetCommand.ResetType.MIXED).SetRef("HEAD").Call();
            NUnit.Framework.Assert.AreEqual(RepositoryState.SAFE, db.GetRepositoryState());
            NUnit.Framework.Assert.IsFalse(new FilePath(db.Directory, Constants.CHERRY_PICK_HEAD
                                                        ).Exists());
        }
コード例 #6
0
ファイル: CherryPickResult.cs プロジェクト: LunarLanding/ngit
		private CherryPickResult(CherryPickResult.CherryPickStatus status)
		{
			this.status = status;
			this.newHead = null;
			this.cherryPickedRefs = null;
			this.failingPaths = null;
		}