本文整理汇总了C++中STRING_VECTOR::size方法的典型用法代码示例。如果您正苦于以下问题:C++ STRING_VECTOR::size方法的具体用法?C++ STRING_VECTOR::size怎么用?C++ STRING_VECTOR::size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类STRING_VECTOR
的用法示例。
在下文中一共展示了STRING_VECTOR::size方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DeleteOtherKeys
static int DeleteOtherKeys(int type)
{
CString match;
if (type == SimpleCredentialType::LocalWincred)
match = _T("L\ncredential.helper\nwincred");
else if (type == SimpleCredentialType::LocalWinstore)
match = _T("L\ncredential.helper\n") + GetWinstorePath();
else if (type == SimpleCredentialType::GlobalWincred)
match = _T("G\ncredential.helper\nwincred");
else if (type == SimpleCredentialType::GlobalWinstore)
match = _T("G\ncredential.helper\n") + GetWinstorePath();
else if (type == SimpleCredentialType::SystemWincred)
match = _T("S\ncredential.helper\nwincred");
CAutoConfig config(true);
git_config_add_file_ondisk(config, CGit::GetGitPathStringA(g_Git.GetGitLocalConfig()), GIT_CONFIG_LEVEL_LOCAL, FALSE);
git_config_add_file_ondisk(config, CGit::GetGitPathStringA(g_Git.GetGitGlobalConfig()), GIT_CONFIG_LEVEL_GLOBAL, FALSE);
git_config_add_file_ondisk(config, CGit::GetGitPathStringA(g_Git.GetGitGlobalXDGConfig()), GIT_CONFIG_LEVEL_XDG, FALSE);
git_config_add_file_ondisk(config, CGit::GetGitPathStringA(g_Git.GetGitSystemConfig()), GIT_CONFIG_LEVEL_SYSTEM, FALSE);
STRING_VECTOR list;
git_config_foreach_match(config, "credential\\..*", GetCredentialAnyEntryCallback, &list);
for (size_t i = 0; i < list.size(); ++i)
{
int pos = 0;
CString prefix = list[i].Tokenize(_T("\n"), pos);
if (prefix == _T("S") && !CAppUtils::IsAdminLogin())
{
RunUAC();
return -1;
}
}
int result = 0;
// workaround gitdll bug
// TODO: switch to libgit2
bool old = g_Git.m_IsUseGitDLL;
g_Git.m_IsUseGitDLL = false;
for (size_t i = 0; i < list.size(); ++i)
{
if (list[i] != match)
{
int pos = 0;
CString prefix = list[i].Tokenize(_T("\n"), pos);
CString key = list[i].Tokenize(_T("\n"), pos);
CONFIG_TYPE configLevel = prefix == _T("S") ? CONFIG_SYSTEM : prefix == _T("G") || prefix == _T("X") ? CONFIG_GLOBAL : CONFIG_LOCAL;
if (g_Git.UnsetConfigValue(key, configLevel))
{
CString msg;
msg.Format(IDS_PROC_SAVECONFIGFAILED, key, _T(""));
CMessageBox::Show(NULL, msg, _T("TortoiseGit"), MB_OK | MB_ICONERROR);
result = 1;
break;
}
}
}
g_Git.m_IsUseGitDLL = old;
return result;
}
示例2: Refresh
void CPushDlg::Refresh()
{
CString WorkingDir=g_Git.m_CurrentDir;
WorkingDir.Replace(_T(':'),_T('_'));
CRegString remote(CString(_T("Software\\TortoiseGit\\History\\PushRemote\\")+WorkingDir));
m_RemoteReg = remote;
int sel = -1;
STRING_VECTOR list;
m_Remote.Reset();
if(!g_Git.GetRemoteList(list))
{
if (list.size() > 1)
m_Remote.AddString(CString(MAKEINTRESOURCE(IDS_PROC_PUSHFETCH_ALLREMOTES)));
for (unsigned int i = 0; i < list.size(); ++i)
{
m_Remote.AddString(list[i]);
if(list[i] == remote)
sel = i + (list.size() > 1 ? 1 : 0);
}
}
else
MessageBox(g_Git.GetGitLastErr(_T("Could not get list of remotes.")), _T("TortoiseGit"), MB_ICONERROR);
// if the last selected remote was "- All -" and "- All -" is still in the list -> select it
if (list.size() > 1 && remote == CString(MAKEINTRESOURCE(IDS_PROC_PUSHFETCH_ALLREMOTES)))
sel = 0;
m_Remote.SetCurSel(sel);
int current = -1;
list.clear();
m_BranchSource.Reset();
m_BranchSource.SetMaxHistoryItems(0x7FFFFFFF);
if(!g_Git.GetBranchList(list,¤t))
m_BranchSource.SetList(list);
else
MessageBox(g_Git.GetGitLastErr(_T("Could not get list of local branches.")), _T("TortoiseGit"), MB_ICONERROR);
if (wcsncmp(m_BranchSourceName, _T("refs/"), 5) == 0)
m_BranchSourceName = m_BranchSourceName.Mid(5);
if (wcsncmp(m_BranchSourceName, _T("heads/"), 6) == 0)
{
m_BranchSourceName = m_BranchSourceName.Mid(6);
m_BranchSource.SetCurSel(m_BranchSource.FindStringExact(-1, m_BranchSourceName));
}
else if (wcsncmp(m_BranchSourceName, _T("remotes/"), 8) == 0)
m_BranchSource.SetCurSel(m_BranchSource.FindStringExact(-1, m_BranchSourceName));
else
m_BranchSource.SetCurSel(current);
GetRemoteBranch(m_BranchSource.GetString());
this->GetDlgItem(IDOK)->EnableWindow(m_BranchSource.GetCount() != 0);
if (list.size() > 1 && m_bPushAllRemotes)
m_Remote.SetCurSel(0);
m_bPushAllRemotes = FALSE; // reset to FALSE, so that a refresh does not reselect all even if it was already deselected by user; correct value will be set in OnBnClickedOk method
}
示例3: Refresh
void CPushDlg::Refresh()
{
CString WorkingDir=g_Git.m_CurrentDir;
WorkingDir.Replace(_T(':'),_T('_'));
CRegString remote(CString(_T("Software\\TortoiseGit\\History\\PushRemote\\")+WorkingDir));
m_RemoteReg = remote;
int sel = -1;
STRING_VECTOR list;
m_Remote.Reset();
list.push_back(CString(MAKEINTRESOURCE(IDS_PROC_PUSHFETCH_ALLREMOTES)));
if(!g_Git.GetRemoteList(list))
{
if (list.size() <= 2)
list.erase(list.begin());
for (unsigned int i = 0; i < list.size(); ++i)
{
m_Remote.AddString(list[i]);
if(list[i] == remote)
sel = i;
}
}
// if the last selected remote was "- All -" and "- All -" is still in the list -> select it
if (list.size() > 1 && remote == CString(MAKEINTRESOURCE(IDS_PROC_PUSHFETCH_ALLREMOTES)))
sel = 0;
m_Remote.SetCurSel(sel);
int current=0;
list.clear();
m_BranchSource.Reset();
m_BranchSource.AddString(_T(" ")); // empty string does not work, for removal of remote branches/tags
m_BranchSource.SetMaxHistoryItems(0x7FFFFFFF);
if(!g_Git.GetBranchList(list,¤t))
{
for (unsigned int i = 0; i < list.size(); ++i)
m_BranchSource.AddString(list[i]);
++current; // shift for " "
}
if (wcsncmp(m_BranchSourceName, _T("refs/"), 5) == 0)
m_BranchSourceName = m_BranchSourceName.Mid(5);
if (wcsncmp(m_BranchSourceName, _T("heads/"), 6) == 0)
{
m_BranchSourceName = m_BranchSourceName.Mid(6);
m_BranchSource.SetCurSel(m_BranchSource.FindStringExact(-1, m_BranchSourceName));
}
else if (wcsncmp(m_BranchSourceName, _T("remotes/"), 8) == 0)
m_BranchSource.SetCurSel(m_BranchSource.FindStringExact(-1, m_BranchSourceName));
else
m_BranchSource.SetCurSel(current);
GetRemoteBranch(m_BranchSource.GetString());
this->GetDlgItem(IDOK)->EnableWindow(m_BranchSource.GetCount() != 0);
}
示例4: OnInitDialog
BOOL CBisectStartDlg::OnInitDialog()
{
CHorizontalResizableStandAloneDialog::OnInitDialog();
CAppUtils::MarkWindowAsUnpinnable(m_hWnd);
AddAnchor(IDOK, BOTTOM_RIGHT);
AddAnchor(IDCANCEL, BOTTOM_RIGHT);
AddAnchor(IDHELP, BOTTOM_RIGHT);
AddAnchor(IDC_BUTTON_GOOD, TOP_RIGHT);
AddAnchor(IDC_BUTTON_BAD, TOP_RIGHT);
AddAnchor(IDC_COMBOBOXEX_GOOD, TOP_LEFT, TOP_RIGHT);
AddAnchor(IDC_COMBOBOXEX_BAD, TOP_LEFT, TOP_RIGHT);
EnableSaveRestore(_T("BisectStartDlg"));
CString sWindowTitle;
GetWindowText(sWindowTitle);
CAppUtils::SetWindowTitle(m_hWnd, g_Git.m_CurrentDir, sWindowTitle);
STRING_VECTOR list;
int current;
g_Git.GetBranchList(list, ¤t, CGit::BRANCH_ALL);
m_cLastGoodRevision.SetMaxHistoryItems(0x7FFFFFFF);
m_cFirstBadRevision.SetMaxHistoryItems(0x7FFFFFFF);
for (unsigned int i = 0; i < list.size(); ++i)
{
m_cLastGoodRevision.AddString(list[i]);
m_cFirstBadRevision.AddString(list[i]);
}
list.clear();
g_Git.GetTagList(list);
for (unsigned int i = 0; i < list.size(); ++i)
{
m_cLastGoodRevision.AddString(list[i]);
m_cFirstBadRevision.AddString(list[i]);
}
if (m_sLastGood.IsEmpty())
m_cLastGoodRevision.SetCurSel(-1);
else
m_cLastGoodRevision.SetWindowTextW(m_sLastGood);
if (m_sFirstBad.IsEmpty())
m_cFirstBadRevision.SetCurSel(current);
else
m_cFirstBadRevision.SetWindowTextW(m_sFirstBad);
this->UpdateData(FALSE);
// EnDisable OK Button
OnChangedRevision();
return TRUE;
}
示例5: Refresh
void CPushDlg::Refresh()
{
CString WorkingDir=g_Git.m_CurrentDir;
WorkingDir.Replace(_T(':'),_T('_'));
CRegString remote(CString(_T("Software\\TortoiseGit\\History\\PushRemote\\")+WorkingDir));
m_RemoteReg = remote;
int sel=0;
STRING_VECTOR list;
m_Remote.Reset();
if(!g_Git.GetRemoteList(list))
{
for(unsigned int i=0;i<list.size();i++)
{
m_Remote.AddString(list[i]);
if(list[i] == remote)
sel = i;
}
}
m_Remote.SetCurSel(sel);
int current=0;
list.clear();
m_BranchSource.Reset();
m_BranchSource.SetMaxHistoryItems(0x7FFFFFFF);
if(!g_Git.GetBranchList(list,¤t))
{
for(unsigned int i=0;i<list.size();i++)
m_BranchSource.AddString(list[i]);
}
if (wcsncmp(m_BranchSourceName, _T("refs/"), 5) == 0)
m_BranchSourceName = m_BranchSourceName.Mid(5);
if (wcsncmp(m_BranchSourceName, _T("heads/"), 6) == 0)
{
m_BranchSourceName = m_BranchSourceName.Mid(6);
m_BranchSource.SetCurSel(m_BranchSource.FindStringExact(-1, m_BranchSourceName));
}
else if (wcsncmp(m_BranchSourceName, _T("remotes/"), 8) == 0)
m_BranchSource.SetCurSel(m_BranchSource.FindStringExact(-1, m_BranchSourceName));
else
m_BranchSource.SetCurSel(current);
GetRemoteBranch(m_BranchSource.GetString());
this->GetDlgItem(IDOK)->EnableWindow(m_BranchSource.GetCount() != 0);
}
示例6: SplitRemoteBranchName
static int SplitRemoteBranchName(CString ref, CString &remote, CString &branch)
{
if (ref.Left(13) == _T("refs/remotes/"))
ref = ref.Mid(13);
else if (ref.Left(8) == _T("remotes/"))
ref = ref.Mid(8);
STRING_VECTOR list;
int result = g_Git.GetRemoteList(list);
if (result != 0)
return result;
for (size_t i = 0; i < list.size(); ++i)
{
if (ref.Left(list[i].GetLength() + 1) == list[i] + _T("/"))
{
remote = list[i];
branch = ref.Mid(list[i].GetLength() + 1);
return 0;
}
if (ref == list[i])
{
remote = list[i];
branch = _T("");
return 0;
}
}
return -1;
}
示例7: Refresh
void CRefLogDlg::Refresh()
{
STRING_VECTOR list;
list.push_back(_T("HEAD"));
if (g_Git.GetRefList(list))
MessageBox(g_Git.GetGitLastErr(_T("Could not get all refs.")), _T("TortoiseGit"), MB_ICONERROR);
m_ChooseRef.SetList(list);
if (m_CurrentBranch.IsEmpty())
{
m_CurrentBranch.Format(_T("refs/heads/%s"), (LPCTSTR)g_Git.GetCurrentBranch());
m_ChooseRef.SetCurSel(0); /* Choose HEAD */
}
else
{
bool found = false;
for (int i = 0; i < (int)list.size(); ++i)
{
if(list[i] == m_CurrentBranch)
{
m_ChooseRef.SetCurSel(i);
found = true;
break;
}
}
if (!found)
m_ChooseRef.SetCurSel(0);
}
m_RefList.m_RevCache.clear();
OnCbnSelchangeRef();
}
示例8: OnInitDialog
BOOL CSettingGitRemote::OnInitDialog()
{
ISettingsPropPage::OnInitDialog();
//CString str=((CSettings*)GetParent())->m_CmdPath.GetWinPath();
CString proj;
if( g_GitAdminDir.HasAdminDir(m_cmdPath,&proj) )
{
CString title;
this->GetWindowText(title);
this->SetWindowText(title + _T(" - ") + proj);
}
STRING_VECTOR remotes;
g_Git.GetRemoteList(remotes);
m_ctrlRemoteList.ResetContent();
for (size_t i = 0; i < remotes.size(); i++)
m_ctrlRemoteList.AddString(remotes[i]);
m_ctrlTagOpt.AddString(CString(MAKEINTRESOURCE(IDS_FETCH_REACHABLE)));
m_ctrlTagOpt.AddString(CString(MAKEINTRESOURCE(IDS_NONE)));
m_ctrlTagOpt.AddString(CString(MAKEINTRESOURCE(IDS_FETCH_TAGS_ONLY)));
m_ctrlTagOpt.SetCurSel(0);
//this->GetDlgItem(IDC_EDIT_REMOTE)->EnableWindow(FALSE);
this->UpdateData(FALSE);
if (remotes.empty())
{
GetDlgItem(IDC_EDIT_REMOTE)->SetWindowText(_T("origin"));
OnEnChangeEditRemote();
}
return TRUE;
}
示例9: AddString
void CHistoryCombo::AddString(STRING_VECTOR &list,BOOL isSel)
{
for(unsigned int i=0;i<list.size();i++)
{
AddString(list[i], -1, isSel);
}
}
示例10: Refresh
void CSubmoduleUpdateDlg::Refresh()
{
while (m_PathListBox.GetCount() > 0)
m_PathListBox.DeleteString(m_PathListBox.GetCount() - 1);
CString WorkingDir = g_Git.m_CurrentDir;
WorkingDir.Replace(_T(':'), _T('_'));
m_regPath = CRegString(CString(_T("Software\\TortoiseGit\\History\\SubmoduleUpdatePath\\") + WorkingDir));
CString path = m_regPath;
STRING_VECTOR emptylist;
STRING_VECTOR list;
GetSubmodulePathList(list, m_bWholeProject ? emptylist : m_PathFilterList);
STRING_VECTOR selected;
if (m_PathList.empty())
{
int pos = 0;
while (pos >= 0)
{
CString part = path.Tokenize(_T("|"), pos);
if (!part.IsEmpty())
selected.push_back(part);
}
}
else
{
for (size_t i = 0; i < m_PathList.size(); ++i)
selected.push_back(m_PathList[i]);
}
for (size_t i = 0; i < list.size(); ++i)
{
m_PathListBox.AddString(list[i]);
if (selected.size() == 0)
m_PathListBox.SetSel((int)i);
else
{
for (size_t j = 0; j < selected.size(); ++j)
{
if (selected[j] == list[i])
m_PathListBox.SetSel((int)i);
}
}
}
OnLbnSelchangeListPath();
}
示例11: OnInitDialog
BOOL CRequestPullDlg::OnInitDialog()
{
CHorizontalResizableStandAloneDialog::OnInitDialog();
CAppUtils::MarkWindowAsUnpinnable(m_hWnd);
AddAnchor(IDOK,BOTTOM_RIGHT);
AddAnchor(IDCANCEL,BOTTOM_RIGHT);
AddAnchor(IDHELP,BOTTOM_RIGHT);
AddAnchor(IDC_BUTTON_LOCAL_BRANCH, TOP_RIGHT);
AddAnchor(IDC_COMBOBOXEX_LOCAL_BRANCH, TOP_LEFT,TOP_RIGHT);
AddAnchor(IDC_COMBOBOXEX_URL, TOP_LEFT,TOP_RIGHT);
AddAnchor(IDC_REMOTE_BRANCH, TOP_LEFT,TOP_RIGHT);
EnableSaveRestore(_T("RequestPullDlg"));
CString sWindowTitle;
GetWindowText(sWindowTitle);
CAppUtils::SetWindowTitle(m_hWnd, g_Git.m_CurrentDir, sWindowTitle);
STRING_VECTOR list;
int current;
g_Git.GetBranchList(list, ¤t, CGit::BRANCH_ALL);
m_cStartRevision.SetMaxHistoryItems(0x7FFFFFFF);
for (unsigned int i = 0; i < list.size(); i++)
{
m_cStartRevision.AddString(list[i]);
}
CString WorkingDir=g_Git.m_CurrentDir;
WorkingDir.Replace(_T(':'), _T('_'));
m_RegStartRevision = CRegString(_T("Software\\TortoiseGit\\History\\RequestPull\\")+WorkingDir+_T("\\startrevision"));
if(m_StartRevision.IsEmpty()) {
m_StartRevision = m_RegStartRevision;
}
m_cStartRevision.SetWindowTextW(m_StartRevision);
// store URLs in global history, but save last used local url separately,
// because one normally has only one writable repository
m_cRepositoryURL.SetURLHistory(TRUE);
m_cRepositoryURL.LoadHistory(_T("Software\\TortoiseGit\\History\\RequestPull"), _T("url"));
m_RegRepositoryURL = CRegString(_T("Software\\TortoiseGit\\History\\RequestPull\\")+WorkingDir+_T("\\repositoryurl"));
if(m_RepositoryURL.IsEmpty())
{
m_RepositoryURL = m_RegRepositoryURL;
}
m_cRepositoryURL.SetWindowTextW(m_RepositoryURL);
m_RegEndRevision = CRegString(_T("Software\\TortoiseGit\\History\\RequestPull\\")+WorkingDir+_T("\\endrevision"), _T("HEAD"));
if(m_EndRevision.IsEmpty()) {
m_EndRevision = m_RegEndRevision;
}
m_cEndRevision.SetWindowTextW(m_EndRevision);
this->UpdateData(FALSE);
return TRUE;
}
示例12: Refresh
void CPullFetchDlg::Refresh()
{
//Select pull-remote from current branch
CString currentBranch = g_Git.GetSymbolicRef();
CString configName;
configName.Format(L"branch.%s.remote", currentBranch);
CString pullRemote = this->m_configPullRemote = g_Git.GetConfigValue(configName);
//Select pull-branch from current branch
configName.Format(L"branch.%s.merge", currentBranch);
CString pullBranch = m_configPullBranch = CGit::StripRefName(g_Git.GetConfigValue(configName));
if (pullBranch.IsEmpty())
m_RemoteBranch.AddString(currentBranch);
else
m_RemoteBranch.AddString(pullBranch);
if(pullRemote.IsEmpty())
pullRemote = m_RemoteReg;
if (!m_PreSelectRemote.IsEmpty())
pullRemote = m_PreSelectRemote;
STRING_VECTOR list;
int sel=0;
if (!m_IsPull)
list.push_back(_T("- all -"));
if(!g_Git.GetRemoteList(list))
{
if (!m_IsPull && list.size() <= 2)
list.erase(list.begin());
for (unsigned int i = 0; i < list.size(); ++i)
{
m_Remote.AddString(list[i]);
if (!m_bAllRemotes && list[i] == pullRemote)
sel = i;
}
}
m_Remote.SetCurSel(sel);
OnCbnSelchangeRemote();
}
示例13: Refresh
void CPullFetchDlg::Refresh()
{
//Select pull-remote from current branch
CString currentBranch;
if (g_Git.GetCurrentBranchFromFile(g_Git.m_CurrentDir, currentBranch))
currentBranch.Empty();
CString pullRemote, pullBranch;
g_Git.GetRemoteTrackedBranch(currentBranch, pullRemote, pullBranch);
m_configPullRemote = pullRemote;
m_configPullBranch = pullBranch;
if (pullBranch.IsEmpty())
m_RemoteBranch.AddString(currentBranch);
else
m_RemoteBranch.AddString(pullBranch);
if(pullRemote.IsEmpty())
pullRemote = m_RemoteReg;
if (!m_PreSelectRemote.IsEmpty())
pullRemote = m_PreSelectRemote;
STRING_VECTOR list;
m_Remote.Reset();
int sel=0;
if(!g_Git.GetRemoteList(list))
{
if (!m_IsPull && list.size() > 1)
m_Remote.AddString(CString(MAKEINTRESOURCE(IDS_PROC_PUSHFETCH_ALLREMOTES)));
for (unsigned int i = 0; i < list.size(); ++i)
{
m_Remote.AddString(list[i]);
if (!m_bAllRemotes && list[i] == pullRemote)
sel = i + (!m_IsPull && list.size() > 1 ? 1 : 0);
}
}
m_Remote.SetCurSel(sel);
OnCbnSelchangeRemote();
}
示例14: OnInitDialog
BOOL CRefLogDlg::OnInitDialog()
{
CResizableStandAloneDialog::OnInitDialog();
CAppUtils::MarkWindowAsUnpinnable(m_hWnd);
AddAnchor(IDOK,BOTTOM_RIGHT);
AddAnchor(IDCANCEL,BOTTOM_RIGHT);
AddAnchor(IDC_REFLOG_LIST,TOP_LEFT,BOTTOM_RIGHT);
AddAnchor(IDHELP, BOTTOM_RIGHT);
AddOthersToAnchor();
this->EnableSaveRestore(_T("RefLogDlg"));
CString sWindowTitle;
GetWindowText(sWindowTitle);
CAppUtils::SetWindowTitle(m_hWnd, g_Git.m_CurrentDir, sWindowTitle);
STRING_VECTOR list;
list.push_back(_T("HEAD"));
g_Git.GetRefList(list);
m_RefList.m_hasWC = !g_GitAdminDir.IsBareRepo(g_Git.m_CurrentDir);
m_ChooseRef.SetMaxHistoryItems(0x7FFFFFFF);
this->m_ChooseRef.AddString(list);
this->m_RefList.InsertRefLogColumn();
//m_RefList.m_logEntries.ParserFromRefLog(_T("master"));
if(this->m_CurrentBranch.IsEmpty())
{
m_CurrentBranch.Format(_T("refs/heads/%s"),g_Git.GetCurrentBranch());
m_ChooseRef.SetCurSel(0); /* Choose HEAD */
}
else
{
for(int i=0;i<list.size();i++)
{
if(list[i] == m_CurrentBranch)
{
m_ChooseRef.SetCurSel(i);
break;
}
}
}
OnCbnSelchangeRef();
return TRUE;
}
示例15: GetBranchList
int CGit::GetBranchList(STRING_VECTOR &list,int *current,BRANCH_TYPE type)
{
int ret;
CString cmd, output, cur;
cmd = _T("git.exe branch --no-color");
if((type&BRANCH_ALL) == BRANCH_ALL)
cmd += _T(" -a");
else if(type&BRANCH_REMOTE)
cmd += _T(" -r");
ret = Run(cmd, &output, NULL, CP_UTF8);
if(!ret)
{
int pos=0;
CString one;
while( pos>=0 )
{
one=output.Tokenize(_T("\n"),pos);
one.Trim(L" \r\n\t");
if(one.Find(L" -> ") >= 0 || one.IsEmpty())
continue; // skip something like: refs/origin/HEAD -> refs/origin/master
if(one[0] == _T('*'))
{
one = one.Mid(2);
cur = one;
}
if (one != _T("(no branch)"))
list.push_back(one);
}
}
if(type & BRANCH_FETCH_HEAD && !DerefFetchHead().IsEmpty())
list.push_back(L"FETCH_HEAD");
std::sort(list.begin(), list.end(), LogicalComparePredicate);
if (current && cur != _T("(no branch)"))
{
for (unsigned int i = 0; i < list.size(); i++)
{
if (list[i] == cur)
{
*current = i;
break;
}
}
}
return ret;
}