diff options
author | Tuomas Puranen <[email protected]> | 2010-09-29 12:16:35 +0200 |
---|---|---|
committer | Tobias Hunger <[email protected]> | 2010-09-29 12:29:12 +0200 |
commit | 65e95c3aba69123bf3286ea0c8ff60da0eece479 (patch) | |
tree | a64e9a63df0a076c8697b9411bffc14e0018f1bc /src/plugins/git/gitclient.cpp | |
parent | 32fff3f6cd41a67703a6e3525d82a852a3393be4 (diff) |
Added few new functions to IVersionControl, VCSManager and GeneratedFile to support the funcationality needed by the trac plugin.
All the version control plugins updated to have implementations according to the interface changes.
Merge-request: 2178
Reviewed-by: Tobias Hunger <[email protected]>
Merge-request: 2178
Reviewed-by: Tobias Hunger <[email protected]>
Diffstat (limited to 'src/plugins/git/gitclient.cpp')
-rw-r--r-- | src/plugins/git/gitclient.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 48f5c5a893d..47b74c8e4a3 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -50,6 +50,7 @@ #include <texteditor/itexteditor.h> #include <utils/qtcassert.h> #include <utils/synchronousprocess.h> +#include <utils/environment.h> #include <vcsbase/vcsbaseeditor.h> #include <vcsbase/vcsbaseoutputwindow.h> #include <vcsbase/vcsbaseplugin.h> @@ -1922,6 +1923,61 @@ QString GitClient::readConfigValue(const QString &workingDirectory, const QStrin return readConfig(workingDirectory, QStringList(configVar)).remove(QLatin1Char('\n')); } +bool GitClient::cloneRepository(const QString &directory,const QByteArray &url) +{ + QDir workingDirectory(directory); + const unsigned flags = VCSBase::VCSBasePlugin::SshPasswordPrompt + |VCSBase::VCSBasePlugin::ShowStdOutInLogWindow + |VCSBase::VCSBasePlugin::ShowSuccessMessage; + + if (workingDirectory.exists()) { + if (!synchronousInit(workingDirectory.path())) + return false; + + QStringList arguments(QLatin1String("remote")); + arguments << QLatin1String("add") << QLatin1String("origin") << url; + if (!fullySynchronousGit(workingDirectory.path(),arguments,0,0,true)) + return false; + + arguments.clear(); + arguments << QLatin1String("fetch"); + const Utils::SynchronousProcessResponse resp = synchronousGit(workingDirectory.path(),arguments,flags); + if (resp.result != Utils::SynchronousProcessResponse::Finished) + return false; + + arguments.clear(); + arguments << QLatin1String("config") << QLatin1String("branch.master.remote") << QLatin1String("origin"); + if (!fullySynchronousGit(workingDirectory.path(),arguments,0,0,true)) + return false; + + arguments.clear(); + arguments << QLatin1String("config") << QLatin1String("branch.master.merge") << QLatin1String("refs/heads/master"); + if (!fullySynchronousGit(workingDirectory.path(),arguments,0,0,true)) + return false; + + return true; + } else { + QStringList arguments(QLatin1String("clone")); + arguments << url << workingDirectory.dirName(); + workingDirectory.cdUp(); + const Utils::SynchronousProcessResponse resp = synchronousGit(workingDirectory.path(),arguments,flags); + return resp.result == Utils::SynchronousProcessResponse::Finished; + } +} + +QString GitClient::vcsGetRepositoryURL(const QString &directory) +{ + QStringList arguments(QLatin1String("config")); + QByteArray outputText; + + arguments << QLatin1String("remote.origin.url"); + + if (fullySynchronousGit(directory,arguments,&outputText,0,false)) { + return commandOutputFromLocal8Bit(outputText); + } + return QString(); +} + GitSettings GitClient::settings() const { return m_settings; |