예제 #1
0
        [Assert_Admin] public void ManualyGitCommitNewUsers()
        {
            userData.AutoGitCommit = false;
            var head1 = nGit.head();

            Assert.IsNotNull(nGit);
            Assert.IsTrue(userData.Path_UserData.isGitRepository());
            Assert.IsFalse(head1.isNull());

            var tmUser      = userData.newUser().tmUser();
            var userXmlFile = tmUser.getTmUserXmlFile().fileName();
            var untracked   = nGit.status_Raw().untracked();

            Assert.AreEqual(1, untracked.size());
            Assert.AreEqual(userXmlFile, untracked.first());

            nGit.add_and_Commit_using_Status();
            untracked = nGit.status_Raw().untracked();
            var head2 = nGit.head();

            Assert.AreEqual(0, untracked.size());
            Assert.IsFalse(nGit.head().isNull());
            Assert.AreNotEqual(head1, head2);
            "Head is now: {0}".info(nGit.head());
        }
예제 #2
0
        [Test] public void Create_Repo_Add_Files_Check_Head()
        {
            var nGit     = new API_NGit();
            var tempRepo = "_tempRepo".tempDir(true);

            "TestRepo is: {0}".info(tempRepo);
            //Creating a local temp Repo
            Assert.IsFalse(tempRepo.isGitRepository(), "Should not be a repo");
            nGit.init(tempRepo);
            Assert.IsTrue(tempRepo.isGitRepository(), "Should be a repo");
            Assert.IsNull(nGit.head());

            //Adding a file (using method 1)
            nGit.file_Create("testFile.txt", "some Text");
            nGit.add_and_Commit_using_Status();
            var head1 = nGit.head();

            Assert.IsNotNull(head1);

            //Adding another file (using method 2)
            nGit.file_Create("testFile2.txt", "some Text");
            nGit.add("testFile2.txt");
            nGit.commit("Adding Another file");

            //making sure the head has changed
            var head2 = nGit.head();

            Assert.AreNotEqual(head1, head2);

            nGit.delete_Repository_And_Files();
        }
 public static API_NGit gitCommit_SeparateThread(this API_NGit nGit)
 {
     O2Thread.mtaThread(
         () => {
         lock (nGit)
         {
             nGit.add_and_Commit_using_Status();
             nGit.git_Push_Library();
         }
     });
     return(nGit);
 }
예제 #4
0
 public static API_NGit gitCommit_SeparateThread(this API_NGit nGit)
 {
     O2Thread.mtaThread(
         () => {
         lock (nGit)
         {
             nGit.add_and_Commit_using_Status();
             try
             {
                 nGit.push();
             }
             catch (Exception ex)
             {
                 ex.log();
             }
         }
     });
     return(nGit);
 }
예제 #5
0
        [Test] public void Manualy_Git_Commit_NewUsers()
        {
            var head1 = nGit.head();

            nGit.assert_Is_Not_Null();
            tmFileStorage.path_UserData().isGitRepository()
            .assert_Is_True();
            head1.assert_Not_Null();

            var tmUser      = userData.newUser().tmUser();
            var userXmlFile = tmFileStorage.user_XmlFile_Location(tmUser).assert_File_Exists();
            var untracked   = nGit.status_Raw().untracked();

            untracked.assert_Size_Is(1)
            .first().assert_Equal_To(@"Users/{0}".format(userXmlFile.fileName()));

            nGit.add_and_Commit_using_Status();

            nGit.status_Raw().untracked().assert_Size_Is(0);
            nGit.head().assert_Not_Null()
            .assert_Is_Not(head1);
        }
        public void pull()
        {
            //a pull into a bare repo doesn't work
            var result_RemoteAdd1   = nGit2.remote_Add("origin", repoPath1);//.pathCombine(".git"));
            var result_Pull_Origin1 = nGit2.pull();

            Assert.IsNotNull(nGit2.Last_Exception);
            if (nGit2.Last_Exception is InvalidConfigurationException)                                               // it was failing on TeamCity
            {
                Assert.Ignore("Ignoring test because there was an InvalidConfigurationException on ngit2.pull()");
            }
            Assert.IsInstanceOf <TransportException>(nGit2.Last_Exception);
            Assert.AreEqual(nGit2.Last_Exception.Message, "Nothing to fetch.");

            Assert.IsTrue(result_RemoteAdd1);
            Assert.IsFalse(result_Pull_Origin1);

            //Do a pull from a clone

            var repoPath3  = "repo3".tempDir();
            var repo1_File = nGit1.files_FullPath().first();

            repoPath3.delete_Folder();

            var head_Repo1       = nGit1.head();
            var nGit3            = repoPath1.git_Clone(repoPath3);
            var files_AfterClone = nGit3.files_FullPath();
            var head_AfterClone  = nGit3.head();
            var repo3_File       = nGit3.files_FullPath().first();

            Assert.IsTrue(repoPath3.isGitRepository());
            Assert.IsNotEmpty(files_AfterClone);
            Assert.AreEqual(head_AfterClone, head_Repo1);
            Assert.IsTrue(repo3_File.fileExists());
            Assert.AreEqual(repo3_File.fileContents(), repo1_File.fileContents());
            Assert.AreEqual("", nGit1.status());
            Assert.AreEqual("", nGit3.status());

            //do a change on repo1
            var newContent = 10.randomLetters();

            newContent.saveAs(repo1_File);

            Assert.AreNotEqual("", nGit1.status());
            nGit1.add_and_Commit_using_Status();
            Assert.AreEqual("", nGit3.status());
            Assert.AreEqual(1, nGit3.commits().size());
            Assert.AreEqual(2, nGit1.commits().size());
            Assert.AreNotEqual(repo3_File.fileContents(), repo1_File.fileContents());

            var result_Pull = nGit3.pull();
            var mergeResult = nGit3.Last_PullResult.GetMergeResult();

            Assert.IsTrue(result_Pull);
            Assert.AreEqual(repo3_File.fileContents(), repo1_File.fileContents());
            Assert.AreEqual(2, nGit1.commits().size());
            Assert.IsNotNull(mergeResult);
            Assert.AreEqual(mergeResult.GetMergeStatus(), MergeStatus.FAST_FORWARD);
            Assert.IsTrue(mergeResult.GetMergeStatus().IsSuccessful());
            Assert.IsFalse(nGit3.reset_on_MergeConflicts(nGit3.Last_PullResult));

            /* the remote_Add is still not working 100% , since the reverse pull fails below)
             *
             * //do a change on repo3
             * var newContent = 10.randomLetters();
             * newContent.saveAs(repo3_File);
             *
             * Assert.AreNotEqual  ("", nGit3.status());
             * nGit3.add_and_Commit_using_Status();
             * Assert.AreEqual  ("", nGit3.status());
             * Assert.AreEqual  (1, nGit1.commits().size());
             * Assert.AreEqual  (2, nGit3.commits().size());
             *
             * var result_RemoteAdd2   = nGit1.remote_Add("origin", repoPath3);//.pathCombine(".git"));
             * var result_Pull_Origin2 = nGit1.pull();
             *
             *
             * Assert.IsNotNull(nGit1.Last_Exception);
             * Assert.IsInstanceOf<TransportException>(nGit1.Last_Exception);
             * Assert.AreEqual(nGit1.Last_Exception.Message, "Nothing to fetch.");
             *
             * Assert.IsTrue  (result_RemoteAdd2);
             * Assert.IsTrue  (result_Pull_Origin2);
             * Assert.AreEqual(2, nGit1.commits().size());
             */

            nGit3.delete_Repository_And_Files();
            Assert.IsFalse(repoPath3.dirExists());

            //Null value handling
            Assert.IsFalse((null as API_NGit).pull(null));
            Assert.IsFalse(nGit3.pull(null));
        }