/** * Returns the .git-path (if .git is a file, read the repository path and return it) * adminDir always ends with "\" */ bool GitAdminDir::GetAdminDirPath(const CString &projectTopDir, CString& adminDir) { if (IsBareRepo(projectTopDir)) { adminDir = projectTopDir; adminDir.TrimRight('\\'); adminDir.Append(_T("\\")); return true; } CString sDotGitPath = projectTopDir + _T("\\") + GetAdminDirName(); if (CTGitPath(sDotGitPath).IsDirectory()) { sDotGitPath.TrimRight('\\'); sDotGitPath.Append(_T("\\")); adminDir = sDotGitPath; return true; } else { CString result = ReadGitLink(projectTopDir, sDotGitPath); if (result.IsEmpty()) return false; adminDir = result + _T("\\"); return true; } }
bool GitAdminDir::GetWorktreeAdminDirPath(const CString& projectTopDir, CString& adminDir) { if (IsBareRepo(projectTopDir)) { adminDir = CPathUtils::BuildPathWithPathDelimiter(projectTopDir); return true; } CString sDotGitPath = CPathUtils::BuildPathWithPathDelimiter(projectTopDir) + GetAdminDirName(); if (CTGitPath(sDotGitPath).IsDirectory()) { adminDir = CPathUtils::BuildPathWithPathDelimiter(sDotGitPath); return true; } else { CString result = ReadGitLink(projectTopDir, sDotGitPath); if (result.IsEmpty()) return false; adminDir = CPathUtils::BuildPathWithPathDelimiter(result); return true; } }