static int SubmoduleCallback(git_submodule *sm, const char * /*name*/, void *payload) { STRING_VECTOR *list = *(STRING_VECTOR **)payload; STRING_VECTOR *prefixList = *((STRING_VECTOR **)payload + 1); CString path = CUnicodeUtils::GetUnicode(git_submodule_path(sm)); if (prefixList->empty()) list->push_back(path); else { for (size_t i = 0; i < prefixList->size(); ++i) { CString prefix = prefixList->at(i) + L'/'; if (CStringUtils::StartsWith(path, prefix)) list->push_back(path); } } return 0; }
static int SubmoduleCallback(git_submodule *sm, const char * /*name*/, void *payload) { STRING_VECTOR *list = *(STRING_VECTOR **)payload; STRING_VECTOR *prefixList = *((STRING_VECTOR **)payload + 1); CString path = CUnicodeUtils::GetUnicode(git_submodule_path(sm)); if (prefixList->empty()) { list->push_back(path); } else { for (size_t i = 0; i < prefixList->size(); ++i) { CString prefix = prefixList->at(i) + _T("/"); if (path.Left(prefix.GetLength()) == prefix) list->push_back(path); } } return 0; }
BOOL CFirstStartWizardAuthentication::OnInitDialog() { CFirstStartWizardBasePage::OnInitDialog(); CString tmp; tmp.LoadString(IDS_FIRSTSTART_SSHHINT); GetDlgItem(IDC_FIRSTSTART_SSHHINT)->SetWindowText(tmp); CAutoConfig config(true); if (git_config_add_file_ondisk(config, CGit::GetGitPathStringA(g_Git.GetGitGlobalConfig()), GIT_CONFIG_LEVEL_GLOBAL, nullptr, FALSE)) MessageBox(g_Git.GetLibGit2LastErr(), L"TortoiseGit", MB_ICONEXCLAMATION); else { if (git_config_add_file_ondisk(config, CGit::GetGitPathStringA(g_Git.GetGitGlobalXDGConfig()), GIT_CONFIG_LEVEL_XDG, nullptr, FALSE)) MessageBox(g_Git.GetLibGit2LastErr(), L"TortoiseGit", MB_ICONEXCLAMATION); } if (!g_Git.ms_bCygwinGit && !g_Git.ms_bMsys2Git) { if (git_config_add_file_ondisk(config, CGit::GetGitPathStringA(g_Git.GetGitProgramDataConfig()), GIT_CONFIG_LEVEL_PROGRAMDATA, nullptr, FALSE)) MessageBox(g_Git.GetLibGit2LastErr(), L"TortoiseGit", MB_ICONEXCLAMATION); } if (git_config_add_file_ondisk(config, CGit::GetGitPathStringA(g_Git.GetGitSystemConfig()), GIT_CONFIG_LEVEL_SYSTEM, nullptr, FALSE)) MessageBox(g_Git.GetLibGit2LastErr(), L"TortoiseGit", MB_ICONEXCLAMATION); STRING_VECTOR defaultList; git_config_foreach_match(config, "credential\\.helper", CSettingGitCredential::GetCredentialDefaultUrlCallback, &defaultList); if (defaultList.size() <= 1 && (defaultList.empty() || defaultList.at(0)[0] == 'X' || defaultList.at(0)[0] == 'G')) AddHelper(m_ctrlSimpleCredential, m_availableHelpers, MAKEINTRESOURCE(IDS_NONE)); CString selectedHelper; if (config.GetString(L"credential.helper", selectedHelper) == GIT_ENOTFOUND) m_ctrlSimpleCredential.SetCurSel(0); if (CSettingGitCredential::GCMExists()) AddHelper(m_ctrlSimpleCredential, m_availableHelpers, L"manager", selectedHelper); if (CSettingGitCredential::WincredExists()) AddHelper(m_ctrlSimpleCredential, m_availableHelpers, L"wincred", selectedHelper); if (CSettingGitCredential::WinstoreExists()) AddHelper(m_ctrlSimpleCredential, m_availableHelpers, CSettingGitCredential::GetWinstorePath(), selectedHelper); STRING_VECTOR urlList; git_config_foreach_match(config, "credential\\..*\\.helper", CSettingGitCredential::GetCredentialUrlCallback, &urlList); if (!urlList.empty() || m_ctrlSimpleCredential.GetCurSel() == -1) { m_ctrlSimpleCredential.EnableWindow(FALSE); m_availableHelpers.clear(); m_ctrlSimpleCredential.Clear(); AddHelper(m_ctrlSimpleCredential, m_availableHelpers, MAKEINTRESOURCE(IDS_ADVANCED)); m_ctrlSimpleCredential.SetCurSel(0); } AdjustControlSize(IDC_DONTSAVE); CString sshclient = CRegString(L"Software\\TortoiseGit\\SSH"); if (sshclient.IsEmpty()) sshclient = CRegString(L"Software\\TortoiseGit\\SSH", L"", FALSE, HKEY_LOCAL_MACHINE); int idx = m_ctrlSSHClient.AddString(L"TortoiseGitPlink"); if (sshclient.IsEmpty() || IsTool(L"tortoisegitplink", sshclient) || IsTool(L"tortoiseplink", sshclient)) m_ctrlSSHClient.SetCurSel(idx); idx = m_ctrlSSHClient.AddString(L"OpenSSH"); if (IsTool(L"ssh", sshclient)) m_ctrlSSHClient.SetCurSel(idx); if (m_ctrlSSHClient.GetCurSel() == -1) { idx = m_ctrlSSHClient.AddString(sshclient); m_ctrlSSHClient.SetCurSel(idx); } // TODO: Hide the button if PuTTY is not used? //GetDlgItem(IDC_GENERATEPUTTYKEY)->ShowWindow(CAppUtils::IsSSHPutty() ? SW_SHOW : SW_HIDE); UpdateData(FALSE); return TRUE; }