Example #1
0
bool GitWrapper::commitPattern(git_repository* repo, QString pattern, QString message)
{
    git_index *index = NULL;
    int error = git_repository_index(&index, repo);
    if(error < 0)
    {
        gitErrorHandling();
        return false;
    }


    QByteArray patternba = pattern.toUtf8();
    char *patternCString = patternba.data();
    git_strarray arr = { &patternCString, 1};
    error = git_index_add_all(index, &arr, 0, 0, 0);
    if(error < 0)
    {
        gitErrorHandling();
        return false;
    }

    bool result = commitIndex(repo,index, message);

    git_index_free(index);

    return true;
}
Example #2
0
void GitWrapper::commitTagsXml()
{
    GIT_RETURN_IF_DISABLED()
    QMutexLocker l(&gitMutex);
    git_repository* repo = openRepository();
    if(repo==0)
        return;

    git_index *index = NULL;
    int error = git_repository_index(&index, repo);
    if(error <0)
    {
        gitErrorHandling();
        return;
    }

    const QString tagsxml("tags.xml");
    QByteArray tagsxmlba = tagsxml.toUtf8();
    char *tagsxmlCString = tagsxmlba.data();
    error = git_index_add_bypath(index, tagsxmlCString);

    bool result = commitIndex(repo,index);
    git_index_free(index);

    git_repository_free(repo);
}
Example #3
0
void
SQLTableListManager::commit()
{
	std::string::size_type first=tempcontents_.find_first_not_of(' '), last=tempcontents_.find_last_not_of(' ');
	tempcontents_.assign(tempcontents_.substr(first, last - first + 1));

	switch(lastState_)
	{
		case FIELD:
		{
			commitField();
			break;
		}
		case PRIMARY:
		{
			commitPrimary();
			break;
		}
		case FOREIGN:
		{
			commitForeign();
			break;
		}
		case INDEX:
		{
			commitIndex();
			break;
		}
		case UNIQUE:
		{
			commitUnique();
			break;
		}
		case FULLTEXT:
		{
			commitFulltext();
			break;
		}
		case SPATIAL:
		{
			commitSpatial();
			break;
		}
		default:
		{
			throw std::logic_error("SQLTableListManager:commit() called on DUMMY state!");
		}
	}
	lastState_ = DUMMY;
	tempconstraint_.clear();
}
Example #4
0
void GitWrapper::commitDeleteBasket(BasketScene *basket)
{
    GIT_RETURN_IF_DISABLED()
    QMutexLocker l(&gitMutex);

    git_index *index = NULL;
    git_repository* repo = openRepository();
    if(repo == 0)
        return;

    int error = git_repository_index(&index, repo);
    if(error < 0)
    {
        gitErrorHandling();
        return;
    }

    //remove the directory
    const QString dir("baskets/" + basket->folderName());
    const QByteArray dirba = dir.toUtf8();
    const char *dirCString = dirba.data();
    error = git_index_remove_directory(index, dirCString, 0);
    if(error < 0)
    {
        gitErrorHandling();
        return;
    }

    //change basket.xml
    const QString basketxml("baskets/baskets.xml");
    QByteArray basketxmlba = basketxml.toUtf8();
    char *basketxmlCString = basketxmlba.data();
    error = git_index_add_bypath(index, basketxmlCString);
    if(error < 0)
    {
        gitErrorHandling();
        return;
    }
    removeDeletedFromIndex(repo,index);

    bool result = commitIndex(repo,index);

    git_index_free(index);
    git_repository_free(repo);
}
Example #5
0
void GitWrapper::commitCreateBasket()
{
    GIT_RETURN_IF_DISABLED()
    QMutexLocker l(&gitMutex);
    git_repository* repo = openRepository();
    if(repo==0)
        return;

    const QDateTime gitdate = getLastCommitDate(repo);

    const QString basketxml = Global::savesFolder() + "baskets/baskets.xml";
    const QFileInfo basketxmlinfo(basketxml);

    if(gitdate <= basketxmlinfo.lastModified())
    {
        git_index *index = NULL;
        int error = git_repository_index(&index, repo);
        if(error < 0)
        {
            gitErrorHandling();
            return;
        }
        //this is kind of hacky because somebody could come in between and we still have stuff open
        //change basket.xml
        const QString basketxml("baskets/baskets.xml");
        QByteArray basketxmlba = basketxml.toUtf8();
        char *basketxmlCString = basketxmlba.data();
        error = git_index_add_bypath(index, basketxmlCString);
        if(error < 0)
        {
            gitErrorHandling();
            return;
        }

        bool result = commitIndex(repo,index);
        git_index_free(index);
    }

    git_repository_free(repo);
}
	void ArchiveEditable::commit()
	{
		assert(File::good());
		bool need_update = false;
		int old_file_size = length();
		int index_size = calcIndexLen();

		if(index_size != index_size_) need_update = true;
		else {
			for(ListItr i = list_.begin(); i != list_.end(); ++i) {
				if(i->attr != EntryAttr::ALREADY) {
					need_update = true;
					break;
				}
			}
		}

		if(need_update) {
			int cur_file_size = commitEntrys(index_size);
			assert(File::good());
			commitIndex(index_size);
			assert(File::good());
			// ファイルサイズ変更
			if(old_file_size > cur_file_size) truncate(cur_file_size); // 縮んだ場合は縮める。大きくなった場合は特に操作はいらない
			assert(File::good());
			File::flush();
			assert(File::good());
			index_.clear();
			list_.clear();
			if(readIndex()) setUpList();
			else close();
		}
		else {
			list_.clear();
		}
	}
Example #7
0
void GitWrapper::commitBasket(BasketScene *basket)
{
    GIT_RETURN_IF_DISABLED()
    QMutexLocker l(&gitMutex);
    git_repository* repo = openRepository();
    if(repo==0)
        return;

    const QDateTime gitdate = getLastCommitDate(repo);

    const QString fullpath = basket->fullPath();
    const QDir basketdir(fullpath);
    bool changed = false;
    QDirIterator it(basketdir);
    while(!changed && it.hasNext())
    {
        const QFileInfo file(it.next());
        if(file.fileName() != ".basket")
        {
            if(file.lastModified() >= gitdate)
                changed = true;
        }
    }

    if(changed)
    {
        git_index *index = NULL;

        int error = git_repository_index(&index, repo);
        if(error < 0)
        {
            gitErrorHandling();
            return;
        }

        const QString pattern("baskets/" + basket->folderName() + "*");

        QByteArray patternba = pattern.toUtf8();
        char *patternCString = patternba.data();
        git_strarray arr = { &patternCString, 1};
        error = git_index_add_all(index, &arr, 0, 0, 0);
        if(error < 0)
        {
            gitErrorHandling();
            return;
        }
        const QString basketxml("baskets/baskets.xml");
        QByteArray basketxmlba = basketxml.toUtf8();
        char *basketxmlCString = basketxmlba.data();
        error = git_index_add_bypath(index, basketxmlCString);
        if(error < 0)
        {
            gitErrorHandling();
            return;
        }

        removeDeletedFromIndex(repo,index);

        bool result = commitIndex(repo,index);

        git_index_free(index);
    }

    git_repository_free(repo);
}