const git_oid *lookup_master_tree(git_repository *repo) { int ret; git_reference *ref; const git_oid *commit_oid; const git_oid *tree_oid; git_commit *commit; ret = git_reference_lookup(&ref, repo, "refs/heads/master"); if (ret) { printf("git_reference_lookup() error: %s\n", git_strerror(ret)); return NULL; } if (git_reference_type(ref) != GIT_REF_OID) { perror("reference_type is not oid reference."); return NULL; } commit_oid = git_reference_oid(ref); ret = git_commit_lookup(&commit, repo, commit_oid); tree_oid = git_commit_tree_oid(commit); git_commit_free(commit); return tree_oid; }
stdstring GitStatus::GetLastErrorMsg() const { stdstring msg; #if 0 char errbuf[256]; if (m_err != NULL) { git_error_t * ErrPtr = m_err; if (ErrPtr->message) { msg = CUnicodeUtils::StdGetUnicode(ErrPtr->message); } else { /* Is this a Subversion-specific error code? */ if ((ErrPtr->apr_err > APR_OS_START_USEERR) && (ErrPtr->apr_err <= APR_OS_START_CANONERR)) msg = CUnicodeUtils::StdGetUnicode(git_strerror (ErrPtr->apr_err, errbuf, sizeof (errbuf))); /* Otherwise, this must be an APR error code. */ else { git_error_t *temp_err = NULL; const char * err_string = NULL; temp_err = git_utf_cstring_to_utf8(&err_string, apr_strerror (ErrPtr->apr_err, errbuf, sizeof (errbuf)-1), ErrPtr->pool); if (temp_err) { git_error_clear (temp_err); msg = _T("Can't recode error string from APR"); } else { msg = CUnicodeUtils::StdGetUnicode(err_string); } } } while (ErrPtr->child) { ErrPtr = ErrPtr->child; msg += _T("\n"); if (ErrPtr->message) { msg += CUnicodeUtils::StdGetUnicode(ErrPtr->message); } else { /* Is this a Subversion-specific error code? */ if ((ErrPtr->apr_err > APR_OS_START_USEERR) && (ErrPtr->apr_err <= APR_OS_START_CANONERR)) msg += CUnicodeUtils::StdGetUnicode(git_strerror (ErrPtr->apr_err, errbuf, sizeof (errbuf))); /* Otherwise, this must be an APR error code. */ else { git_error_t *temp_err = NULL; const char * err_string = NULL; temp_err = git_utf_cstring_to_utf8(&err_string, apr_strerror (ErrPtr->apr_err, errbuf, sizeof (errbuf)-1), ErrPtr->pool); if (temp_err) { git_error_clear (temp_err); msg += _T("Can't recode error string from APR"); } else { msg += CUnicodeUtils::StdGetUnicode(err_string); } } } } return msg; } // if (m_err != NULL) #endif return msg; }
void die(char *msg, int error) { fprintf(stderr, "%s\n", msg); fprintf(stderr, "git error: %s\n", git_strerror(error)); exit(1); }