コード例 #1
0
ファイル: RenameFileTest.cs プロジェクト: monounity/GetGit
        public void HistoryWalker_should_rename_and_edit()
        {
            var result = GitProcess.Execute("ls-files", false);

            Assert.That(result.Stdout.Contains("AliceB2.txt"), Is.True);
            Assert.That(File.ReadAllText(SanePath.Combine(RepoPath, "AliceB2.txt")), Is.EqualTo(_aliceBContent + "xxx"));
        }
コード例 #2
0
    public async Task <bool> ConfigEmail(string email, CancellationToken token = default)
    {
        var p = new GitProcess(_directory, "config", "user.email", $"\"{email}\"");

        await p.Execute(token);

        return(!HasError(p));
    }
コード例 #3
0
    public async Task <bool> ConfigName(string name, CancellationToken token = default)
    {
        var p = new GitProcess(_directory, "config", "user.name", $"\"{name}\"");

        await p.Execute(token);

        return(!HasError(p));
    }
コード例 #4
0
        public void Assert_commit_count()
        {
            var result = GitProcess.Execute("rev-list --all --count");

            Assert.That(result.Stderr.Count(), Is.EqualTo(0));
            Assert.That(result.Stdout.Count(), Is.EqualTo(1));
            Assert.That(result.Stdout.Contains("3"));
        }
コード例 #5
0
    public async Task <bool> Push(CancellationToken token = default)
    {
        var p = new GitProcess(_directory, "push", $"\"{Repository}\"");

        await p.Execute(token);

        return(!HasError(p));
    }
コード例 #6
0
ファイル: RenameFileTest.cs プロジェクト: monounity/GetGit
        public void HistoryWalker_should_rename()
        {
            var result = GitProcess.Execute("ls-files", false);

            Assert.That(result.Stderr.Count(), Is.EqualTo(0));
            Assert.That(result.Stdout.Count(), Is.EqualTo(6));
            Assert.That(result.Stdout.Contains("AliceA2.txt"));
            Assert.That(result.Stdout.Contains("AliceD1.txt"));
        }
コード例 #7
0
    /// <summary>
    ///
    /// </summary>
    /// <returns>True if there were not errors and something was pulled</returns>
    public async Task <bool> Pull(CancellationToken token = default)
    {
        var p = new GitProcess(_directory, "pull");

        await p.Execute(token);


        return(!HasError(p) && !p.GetOutput().Contains("Already up to date"));
    }
コード例 #8
0
        public void HistoryWalker_should_exclude_files_matching_regex_patterns()
        {
            HistoryWalker.Walk(new EntryPoint(1));

            var result = GitProcess.Execute("rev-list --all --count");

            Assert.That(result.Stderr.Count(), Is.EqualTo(0));
            Assert.That(result.Stdout.Count(), Is.EqualTo(1));
            Assert.That(result.Stdout.Contains("1"));
            Assert.That(File.ReadAllText(SanePath.Combine(RepoPath, "AliceA.txt")), Is.EqualTo("Alice A1"));
        }
コード例 #9
0
ファイル: RenameBranchTest.cs プロジェクト: monounity/GetGit
        public void HistoryWalker_should_rename_any_branch_but_master()
        {
            HistoryWalker.Walk(new EntryPoint(1));

            var result = GitProcess.Execute("for-each-ref --format='%(refname:short)' refs/heads");

            Assert.That(result.Stderr.Count(), Is.EqualTo(0));
            Assert.That(result.Stdout.Count(), Is.EqualTo(2));
            Assert.That(result.Stdout.Contains("'master'"));
            Assert.That(result.Stdout.Contains("'new-branch'"));
        }
