aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/git/gitclient.cpp
diff options
context:
space:
mode:
authorTuomas Puranen <[email protected]>2010-09-29 12:16:35 +0200
committerTobias Hunger <[email protected]>2010-09-29 12:29:12 +0200
commit65e95c3aba69123bf3286ea0c8ff60da0eece479 (patch)
treea64e9a63df0a076c8697b9411bffc14e0018f1bc /src/plugins/git/gitclient.cpp
parent32fff3f6cd41a67703a6e3525d82a852a3393be4 (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.cpp56
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;