private void RetrieveRemoteRefs() { if (String.Equals(_retrievedRemotesFor, urlBox.Text, StringComparison.OrdinalIgnoreCase)) return; branchBox.BeginUpdate(); tagBox.BeginUpdate(); try { branchBox.Items.Clear(); tagBox.Items.Clear(); if (!String.IsNullOrEmpty(urlBox.Text)) { _retrievedRemotesFor = urlBox.Text; using (var client = GetService<IGitClientPool>().GetNoUIClient()) { GitRemoteRefsArgs args = new GitRemoteRefsArgs(); args.ThrowOnError = false; args.ThrowOnCancel = false; GitRemoteRefsResult result; if (GetRemoteRefs(urlBox.Text, GitRemoteRefType.All, args, out result)) { foreach (var @ref in result.Items) { switch (@ref.Type) { case GitRefType.Branch: case GitRefType.RemoteBranch: branchBox.Items.Add(@ref); if (String.Equals(@ref.ShortName, "master", StringComparison.OrdinalIgnoreCase)) branchBox.SelectedIndex = branchBox.Items.Count - 1; break; case GitRefType.Tag: tagBox.Items.Add(@ref); break; } } } } } } finally { branchBox.EndUpdate(); tagBox.EndUpdate(); } }
private bool GetRemoteRefs(string remote, GitRemoteRefType types, GitRemoteRefsArgs args, out GitRemoteRefsResult result) { ProgressRunnerArgs pa = new ProgressRunnerArgs(); pa.CreateLog = true; pa.TransportClientArgs = args; GitRemoteRefsResult resultTmp = null; bool ok = false; GetService<IProgressRunner>().RunModal(CommandStrings.ListingRemoteBranches, pa, delegate(object sender, ProgressWorkerArgs a) { ok = a.Client.GetRemoteRefs(remote, types, args, out resultTmp); }); result = resultTmp; return ok; }