int GitRev::GetCommit(CString refname) { CAutoLocker lock(g_Git.m_critGitDllSec); g_Git.CheckAndInitDll(); if(refname.GetLength() >= 8) if(refname.Find(_T("00000000")) == 0) { this->m_CommitHash.Empty(); this->m_Subject=_T("Working Copy"); return 0; } CStringA rev; rev= CUnicodeUtils::GetUTF8(g_Git.FixBranchName(refname)); GIT_HASH sha; try { if (git_get_sha1(rev.GetBuffer(), sha)) return -1; } catch (char * msg) { MessageBox(NULL, _T("Could not get SHA-1 of ref \"") + g_Git.FixBranchName(refname) + _T("\".\nlibgit reports:\n") + CString(msg), _T("TortoiseGit"), MB_ICONERROR); return -1; } CGitHash hash((char*)sha); GetCommitFromHash_withoutLock(hash); return 0; }
int GitRev::GetCommitFromHash(CGitHash &hash) { CAutoLocker lock(g_Git.m_critGitDllSec); g_Git.CheckAndInitDll(); return GetCommitFromHash_withoutLock(hash); }
int GitRev::GetCommit(const CString& refname) { if (g_Git.UsingLibGit2(CGit::GIT_CMD_GET_COMMIT)) { CAutoRepository repo(g_Git.GetGitRepository()); if (!repo) { m_sErr = g_Git.GetLibGit2LastErr(); return -1; } return GetCommit(repo, refname); } CAutoLocker lock(g_Git.m_critGitDllSec); try { g_Git.CheckAndInitDll(); } catch (char* msg) { m_sErr = L"Could not initiate libgit.\nlibgit reports:\n" + CString(msg); return -1; } if(refname.GetLength() >= 8) if (refname.GetLength() >= 8 && wcsncmp(refname, GitRev::GetWorkingCopy(), refname.GetLength()) == 0) { this->m_CommitHash.Empty(); this->m_Subject = L"Working Tree"; m_sErr.Empty(); return 0; } CStringA rev; rev= CUnicodeUtils::GetUTF8(g_Git.FixBranchName(refname)); GIT_HASH sha; try { if (git_get_sha1(rev.GetBuffer(), sha)) { m_sErr = L"Could not get SHA-1 of ref \"" + g_Git.FixBranchName(refname); return -1; } } catch (char * msg) { m_sErr = L"Could not get SHA-1 of ref \"" + g_Git.FixBranchName(refname) + L"\".\nlibgit reports:\n" + CString(msg); return -1; } CGitHash hash(sha); return GetCommitFromHash_withoutLock(hash); }
int GitRev::GetCommit(CString refname) { CAutoLocker lock(g_Git.m_critGitDllSec); g_Git.CheckAndInitDll(); if(refname.GetLength() >= 8) if(refname.Find(_T("00000000")) == 0) { this->m_CommitHash.Empty(); this->m_Subject=_T("Working Copy"); return 0; } CStringA rev; rev= CUnicodeUtils::GetUTF8(g_Git.FixBranchName(refname)); GIT_HASH sha; if(git_get_sha1(rev.GetBuffer(),sha)) return -1; CGitHash hash((char*)sha); GetCommitFromHash_withoutLock(hash); return 0; }