K_PLUGIN_FACTORY(FileViewGitPluginFactory, registerPlugin<FileViewGitPlugin>();)
K_EXPORT_PLUGIN(FileViewGitPluginFactory("fileviewgitplugin"))
-static QByteArray getGitError()
-{
- const git_error* giterror = git_error_last();
- if (!giterror) {
- return QByteArray();
- }
- return QByteArray(giterror->message);
-}
-
// path passed to git_status_file() has to be relative to the main git directory
static QByteArray getGitFile(const KFileItem &item, const QByteArray &gitdir)
{
// NOTE: git_repository_open_ext() will look for .git in parent directories
const int gitresult = git_repository_open_ext(&m_gitrepo, directorybytes.constData(), 0 , "/");
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not open" << directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
return false;
unsigned int gitstatusflags = 0;
const int gitresult = git_status_file(&gitstatusflags, m_gitrepo, gitfile.constData());
if (gitresult != GIT_OK) {
- kWarning() << "Could not get status" << gitfile << getGitError();
+ kWarning() << "Could not get status" << gitfile << FileViewGitPlugin::getGitError();
return KVersionControlPlugin::UnversionedVersion;
}
if (gitstatusflags & GIT_STATUS_INDEX_NEW || gitstatusflags & GIT_STATUS_WT_NEW) {
git_index* gitindex = nullptr;
int gitresult = git_repository_index(&gitindex, m_gitrepo);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not get repository index" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
return;
emit infoMessage(i18n("Adding: %1", QFile::decodeName(gitfile)));
gitresult = git_index_add_bypath(gitindex, gitfile.constData());
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not add path to repository" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
git_index_free(gitindex);
emit infoMessage(i18n("Writing changes"));
gitresult = git_index_write(gitindex);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not write changes to repository" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
git_index_free(gitindex);
git_index* gitindex = nullptr;
int gitresult = git_repository_index(&gitindex, m_gitrepo);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not get repository index" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
return;
emit infoMessage(i18n("Removing: %1", QFile::decodeName(gitfile)));
gitresult = git_index_remove_bypath(gitindex, gitfile.constData());
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not remove path from repository" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
git_index_free(gitindex);
emit infoMessage(i18n("Writing changes"));
gitresult = git_index_write(gitindex);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not write index changes to repository" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
git_index_free(gitindex);
git_index* gitindex = nullptr;
int gitresult = git_repository_index(&gitindex, m_gitrepo);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not get repository index" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
return;
gitupdatearray.count = 1;
gitresult = git_index_update_all(gitindex, &gitupdatearray, NULL, NULL);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not update index" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
git_index_free(gitindex);
git_object *gitparent = nullptr;
gitresult = git_revparse_single(&gitparent, m_gitrepo, gitspec);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not parse revision" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
git_index_free(gitindex);
git_oid gittreeobjectid;
gitresult = git_index_write_tree(&gittreeobjectid, gitindex);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not write tree changes to repository" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
git_object_free(gitparent);
}
gitresult = git_index_write(gitindex);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not write index changes to repository" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
git_object_free(gitparent);
git_tree *gittree = nullptr;
gitresult = git_tree_lookup(&gittree, m_gitrepo, &gittreeobjectid);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not lookup tree" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
git_object_free(gitparent);
git_signature* gitsignature = nullptr;
gitresult = git_signature_default(&gitsignature, m_gitrepo);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not get signature" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
git_tree_free(gittree);
gitparent ? 1 : 0, gitparent
);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not commit" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
git_signature_free(gitsignature);
git_push_options gitpushoptions;
int gitresult = git_push_options_init(&gitpushoptions, GIT_PUSH_OPTIONS_VERSION);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not initialize push options" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
return;
git_strarray gitremotes;
gitresult = git_remote_list(&gitremotes, m_gitrepo);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not list remotes" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
return;
git_remote* gitremote = nullptr;
gitresult = git_remote_lookup(&gitremote, m_gitrepo, gitremotes.strings[i]);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not lookup remote" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
return;
gitresult = git_remote_push(gitremote, NULL, &gitpushoptions);
if (gitresult != GIT_OK) {
- const QByteArray giterror = getGitError();
+ const QByteArray giterror = FileViewGitPlugin::getGitError();
kWarning() << "Could not push remote" << m_directory << giterror;
emit errorMessage(QString::fromLocal8Bit(giterror.constData(), giterror.size()));
git_remote_free(gitremote);
return 1;
}
+QByteArray FileViewGitPlugin::getGitError()
+{
+ const git_error* giterror = git_error_last();
+ if (!giterror) {
+ return QByteArray();
+ }
+ return QByteArray(giterror->message);
+}
+
#include "moc_fileviewgitplugin.cpp"