const wxExVCSEntry wxExVCS::FindEntry(const wxExFileName& filename) { const int vcs = wxConfigBase::Get()->ReadLong("VCS", VCS_AUTO); if (vcs == VCS_AUTO) { if (filename.IsOk()) { for (const auto& it : m_Entries) { const bool toplevel = it.AdminDirIsTopLevel(); const std::string admin_dir = it.GetAdminDir(); if (toplevel && IsAdminDirTopLevel(admin_dir, filename)) { return it; } else if (IsAdminDir(admin_dir, filename)) { return it; } } } } else if (vcs >= VCS_START && vcs < (int)m_Entries.size()) { return m_Entries[vcs]; } return wxExVCSEntry(); }
const wxExVCSEntry wxExVCS::FindEntry(const wxFileName& filename) { const int vcs = wxConfigBase::Get()->ReadLong("VCS", VCS_AUTO); if (vcs == VCS_AUTO) { if (filename.IsOk()) { for ( auto it = m_Entries.begin(); it != m_Entries.end(); ++it) { const bool toplevel = it->AdminDirIsTopLevel(); const wxString admin_dir = it->GetAdminDir(); if (toplevel && IsAdminDirTopLevel(admin_dir, filename)) { return *it; } else if (IsAdminDir(admin_dir, filename)) { return *it; } } } } else if (vcs >= VCS_START && vcs < m_Entries.size()) { return m_Entries[vcs]; } return wxExVCSEntry(); }
bool wxExVCS::Read() { // This test is to prevent showing an error if the vcs file does not exist, // as this is not required. if (!m_FileName.FileExists()) { return false; } wxXmlDocument doc; if (!doc.Load(m_FileName.GetFullPath())) { return false; } // Initialize members. const int old_entries = m_Entries.size(); m_Entries.clear(); wxXmlNode* child = doc.GetRoot()->GetChildren(); while (child) { if (child->GetName() == "vcs") { m_Entries.push_back(wxExVCSEntry(child)); } child = child->GetNext(); } if (old_entries == 0) { // Add default VCS. if (!wxConfigBase::Get()->Exists("VCS")) { wxConfigBase::Get()->Write("VCS", (long)VCS_AUTO); } } else if (old_entries != m_Entries.size()) { // If current number of entries differs from old one, // we added or removed an entry. That might give problems // with the vcs id stored in the config, so reset it. wxConfigBase::Get()->Write("VCS", (long)VCS_AUTO); } return true; }