コード例 #10
0
ファイル: EditFileTest.cs プロジェクト: monounity/GetGit
        public void HistoryWalker_should_edit_files()
        {
            HistoryWalker.Walk(new EntryPoint(1));

            File.WriteAllText(SanePath.Combine(RepoPath, "AliceA.txt"), "xxx");

            GitProcess.Execute("checkout -- .", false);

            Assert.That(File.ReadAllText(SanePath.Combine(RepoPath, "AliceA.txt")), Is.EqualTo("Alice A2"));
            Assert.That(File.ReadAllText(SanePath.Combine(RepoPath, "AliceB.txt")), Is.EqualTo("Alice B2"));
            Assert.That(File.ReadAllText(SanePath.Combine(RepoPath, "AliceC.txt")), Is.EqualTo("Alice C2"));
        }
コード例 #11
0
        public void HistoryWalker_should_not_delete_files_that_belong_to_the_changeset()
        {
            var result = GitProcess.Execute("ls-files", false);

            Assert.That(result.Stderr.Count(), Is.EqualTo(0));
            Assert.That(result.Stdout.Count(), Is.EqualTo(5));
            Assert.That(result.Stdout.Contains(".gitattributes"));
            Assert.That(result.Stdout.Contains(".gitignore"));
            Assert.That(result.Stdout.Contains("X/AliceB2.txt"));
            Assert.That(result.Stdout.Contains("X/BobA.txt"));
            Assert.That(result.Stdout.Contains("X/SubFolderA/AliceA.txt"));
        }
コード例 #12
0
ファイル: DeleteFileTest.cs プロジェクト: monounity/GetGit
        public void HistoryWalker_should_delete_files()
        {
            HistoryWalker.Walk(new EntryPoint(1));

            var result = GitProcess.Execute("ls-files", false);

            Assert.That(result.Stderr.Count(), Is.EqualTo(0));
            Assert.That(result.Stdout.Count(), Is.EqualTo(3));
            Assert.That(result.Stdout.Contains(".gitattributes"));
            Assert.That(result.Stdout.Contains(".gitignore"));
            Assert.That(result.Stdout.Contains("AliceA.txt"));
        }
コード例 #13
0
        public void HistoryWalker_should_exclude_files_matching_regex_patterns()
        {
            HistoryWalker.Walk(new EntryPoint(1));

            var result = GitProcess.Execute("ls-files");

            Assert.That(result.Stderr.Count(), Is.EqualTo(0));
            Assert.That(result.Stdout.Count(), Is.EqualTo(3));
            Assert.That(result.Stdout.Contains(".gitattributes"));
            Assert.That(result.Stdout.Contains(".gitignore"));
            Assert.That(result.Stdout.Contains("AliceA.txt"));
        }
コード例 #14
0
        public void HistoryWalker_should_add_files_from_multiple_mapped_branches_into_one()
        {
            HistoryWalker.Walk(new EntryPoint(1));

            var result = GitProcess.Execute("ls-files");

            Assert.That(result.Stderr.Count(), Is.EqualTo(0));
            Assert.That(result.Stdout.Count(), Is.EqualTo(4));
            Assert.That(result.Stdout.Contains(".gitattributes"));
            Assert.That(result.Stdout.Contains(".gitignore"));
            Assert.That(result.Stdout.Contains("A/AliceA.txt"));
            Assert.That(result.Stdout.Contains("B/AliceB.txt"));
        }
コード例 #15
0
        public void HistoryWalker_should_delete_the_branch_if_the_changeset_only_contains_deletes()
        {
            HistoryWalker.Walk(new EntryPoint(1));

            var result = GitProcess.Execute("ls-files");

            Assert.That(result.Stderr.Count(), Is.EqualTo(0));
            Assert.That(result.Stdout.Count(), Is.EqualTo(4));
            Assert.That(result.Stdout.Contains(".gitattributes"));
            Assert.That(result.Stdout.Contains(".gitignore"));
            Assert.That(result.Stdout.Contains("BobA.txt"));
            Assert.That(result.Stdout.Contains("BobB.txt"));
        }
コード例 #16
0
ファイル: CreateBranchTest.cs プロジェクト: monounity/GetGit
        public void HistoryWalker_should_create_a_new_branch_from_the_parent_branch()
        {
            Env
            .Branch("master", "$/Mock/Main", RepoPath)
            .Branch("feature-branch-x", "$/Mock/FeatureX", RepoPath)
            .Branch("feature-branch-y", "$/Mock/FeatureY", RepoPath)

            .Changeset(OldUserAlice, UserAlice, "Add files")
            .Add("$/Mock/Main/AliceMaster.txt", "Alice Master")

            .Changeset(OldUserAlice, UserAlice, "Branch from master to X")
            .Hierarchy("$/Mock/Main/", "$/Mock/FeatureX/")
            .Add("$/Mock/FeatureX/AliceX.txt", "Alice X")

            .Changeset(OldUserAlice, UserAlice, "Branch from master to Y")
            .Hierarchy("$/Mock/Main/", "$/Mock/FeatureY/")
            .Add("$/Mock/FeatureY/AliceY.txt", "Alice Y")

            .End();

            HistoryWalker.Walk(new EntryPoint(1));

            var branches = GitProcess.Execute("for-each-ref --format='%(refname:short)' refs/heads");

            Assert.That(branches.Stderr.Count(), Is.EqualTo(0));
            Assert.That(branches.Stdout.Count(), Is.EqualTo(3));
            Assert.That(branches.Stdout.Contains("'master'"));
            Assert.That(branches.Stdout.Contains("'feature-branch-x'"));
            Assert.That(branches.Stdout.Contains("'feature-branch-y'"));

            Assert.That(Git.CurrentBranch(), Is.EqualTo("feature-branch-y"));

            var commits = GitProcess.Execute("log --pretty=format:'%s'");

            Assert.That(commits.Stderr.Count(), Is.EqualTo(0));
            Assert.That(commits.Stdout.Count(), Is.EqualTo(2));
            Assert.That(commits.Stdout.Contains("'[C3] Branch from master to Y'"));
            Assert.That(commits.Stdout.Contains("'[C1] Add files'"));
        }
コード例 #17
0
        /// <summary>Check latest gitter version on this chanel.</summary>
        /// <returns>Latest gitter version.</returns>
        public Version CheckVersion()
        {
            Version result = null;
            var     cmd    = new LsRemoteCommand(
                LsRemoteCommand.Heads(),
                LsRemoteCommand.Tags(),
                new CommandParameter(_url));

            GitOutput output;

            try
            {
                output = GitProcess.Execute(new GitInput(cmd));
            }
            catch
            {
                return(null);
            }
            if (output.ExitCode != 0)
            {
                return(null);
            }
            var    parser     = new GitParser(output.Output);
            string branchSHA1 = null;

            while (!parser.IsAtEndOfString)
            {
                var sha1    = parser.ReadString(40, 1);
                var refname = parser.ReadLine();
                if (branchSHA1 == null)
                {
                    if (refname == GitConstants.LocalBranchPrefix + _branch)
                    {
                        branchSHA1 = sha1;
                    }
                }
                else
                {
                    if (sha1 == branchSHA1 &&
                        refname.Length > GitConstants.TagPrefix.Length + 1 &&
                        refname.StartsWith(GitConstants.TagPrefix) &&
                        refname[GitConstants.TagPrefix.Length] == 'v')
                    {
                        var s = GitConstants.TagPrefix.Length + 1;
                        var e = refname.Length - 1;
                        while (s < refname.Length && !char.IsDigit(refname[s]))
                        {
                            ++s;
                        }
                        while (e > 0 && !char.IsDigit(refname[e]))
                        {
                            --e;
                        }
                        if (e > s && Version.TryParse(refname.Substring(s, e - s + 1), out result))
                        {
                            break;
                        }
                        else
                        {
                            result = null;
                        }
                    }
                }
            }
            return(result);
        }