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; }
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); }
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(); }
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); }
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(); } }
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); }