public void GetRemoteName()
        {
            Assert.AreEqual("foo", GitRefName.GetRemoteName("refs/remotes/foo/master"));
            Assert.AreEqual("", GitRefName.GetRemoteName("refs/tags/1.0.0"));

            var remotes = new[] { "foo", "bar" };

            Assert.AreEqual("foo", GitRefName.GetRemoteName("foo/master", remotes));
            Assert.AreEqual("", GitRefName.GetRemoteName("food/master", remotes));
            Assert.AreEqual("", GitRefName.GetRemoteName("refs/tags/1.0.0", remotes));
        }
示例#2
0
        private void Branches_SelectedIndexChanged(object sender, EventArgs e)
        {
            lbChanges.Text = "";

            var branch = Branches.Text;

            if (branch.IsNullOrWhiteSpace() || !Remotebranch.Checked)
            {
                _remoteName         = string.Empty;
                _localBranchName    = string.Empty;
                _newLocalBranchName = string.Empty;
            }
            else
            {
                _remoteName      = GitRefName.GetRemoteName(branch, Module.GetRemotes(false));
                _localBranchName = Module.GetLocalTrackingBranchName(_remoteName, branch);
                var remoteBranchName = _remoteName.Length > 0 ? branch.Substring(_remoteName.Length + 1) : branch;
                _newLocalBranchName = string.Concat(_remoteName, "_", remoteBranchName);
                int i = 2;
                while (LocalBranchExists(_newLocalBranchName))
                {
                    _newLocalBranchName = string.Concat(_remoteName, "_", _localBranchName, "_", i.ToString());
                    i++;
                }
            }

            bool existsLocalBranch = LocalBranchExists(_localBranchName);

            rbResetBranch.Text       = existsLocalBranch ? _rbResetBranchDefaultText : _createBranch.Text;
            branchName.Text          = "'" + _localBranchName + "'";
            txtCustomBranchName.Text = _newLocalBranchName;

            if (branch.IsNullOrWhiteSpace())
            {
                lbChanges.Text = "";
            }
            else
            {
                ThreadHelper.JoinableTaskFactory.RunAsync(
                    async() =>
                {
                    await TaskScheduler.Default;

                    var text = Module.GetCommitCountString(Module.GetCurrentCheckout(), branch);

                    await this.SwitchToMainThreadAsync();

                    lbChanges.Text = text;
                });
            }
        }