[Grandmas-svn-commit] SF.net SVN: grandmas-svn: [150] trunk
Brought to you by:
matthiasmiller
From: <hig...@us...> - 2007-01-13 17:49:05
|
Revision: 150 http://svn.sourceforge.net/grandmas-svn/?rev=150&view=rev Author: highjinx Date: 2007-01-13 09:49:02 -0800 (Sat, 13 Jan 2007) Log Message: ----------- * Add delete functionality * Consolidate a bunch of little svn operation files into two files, wc_operations and wc_info Modified Paths: -------------- trunk/grandmas_svn.kdevelop trunk/grandmas_svn.pro trunk/include/dialogs/mainwindow.h trunk/src/dialogs/commit.cpp trunk/src/dialogs/mainwindow.cpp trunk/src/svn/commit_summary.cpp trunk/src/svn/file_access.cpp trunk/src/svn/svn_commit.cpp trunk/tests/svn_test.cpp trunk/ui/mainwindow.ui Added Paths: ----------- trunk/include/svn/operations.h trunk/include/svn/wc_info.h trunk/include/svn/wc_operations.h trunk/src/svn/wc_info.cpp trunk/src/svn/wc_operations.cpp Removed Paths: ------------- trunk/include/svn/add.h trunk/include/svn/delete.h trunk/include/svn/operation.h trunk/include/svn/revert.h trunk/include/svn/svn_commit.h trunk/include/svn/update.h trunk/src/svn/add.cpp trunk/src/svn/delete.cpp trunk/src/svn/operation.cpp trunk/src/svn/operation_internal.cpp trunk/src/svn/revert.cpp trunk/src/svn/update.cpp Modified: trunk/grandmas_svn.kdevelop =================================================================== --- trunk/grandmas_svn.kdevelop 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/grandmas_svn.kdevelop 2007-01-13 17:49:02 UTC (rev 150) @@ -90,7 +90,7 @@ <kdevtrollproject> <run> <mainprogram>bin/debug/grandmas-svn</mainprogram> - <programargs>-t</programargs> + <programargs></programargs> <directoryradio>build</directoryradio> <customdirectory>/</customdirectory> <terminal>false</terminal> Modified: trunk/grandmas_svn.pro =================================================================== --- trunk/grandmas_svn.pro 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/grandmas_svn.pro 2007-01-13 17:49:02 UTC (rev 150) @@ -213,20 +213,16 @@ include/diff.h \ include/nullable.h \ include/settings/userpaths.h \ - include/svn/add.h \ include/svn/commit_summary.h \ include/svn/commit_summary_thread.h \ include/svn/file_access.h \ include/svn/helpers.h \ include/svn/modification.h \ - include/svn/operation.h \ - include/svn/operation_internal.h \ include/svn/pool.h \ - include/svn/revert.h \ include/svn/revision.h \ include/svn/server_access.h \ - include/svn/svn_commit.h \ - include/svn/update.h \ + include/svn/wc_info.h \ + include/svn/wc_operations.h \ src/grandmas_svn.h SOURCES += src/commandline.cpp \ @@ -244,20 +240,16 @@ src/dialogs/util.cpp \ src/diff.cpp \ src/settings/userpaths.cpp \ - src/svn/add.cpp \ src/svn/commit_summary.cpp \ src/svn/commit_summary_thread.cpp \ src/svn/file_access.cpp \ src/svn/helpers.cpp \ src/svn/modification.cpp \ - src/svn/operation.cpp \ - src/svn/operation_internal.cpp \ src/svn/pool.cpp \ - src/svn/revert.cpp \ src/svn/revision.cpp \ src/svn/server_access.cpp \ - src/svn/svn_commit.cpp \ - src/svn/update.cpp \ + src/svn/wc_info.cpp \ + src/svn/wc_operations.cpp \ src/grandmas_svn.cpp \ src/main.cpp \ Modified: trunk/include/dialogs/mainwindow.h =================================================================== --- trunk/include/dialogs/mainwindow.h 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/include/dialogs/mainwindow.h 2007-01-13 17:49:02 UTC (rev 150) @@ -54,6 +54,7 @@ void diff(const QModelIndex& rcIndex); void revert(); void add(); + void remove(); void move(); void modificationSelectionChanged(const QItemSelection& rcSelected, const QItemSelection& rcDeselected); void revisionSelectionChanged(const QItemSelection& rcSelected, const QItemSelection& rcDeselected); Deleted: trunk/include/svn/add.h =================================================================== --- trunk/include/svn/add.h 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/include/svn/add.h 2007-01-13 17:49:02 UTC (rev 150) @@ -1,27 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Matthias Miller * - * ad...@gr... * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -class SvnOperationContext; -class QString; - -namespace Svn -{ - bool add(SvnOperationContext& rContext, const QString& filePath, QString& rError); -}; Deleted: trunk/include/svn/delete.h =================================================================== Deleted: trunk/include/svn/operation.h =================================================================== --- trunk/include/svn/operation.h 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/include/svn/operation.h 2007-01-13 17:49:02 UTC (rev 150) @@ -1,35 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Matthias Miller * - * ad...@gr... * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -struct svn_client_ctx_t; -struct svn_error_t; -struct svn_info_t; -struct apr_pool_t; - -class SvnOperationContext; -class QString; - -namespace Operation -{ - bool initAuthProviders(SvnOperationContext& rContext, svn_client_ctx_t* context, QString& rError); - - bool getRepoCheckoutUrl(SvnOperationContext& rContext, svn_client_ctx_t* ctx, QString& rRelPath, QString fullRepoPath, QString& rError); - bool getRepoUrlWithPath(SvnOperationContext& rContext, svn_client_ctx_t* ctx, QString& rFullPath, QString fullRepoPath, QString& rError); -}; Added: trunk/include/svn/operations.h =================================================================== --- trunk/include/svn/operations.h (rev 0) +++ trunk/include/svn/operations.h 2007-01-13 17:49:02 UTC (rev 150) @@ -0,0 +1,38 @@ +/*************************************************************************** + * Copyright (C) 2006 by Matthias Miller * + * ad...@gr... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + + +class SvnOperationContext; +class QString; + +namespace Svn +{ + // operations performed on a working-copy + bool add(SvnOperationContext& rContext, const QString& filePath, QString& rError); + bool commit(SvnOperationContext& rContext, QString commitMessage, const QStringList& filePaths, QString& rError); + bool update(SvnOperationContext& rContext, const QString& filePath, const Revision& revision, QString& rError); + bool revert(SvnOperationContext& rContext, const QString& filePath, QString& rError); + + // Functions to retrieve information about a working copy + bool getRepoCheckoutUrl(SvnOperationContext& rContext, svn_client_ctx_t* ctx, QString& rRelPath, QString fullRepoPath, QString& rError); + bool getRepoUrlWithPath(SvnOperationContext& rContext, svn_client_ctx_t* ctx, QString& rFullPath, QString fullRepoPath, QString& rError); + + bool initAuthProviders(SvnOperationContext& rContext, svn_client_ctx_t* context, QString& rError); + Deleted: trunk/include/svn/revert.h =================================================================== --- trunk/include/svn/revert.h 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/include/svn/revert.h 2007-01-13 17:49:02 UTC (rev 150) @@ -1,27 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Matthias Miller * - * ad...@gr... * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -class QString; -class SvnOperationContext; - -namespace Svn -{ - bool revert(SvnOperationContext& rContext, const QString& filePath, QString& rError); -}; Deleted: trunk/include/svn/svn_commit.h =================================================================== --- trunk/include/svn/svn_commit.h 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/include/svn/svn_commit.h 2007-01-13 17:49:02 UTC (rev 150) @@ -1,5 +0,0 @@ - -namespace Svn -{ - bool commit(SvnOperationContext& rContext, QString commitMessage, const QStringList& filePaths, QString& rError); -} Deleted: trunk/include/svn/update.h =================================================================== --- trunk/include/svn/update.h 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/include/svn/update.h 2007-01-13 17:49:02 UTC (rev 150) @@ -1,28 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Matthias Miller * - * ad...@gr... * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -class QString; -class SvnOperationContext; -class Revision; - -namespace Svn -{ - bool update(SvnOperationContext& rContext, const QString& filePath, const Revision& revision, QString& rError); -}; Added: trunk/include/svn/wc_info.h =================================================================== --- trunk/include/svn/wc_info.h (rev 0) +++ trunk/include/svn/wc_info.h 2007-01-13 17:49:02 UTC (rev 150) @@ -0,0 +1,31 @@ +/*************************************************************************** + * Copyright (C) 2006 by Matthias Miller * + * ad...@gr... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + + +class SvnOperationContext; +class QString; + +struct svn_client_ctx_t; + +namespace Svn +{ + bool getRepoCheckoutUrl(SvnOperationContext& rContext, svn_client_ctx_t* ctx, QString& rRelPath, QString fullRepoPath, QString& rError); + bool getRepoUrlWithPath(SvnOperationContext& rContext, svn_client_ctx_t* ctx, QString& rFullPath, QString fullRepoPath, QString& rError); +} Added: trunk/include/svn/wc_operations.h =================================================================== --- trunk/include/svn/wc_operations.h (rev 0) +++ trunk/include/svn/wc_operations.h 2007-01-13 17:49:02 UTC (rev 150) @@ -0,0 +1,38 @@ +/*************************************************************************** + * Copyright (C) 2006 by Matthias Miller * + * ad...@gr... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + + +class SvnOperationContext; +class QString; +class QStringList; +class Revision; +struct svn_client_ctx_t; + +namespace Svn +{ + bool add(SvnOperationContext& rContext, const QString& filePath, QString& rError); + bool commit(SvnOperationContext& rContext, QString commitMessage, const QStringList& filePaths, QString& rError); + bool remove(SvnOperationContext& rContext, const QString& filePath, QString& rError); // equivalent to svn del + bool update(SvnOperationContext& rContext, const QString& filePath, const Revision& revision, QString& rError); + bool revert(SvnOperationContext& rContext, const QString& filePath, QString& rError); + + bool initAuthProviders(SvnOperationContext& rContext, svn_client_ctx_t* context, QString& rError); +} + Modified: trunk/src/dialogs/commit.cpp =================================================================== --- trunk/src/dialogs/commit.cpp 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/src/dialogs/commit.cpp 2007-01-13 17:49:02 UTC (rev 150) @@ -27,8 +27,7 @@ #include "svn/commit_summary.h" #include "svn/file_access.h" #include "svn/revision.h" -#include "svn/svn_commit.h" -#include "svn/update.h" +#include "svn/wc_operations.h" #include "ui_commit.h" #include <QHeaderView> Modified: trunk/src/dialogs/mainwindow.cpp =================================================================== --- trunk/src/dialogs/mainwindow.cpp 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/src/dialogs/mainwindow.cpp 2007-01-13 17:49:02 UTC (rev 150) @@ -29,12 +29,10 @@ #include "dialogs/progress.h" #include "dialogs/revisionsmodel.h" #include "diff.h" -#include "svn/add.h" #include "svn/commit_summary.h" #include "svn/file_access.h" -#include "svn/revert.h" #include "svn/revision.h" -#include "svn/update.h" +#include "svn/wc_operations.h" #include "ui_mainwindow.h" #include <QDir> @@ -70,6 +68,7 @@ connect(mpUi->diffButton, SIGNAL(clicked()), this, SLOT(diff())); connect(mpUi->revertButton, SIGNAL(clicked()), this, SLOT(revert())); connect(mpUi->addButton, SIGNAL(clicked()), this, SLOT(add())); + connect(mpUi->deleteButton, SIGNAL(clicked()), this, SLOT(remove())); connect(mpUi->moveButton, SIGNAL(clicked()), this, SLOT(move())); mpModificationsModel = new ModificationsModel(mpCommitSummaryCache); @@ -238,6 +237,23 @@ reloadUncommittedSummary(); } +void MainWindow::remove() +{ + mpUi->changesTreeView->setFocus(); + + QList<Modification> mods = getSelectedModifications(); + Q_FOREACH(Modification mod, mods) + { + QString error; + if (!Svn::remove(*mpContext, mod.getFilePath(), error)) + { + QMessageBox::critical(this, "", error); + return; + } + } + reloadUncommittedSummary(); +} + void MainWindow::move() { MoveDialog dlg(this); @@ -276,7 +292,7 @@ mpUi->diffButton->setEnabled(true); mpUi->revertButton->setEnabled(isUncommitted && hasVersionedMod); mpUi->addButton->setEnabled(isUncommitted && hasUnversionedMod); - mpUi->deleteButton->setEnabled(false); + mpUi->deleteButton->setEnabled(isUncommitted); // TODO: yes, this is too loose mpUi->moveButton->setEnabled(false); } Deleted: trunk/src/svn/add.cpp =================================================================== --- trunk/src/svn/add.cpp 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/src/svn/add.cpp 2007-01-13 17:49:02 UTC (rev 150) @@ -1,50 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Matthias Miller * - * ad...@gr... * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include "svn/add.h" - -#include "svn/helpers.h" -#include "svn/operation.h" -#include "svn/server_access.h" - -#include <svn_client.h> -#include <svn_path.h> -#include <Qt> - - -bool Svn::add(SvnOperationContext& rContext, const QString& filePath, QString& rError) -{ - const char* svnPath = svn_path_internal_style(filePath.toAscii(), rContext.getAprPool()); - const char* fullCanonPath = svn_path_canonicalize(svnPath, rContext.getAprPool()); - - svn_client_ctx_t* ctx; - svn_client_create_context(&ctx, rContext.getAprPool()); - if (!Operation::initAuthProviders(rContext, ctx, rError)) - return false; - - svn_error_t* pError = svn_client_add2(fullCanonPath, true, false, ctx, rContext.getAprPool()); - if (pError) - { - rError = formatSvnErrorMessage(pError); - return false; - } - - return true; -} Modified: trunk/src/svn/commit_summary.cpp =================================================================== --- trunk/src/svn/commit_summary.cpp 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/src/svn/commit_summary.cpp 2007-01-13 17:49:02 UTC (rev 150) @@ -20,7 +20,8 @@ #include "svn/commit_summary.h" #include "svn/helpers.h" -#include "svn/operation.h" +#include "svn/wc_info.h" +#include "svn/wc_operations.h" #include <svn_client.h> #include <svn_path.h> @@ -75,13 +76,13 @@ svn_client_ctx_t* ctx; svn_client_create_context(&ctx, rContext.getAprPool()); - if (!Operation::initAuthProviders(rContext, ctx, rError)) + if (!initAuthProviders(rContext, ctx, rError)) return false; svn_error_t* pError = NULL; if (startRevision.getType() != Revision::Uncommitted) { - if (!Operation::getRepoCheckoutUrl(rContext, ctx, mRepoUrl, fullCanonPath, rError)) + if (!getRepoCheckoutUrl(rContext, ctx, mRepoUrl, fullCanonPath, rError)) return false; addSuffixUnlessExists(mRepoUrl, "/"); @@ -104,7 +105,7 @@ { mWcPath = fullCanonPath; addSuffixUnlessExists(mWcPath, "/"); - if (!Operation::getRepoUrlWithPath(rContext, ctx, mRepoUrl, fullCanonPath, rError)) + if (!getRepoUrlWithPath(rContext, ctx, mRepoUrl, fullCanonPath, rError)) return false; addSuffixUnlessExists(mRepoUrl, "/"); Deleted: trunk/src/svn/delete.cpp =================================================================== Modified: trunk/src/svn/file_access.cpp =================================================================== --- trunk/src/svn/file_access.cpp 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/src/svn/file_access.cpp 2007-01-13 17:49:02 UTC (rev 150) @@ -20,7 +20,8 @@ #include "svn/file_access.h" #include "svn/helpers.h" -#include "svn/operation.h" +#include "svn/wc_info.h" +#include "svn/wc_operations.h" #include <svn_client.h> #include <svn_path.h> @@ -77,7 +78,7 @@ svn_client_ctx_t* pCtx = NULL; svn_client_create_context(&pCtx, rContext.getAprPool()); - if (!Operation::initAuthProviders(rContext, pCtx, rError)) + if (!Svn::initAuthProviders(rContext, pCtx, rError)) return false; svn_opt_revision_t svnRev = rev.getSvnRevision(); Deleted: trunk/src/svn/operation.cpp =================================================================== --- trunk/src/svn/operation.cpp 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/src/svn/operation.cpp 2007-01-13 17:49:02 UTC (rev 150) @@ -1,138 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Matthias Miller * - * ad...@gr... * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include "svn/helpers.h" -#include "svn/operation.h" -#include "svn/server_access.h" - -#include <svn_client.h> -#include <svn_path.h> -#include <apr_pools.h> - -#include <QString> - -svn_error_t* simpleAuthPrompt(svn_auth_cred_simple_t **cred, void *baton, const char * /*realm*/, const char *username, svn_boolean_t /*_may_save*/, apr_pool_t *pool) -{ - QString promptUsername = username; - QString promptPassword; - SvnAuthentication* pAuth = ((SvnAuthentication*)baton); - if (!pAuth->getAuthentication(promptUsername)) - return svn_error_create(SVN_ERR_CANCELLED, NULL, ""); - - svn_auth_cred_simple_t* lcred = (svn_auth_cred_simple_t*)apr_palloc(pool, sizeof (svn_auth_cred_simple_t)); - lcred->username = pAuth->getUsername(); - lcred->password = pAuth->getPassword(); - - // tell svn if the credentials need to be saved - lcred->may_save = true; - *cred = lcred; - - return SVN_NO_ERROR; - } - - -bool Operation::initAuthProviders(SvnOperationContext& rContext, svn_client_ctx_t* context, QString& /*rError*/) -{ - apr_array_header_t *providers = apr_array_make(rContext.getAprPool(), 7, sizeof(svn_auth_provider_object_t *)); - - svn_auth_provider_object_t *provider; - -#ifdef WIN32 - svn_client_get_windows_simple_provider(&provider, rContext.getAprPool()); - APR_ARRAY_PUSH(providers,svn_auth_provider_object_t*) = provider; -#endif - // TODO: keychain provider? - svn_client_get_simple_provider(&provider, rContext.getAprPool()); - APR_ARRAY_PUSH(providers,svn_auth_provider_object_t*) = provider; - svn_client_get_username_provider(&provider, rContext.getAprPool()); - APR_ARRAY_PUSH(providers,svn_auth_provider_object_t*) = provider; - - // The server-cert, client-cert, and client-cert-password providers. - svn_client_get_ssl_server_trust_file_provider(&provider, rContext.getAprPool()); - APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; - svn_client_get_ssl_client_cert_file_provider(&provider, rContext.getAprPool()); - APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; - svn_client_get_ssl_client_cert_pw_file_provider(&provider, rContext.getAprPool()); - APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; - - svn_client_get_simple_prompt_provider(&provider, simpleAuthPrompt, rContext.getAuthenticationCallback(), 100000000, rContext.getAprPool()); - APR_ARRAY_PUSH(providers,svn_auth_provider_object_t*) = provider; - - svn_auth_baton_t *authBaton; - svn_auth_open(&authBaton, providers, rContext.getAprPool()); - - context->auth_baton = authBaton; - return true; -} - -class SvnInfo -{ -public: - bool getRepoUrls(SvnOperationContext& rContext, QString fullRepoPath, svn_client_ctx_t* ctx, QString& rRelCheckoutPath, QString& rRepoUrlWithPath, QString& rError) - { - const char* fullCanonPath = svn_path_canonicalize(fullRepoPath.toAscii(), rContext.getAprPool()); - svn_error_t* pError = svn_client_info(fullCanonPath, NULL, NULL, infoCallback, this, false, ctx, rContext.getAprPool()); - if (pError) - { - rError = Svn::formatSvnErrorMessage(pError); - return false; - } - rRelCheckoutPath = mRelativeRepoUrl; - rRepoUrlWithPath = mRepoUrlWithPath; - return true; - } - -protected: - static svn_error_t* infoCallback(void *baton, const char * /*path*/, const svn_info_t *info, apr_pool_t * /*pool*/) - { - SvnInfo* pThis = (SvnInfo*)baton; - - QString sRootUrl = info->repos_root_URL; - QString sRepoUrl = info->URL; - - if (!sRepoUrl.startsWith(sRootUrl)) - return svn_error_create(SVN_ERR_INCOMPLETE_DATA, NULL, "Invalid repository information."); - - pThis->mRepoUrlWithPath = sRepoUrl; - - sRepoUrl.remove(0, sRootUrl.length()); - pThis->mRelativeRepoUrl = sRepoUrl; - return NULL; - } - - QString mRelativeRepoUrl; - QString mRepoUrlWithPath; -}; - - -bool Operation::getRepoCheckoutUrl(SvnOperationContext& rContext, svn_client_ctx_t* ctx, QString& rRelPath, QString fullRepoPath, QString& rError) -{ - SvnInfo info; - QString ignored; - return info.getRepoUrls(rContext, fullRepoPath, ctx, rRelPath, ignored, rError); -} - -bool Operation::getRepoUrlWithPath(SvnOperationContext& rContext, svn_client_ctx_t* ctx, QString& rRelPath, QString fullRepoPath, QString& rError) -{ - SvnInfo info; - QString ignored; - return info.getRepoUrls(rContext, fullRepoPath, ctx, ignored, rRelPath, rError); -} - Deleted: trunk/src/svn/operation_internal.cpp =================================================================== --- trunk/src/svn/operation_internal.cpp 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/src/svn/operation_internal.cpp 2007-01-13 17:49:02 UTC (rev 150) @@ -1,21 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Matthias Miller * - * ad...@gr... * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include <svn/operation_internal.h> Deleted: trunk/src/svn/revert.cpp =================================================================== --- trunk/src/svn/revert.cpp 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/src/svn/revert.cpp 2007-01-13 17:49:02 UTC (rev 150) @@ -1,51 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Matthias Miller * - * ad...@gr... * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include "svn/revert.h" - -#include "svn/helpers.h" -#include "svn/operation.h" -#include "svn/server_access.h" - -#include <svn_client.h> -#include <svn_path.h> -#include <QStringList> -#include <Qt> - - -bool Svn::revert(SvnOperationContext& rContext, const QString& filePath, QString& rError) -{ - const char* fullCanonPath = svn_path_canonicalize(filePath.toAscii(), rContext.getAprPool()); - - svn_client_ctx_t* ctx; - svn_client_create_context(&ctx, rContext.getAprPool()); - if (!Operation::initAuthProviders(rContext, ctx, rError)) - return false; - - apr_array_header_t *array = aprArrayFromQStringList(QStringList() << fullCanonPath, rContext.getAprPool()); - svn_error_t* pError = svn_client_revert(array, true, ctx, rContext.getAprPool()); - if (pError) - { - rError = formatSvnErrorMessage(pError); - return false; - } - - return true; -} Modified: trunk/src/svn/svn_commit.cpp =================================================================== --- trunk/src/svn/svn_commit.cpp 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/src/svn/svn_commit.cpp 2007-01-13 17:49:02 UTC (rev 150) @@ -31,66 +31,3 @@ #include <svn_client.h> -namespace Svn -{ - class Committer - { - public: - Committer() { mpContext = NULL; } - ~Committer() {} - - bool commit(SvnOperationContext& rContext, QString commitMessage, const QStringList& filePaths, QString& rError) - { - mLogMessage = commitMessage; - mpContext = &rContext; - - mpContext->getStatus()->update(QObject::tr("Connecting to server to commit changes...")); - - svn_client_ctx_t* ctx = NULL; - svn_client_create_context(&ctx, rContext.getAprPool()); - if (!Operation::initAuthProviders(rContext, ctx, rError)) - return false; - - ctx->log_msg_func2 = getLogMessage; - ctx->log_msg_baton2 = this; - ctx->notify_func2 = updateNotifyCallback; - ctx->notify_baton2 = this; - - apr_array_header_t *filesArray = aprArrayFromQStringList(filePaths, rContext.getAprPool()); - - svn_commit_info_t* pResultingInfo = NULL; - svn_error_t* pError = svn_client_commit3(&pResultingInfo, filesArray, true, true, ctx, rContext.getAprPool()); - if (pError) - { - rError = formatSvnErrorMessage(pError); - return false; - } - - return true; - } - - private: - static svn_error_t* getLogMessage(const char **log_msg, const char ** /*tmp_file*/, const apr_array_header_t * /*commit_items*/, void *baton, apr_pool_t * /*pool*/) - { - Svn::Committer* pThis = (Svn::Committer*)baton; - *log_msg = apr_pstrdup(pThis->mpContext->getAprPool(), pThis->mLogMessage.toAscii()); - return NULL; - } - - static void updateNotifyCallback(void *baton, const svn_wc_notify_t *notify, apr_pool_t * /*pool*/) - { - Svn::Committer* pThis = (Svn::Committer*)baton; - pThis->mpContext->getStatus()->update(QObject::tr("Committing %1...").arg(notify->path)); - } - - SvnOperationContext* mpContext; - QString mLogMessage; - }; - - - bool commit(SvnOperationContext& rContext, QString commitMessage, const QStringList& filePaths, QString& rError) - { - Svn::Committer comitter; - return comitter.commit(rContext, commitMessage, filePaths, rError); - } -}; Deleted: trunk/src/svn/update.cpp =================================================================== --- trunk/src/svn/update.cpp 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/src/svn/update.cpp 2007-01-13 17:49:02 UTC (rev 150) @@ -1,85 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Matthias Miller * - * ad...@gr... * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include "svn/update.h" - -#include "svn/helpers.h" -#include "svn/operation.h" -#include "svn/revision.h" -#include "svn/server_access.h" - -#include <svn_client.h> -#include <svn_path.h> -#include <QObject> -#include <QStringList> - -namespace Svn -{ - class Updater - { - public: - bool update(SvnOperationContext& rContext, const QString& filePath, const Revision& revision, QString& rError); - - private: - static void updateNotifyCallback(void *baton, const svn_wc_notify_t *notify, apr_pool_t *pool); - - SvnOperationContext* mpContext; - }; -} - -bool Svn::Updater::update(SvnOperationContext& rContext, const QString& filePath, const Revision& revision, QString& rError) -{ - rError = ""; - mpContext = &rContext; - - const char* fullCanonPath = svn_path_canonicalize(filePath.toAscii(), rContext.getAprPool()); - - svn_client_ctx_t* ctx; - svn_client_create_context(&ctx, rContext.getAprPool()); - if (!Operation::initAuthProviders(rContext, ctx, rError)) - return false; - - ctx->notify_func2 = updateNotifyCallback; - ctx->notify_baton2 = this; - - svn_opt_revision_t svnRev = revision.getSvnRevision(); - - apr_array_header_t *paths = aprArrayFromQStringList(QStringList() << fullCanonPath, rContext.getAprPool()); - svn_error_t* pError = svn_client_update2(NULL, paths, &svnRev, true, false, ctx, rContext.getAprPool()); - if (pError) - { - rError = formatSvnErrorMessage(pError); - return false; - } - - return true; -} - -void Svn::Updater::updateNotifyCallback(void *baton, const svn_wc_notify_t *notify, apr_pool_t * /*pool*/) -{ - Svn::Updater* pThis = (Svn::Updater*)baton; - pThis->mpContext->getStatus()->update(QObject::tr("Updating %1...").arg(notify->path)); -} - -bool Svn::update(SvnOperationContext& rContext, const QString& filePath, const Revision& revision, QString& rError) -{ - Svn::Updater updater; - return updater.update(rContext, filePath, revision, rError); -} Added: trunk/src/svn/wc_info.cpp =================================================================== --- trunk/src/svn/wc_info.cpp (rev 0) +++ trunk/src/svn/wc_info.cpp 2007-01-13 17:49:02 UTC (rev 150) @@ -0,0 +1,86 @@ +/*************************************************************************** + * Copyright (C) 2006 by Matthias Miller * + * ad...@gr... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "svn/wc_info.h" + +#include "svn/helpers.h" +#include "svn/server_access.h" + +#include <svn_client.h> +#include <svn_path.h> +#include <apr_pools.h> + +#include <QString> + + +class SvnInfo +{ +public: + bool getRepoUrls(SvnOperationContext& rContext, QString fullRepoPath, svn_client_ctx_t* ctx, QString& rRelCheckoutPath, QString& rRepoUrlWithPath, QString& rError) + { + const char* fullCanonPath = svn_path_canonicalize(fullRepoPath.toAscii(), rContext.getAprPool()); + svn_error_t* pError = svn_client_info(fullCanonPath, NULL, NULL, infoCallback, this, false, ctx, rContext.getAprPool()); + if (pError) + { + rError = Svn::formatSvnErrorMessage(pError); + return false; + } + rRelCheckoutPath = mRelativeRepoUrl; + rRepoUrlWithPath = mRepoUrlWithPath; + return true; + } + +protected: + static svn_error_t* infoCallback(void *baton, const char * /*path*/, const svn_info_t *info, apr_pool_t * /*pool*/) + { + SvnInfo* pThis = (SvnInfo*)baton; + + QString sRootUrl = info->repos_root_URL; + QString sRepoUrl = info->URL; + + if (!sRepoUrl.startsWith(sRootUrl)) + return svn_error_create(SVN_ERR_INCOMPLETE_DATA, NULL, "Invalid repository information."); + + pThis->mRepoUrlWithPath = sRepoUrl; + + sRepoUrl.remove(0, sRootUrl.length()); + pThis->mRelativeRepoUrl = sRepoUrl; + return NULL; + } + + QString mRelativeRepoUrl; + QString mRepoUrlWithPath; +}; + + +bool Svn::getRepoCheckoutUrl(SvnOperationContext& rContext, svn_client_ctx_t* ctx, QString& rRelPath, QString fullRepoPath, QString& rError) +{ + SvnInfo info; + QString ignored; + return info.getRepoUrls(rContext, fullRepoPath, ctx, rRelPath, ignored, rError); +} + +bool Svn::getRepoUrlWithPath(SvnOperationContext& rContext, svn_client_ctx_t* ctx, QString& rRelPath, QString fullRepoPath, QString& rError) +{ + SvnInfo info; + QString ignored; + return info.getRepoUrls(rContext, fullRepoPath, ctx, ignored, rRelPath, rError); +} + Added: trunk/src/svn/wc_operations.cpp =================================================================== --- trunk/src/svn/wc_operations.cpp (rev 0) +++ trunk/src/svn/wc_operations.cpp 2007-01-13 17:49:02 UTC (rev 150) @@ -0,0 +1,264 @@ +/*************************************************************************** + * Copyright (C) 2006 by Matthias Miller * + * ad...@gr... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "svn/wc_operations.h" + +#include "svn/helpers.h" +#include "svn/revision.h" +#include "svn/server_access.h" +#include "svn/wc_info.h" + +#include <svn_client.h> +#include <svn_path.h> + +#include <Qt> +#include <QObject> +#include <QStringList> + + +namespace Svn +{ + class Updater + { + public: + bool update(SvnOperationContext& rContext, const QString& filePath, const Revision& revision, QString& rError); + + private: + static void updateNotifyCallback(void *baton, const svn_wc_notify_t *notify, apr_pool_t *pool); + + SvnOperationContext* mpContext; + }; + + class Committer + { + public: + Committer() { mpContext = NULL; } + ~Committer() {} + + bool commit(SvnOperationContext& rContext, QString commitMessage, const QStringList& filePaths, QString& rError); + + private: + static svn_error_t* getLogMessage(const char **log_msg, const char ** /*tmp_file*/, const apr_array_header_t * /*commit_items*/, void *baton, apr_pool_t * /*pool*/) + { + Svn::Committer* pThis = (Svn::Committer*)baton; + *log_msg = apr_pstrdup(pThis->mpContext->getAprPool(), pThis->mLogMessage.toAscii()); + return NULL; + } + + static void updateNotifyCallback(void *baton, const svn_wc_notify_t *notify, apr_pool_t * /*pool*/) + { + Svn::Committer* pThis = (Svn::Committer*)baton; + pThis->mpContext->getStatus()->update(QObject::tr("Committing %1...").arg(notify->path)); + } + + SvnOperationContext* mpContext; + QString mLogMessage; + }; +} + +bool Svn::add(SvnOperationContext& rContext, const QString& filePath, QString& rError) +{ + const char* svnPath = svn_path_internal_style(filePath.toAscii(), rContext.getAprPool()); + const char* fullCanonPath = svn_path_canonicalize(svnPath, rContext.getAprPool()); + + svn_client_ctx_t* ctx; + svn_client_create_context(&ctx, rContext.getAprPool()); + if (!initAuthProviders(rContext, ctx, rError)) + return false; + + svn_error_t* pError = svn_client_add2(fullCanonPath, true, false, ctx, rContext.getAprPool()); + if (pError) + { + rError = formatSvnErrorMessage(pError); + return false; + } + + return true; +} + + +bool Svn::remove(SvnOperationContext& rContext, const QString& filePath, QString& rError) +{ + const char* svnPath = svn_path_internal_style(filePath.toAscii(), rContext.getAprPool()); + const char* fullCanonPath = svn_path_canonicalize(svnPath, rContext.getAprPool()); + + svn_client_ctx_t* ctx; + svn_client_create_context(&ctx, rContext.getAprPool()); + + apr_array_header_t *array = aprArrayFromQStringList(QStringList() << fullCanonPath, rContext.getAprPool()); + svn_client_commit_info_t* pResultingInfo = NULL; + svn_error_t* pError = svn_client_delete(&pResultingInfo, array, false, ctx, rContext.getAprPool()); + if (pError) + { + rError = formatSvnErrorMessage(pError); + return false; + } + + return true; +} + +bool Svn::commit(SvnOperationContext& rContext, QString commitMessage, const QStringList& filePaths, QString& rError) +{ + Committer comitter; + return comitter.commit(rContext, commitMessage, filePaths, rError); +} + +bool Svn::revert(SvnOperationContext& rContext, const QString& filePath, QString& rError) +{ + const char* fullCanonPath = svn_path_canonicalize(filePath.toAscii(), rContext.getAprPool()); + + svn_client_ctx_t* ctx; + svn_client_create_context(&ctx, rContext.getAprPool()); + if (!initAuthProviders(rContext, ctx, rError)) + return false; + + apr_array_header_t *array = aprArrayFromQStringList(QStringList() << fullCanonPath, rContext.getAprPool()); + svn_error_t* pError = svn_client_revert(array, true, ctx, rContext.getAprPool()); + if (pError) + { + rError = formatSvnErrorMessage(pError); + return false; + } + + return true; +} + +svn_error_t* simpleAuthPrompt(svn_auth_cred_simple_t **cred, void *baton, const char * /*realm*/, const char *username, svn_boolean_t /*_may_save*/, apr_pool_t *pool) +{ + QString promptUsername = username; + QString promptPassword; + SvnAuthentication* pAuth = ((SvnAuthentication*)baton); + if (!pAuth->getAuthentication(promptUsername)) + return svn_error_create(SVN_ERR_CANCELLED, NULL, ""); + + svn_auth_cred_simple_t* lcred = (svn_auth_cred_simple_t*)apr_palloc(pool, sizeof (svn_auth_cred_simple_t)); + lcred->username = pAuth->getUsername(); + lcred->password = pAuth->getPassword(); + + // tell svn if the credentials need to be saved + lcred->may_save = true; + *cred = lcred; + + return SVN_NO_ERROR; +} + +bool Svn::initAuthProviders(SvnOperationContext& rContext, svn_client_ctx_t* context, QString& /*rError*/) +{ + apr_array_header_t *providers = apr_array_make(rContext.getAprPool(), 7, sizeof(svn_auth_provider_object_t *)); + + svn_auth_provider_object_t *provider; + +#ifdef WIN32 + svn_client_get_windows_simple_provider(&provider, rContext.getAprPool()); + APR_ARRAY_PUSH(providers,svn_auth_provider_object_t*) = provider; +#endif + // TODO: keychain provider? + svn_client_get_simple_provider(&provider, rContext.getAprPool()); + APR_ARRAY_PUSH(providers,svn_auth_provider_object_t*) = provider; + svn_client_get_username_provider(&provider, rContext.getAprPool()); + APR_ARRAY_PUSH(providers,svn_auth_provider_object_t*) = provider; + + // The server-cert, client-cert, and client-cert-password providers. + svn_client_get_ssl_server_trust_file_provider(&provider, rContext.getAprPool()); + APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; + svn_client_get_ssl_client_cert_file_provider(&provider, rContext.getAprPool()); + APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; + svn_client_get_ssl_client_cert_pw_file_provider(&provider, rContext.getAprPool()); + APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider; + + svn_client_get_simple_prompt_provider(&provider, simpleAuthPrompt, rContext.getAuthenticationCallback(), 100000000, rContext.getAprPool()); + APR_ARRAY_PUSH(providers,svn_auth_provider_object_t*) = provider; + + svn_auth_baton_t *authBaton; + svn_auth_open(&authBaton, providers, rContext.getAprPool()); + + context->auth_baton = authBaton; + return true; +} + +bool Svn::Updater::update(SvnOperationContext& rContext, const QString& filePath, const Revision& revision, QString& rError) +{ + rError = ""; + mpContext = &rContext; + + const char* fullCanonPath = svn_path_canonicalize(filePath.toAscii(), rContext.getAprPool()); + + svn_client_ctx_t* ctx; + svn_client_create_context(&ctx, rContext.getAprPool()); + if (!initAuthProviders(rContext, ctx, rError)) + return false; + + ctx->notify_func2 = updateNotifyCallback; + ctx->notify_baton2 = this; + + svn_opt_revision_t svnRev = revision.getSvnRevision(); + + apr_array_header_t *paths = aprArrayFromQStringList(QStringList() << fullCanonPath, rContext.getAprPool()); + svn_error_t* pError = svn_client_update2(NULL, paths, &svnRev, true, false, ctx, rContext.getAprPool()); + if (pError) + { + rError = formatSvnErrorMessage(pError); + return false; + } + + return true; +} + +void Svn::Updater::updateNotifyCallback(void *baton, const svn_wc_notify_t *notify, apr_pool_t * /*pool*/) +{ + Svn::Updater* pThis = (Svn::Updater*)baton; + pThis->mpContext->getStatus()->update(QObject::tr("Updating %1...").arg(notify->path)); +} + +bool Svn::update(SvnOperationContext& rContext, const QString& filePath, const Revision& revision, QString& rError) +{ + Svn::Updater updater; + return updater.update(rContext, filePath, revision, rError); +} + +bool Svn::Committer::commit(SvnOperationContext& rContext, QString commitMessage, const QStringList& filePaths, QString& rError) +{ + mLogMessage = commitMessage; + mpContext = &rContext; + + mpContext->getStatus()->update(QObject::tr("Connecting to server to commit changes...")); + + svn_client_ctx_t* ctx = NULL; + svn_client_create_context(&ctx, rContext.getAprPool()); + if (!Svn::initAuthProviders(rContext, ctx, rError)) + return false; + + ctx->log_msg_func2 = getLogMessage; + ctx->log_msg_baton2 = this; + ctx->notify_func2 = updateNotifyCallback; + ctx->notify_baton2 = this; + + apr_array_header_t *filesArray = aprArrayFromQStringList(filePaths, rContext.getAprPool()); + + svn_commit_info_t* pResultingInfo = NULL; + svn_error_t* pError = svn_client_commit3(&pResultingInfo, filesArray, true, true, ctx, rContext.getAprPool()); + if (pError) + { + rError = formatSvnErrorMessage(pError); + return false; + } + + return true; +} Modified: trunk/tests/svn_test.cpp =================================================================== --- trunk/tests/svn_test.cpp 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/tests/svn_test.cpp 2007-01-13 17:49:02 UTC (rev 150) @@ -20,13 +20,11 @@ #include "svn_test.h" -#include "svn/add.h" -#include "svn/svn_commit.h" #include "svn/commit_summary.h" #include "svn/file_access.h" #include "svn/helpers.h" #include "svn/modification.h" -#include "svn/operation.h" +#include "svn/wc_operations.h" #include <svn_client.h> #include <svn_repos.h> @@ -68,7 +66,7 @@ svn_client_create_context(&mpCtx, mpContext->getAprPool()); QString rIgnoredError; - Q_ASSERT(Operation::initAuthProviders(*mpContext, mpCtx, rIgnoredError)); + Q_ASSERT(Svn::initAuthProviders(*mpContext, mpCtx, rIgnoredError)); } SvnTester::~SvnTester() Modified: trunk/ui/mainwindow.ui =================================================================== --- trunk/ui/mainwindow.ui 2007-01-13 04:40:39 UTC (rev 149) +++ trunk/ui/mainwindow.ui 2007-01-13 17:49:02 UTC (rev 150) @@ -242,7 +242,7 @@ <item> <widget class="QPushButton" name="deleteButton" > <property name="text" > - <string>Delete...</string> + <string>D&elete...</string> </property> </widget> </item> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |