CTGitPath CTGitPathList::GetCommonDirectory() const { if (m_commonBaseDirectory.IsEmpty()) { PathVector::const_iterator it; for(it = m_paths.begin(); it != m_paths.end(); ++it) { const CTGitPath& baseDirectory = it->GetDirectory(); if(m_commonBaseDirectory.IsEmpty()) { m_commonBaseDirectory = baseDirectory; } else if(!m_commonBaseDirectory.IsEquivalentTo(baseDirectory)) { // Different path m_commonBaseDirectory.Reset(); break; } } } // since we only checked strings, not paths, // we have to make sure now that we really return a *path* here PathVector::const_iterator iter; for(iter = m_paths.begin(); iter != m_paths.end(); ++iter) { if (!m_commonBaseDirectory.IsAncestorOf(*iter)) { m_commonBaseDirectory = m_commonBaseDirectory.GetContainingDirectory(); break; } } return m_commonBaseDirectory; }
bool CTGitPathList::AreAllPathsFilesInOneDirectory() const { // Check if all the paths are files and in the same directory PathVector::const_iterator it; m_commonBaseDirectory.Reset(); for(it = m_paths.begin(); it != m_paths.end(); ++it) { if(it->IsDirectory()) { return false; } const CTGitPath& baseDirectory = it->GetDirectory(); if(m_commonBaseDirectory.IsEmpty()) { m_commonBaseDirectory = baseDirectory; } else if(!m_commonBaseDirectory.IsEquivalentTo(baseDirectory)) { // Different path m_commonBaseDirectory.Reset(); return false; } } return true; }