aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/git/gitversioncontrol.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <[email protected]>2010-02-02 12:27:05 +0100
committerFriedemann Kleint <[email protected]>2010-02-02 12:27:05 +0100
commit9b76c068f97b200b814157f2aca2d880f7ad86f3 (patch)
treeac50ef9456bcc0c0dc5664013c6acfc23f8eaebb /src/plugins/git/gitversioncontrol.cpp
parent3d8b6845a39ab5ceb709c9e98241362c78a6ac3e (diff)
VCS[git]: Implement add using '--intent-to-add' depending on version.
Implement IVersionControl::vcsAdd() using --intent-to-add with a cached version check. On this occasion, implement vcsDelete() as well using 'git rm -f'.
Diffstat (limited to 'src/plugins/git/gitversioncontrol.cpp')
-rw-r--r--src/plugins/git/gitversioncontrol.cpp28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/plugins/git/gitversioncontrol.cpp b/src/plugins/git/gitversioncontrol.cpp
index c98f0688921..49955873ab3 100644
--- a/src/plugins/git/gitversioncontrol.cpp
+++ b/src/plugins/git/gitversioncontrol.cpp
@@ -32,6 +32,11 @@
#include "gitplugin.h"
#include "gitutils.h"
+#include <utils/qtcassert.h>
+
+#include <QtCore/QDebug>
+#include <QtCore/QFileInfo>
+
static const char stashMessageKeywordC[] = "IVersionControl@";
static const char stashRevisionIdC[] = "revision";
@@ -54,12 +59,22 @@ QString GitVersionControl::displayName() const
return QLatin1String("git");
}
+// Add: Implement using "git add --intent-to-add" starting from 1.6.1
+static inline bool addOperationSupported()
+{
+ return gitClient()->gitVersion() >= version(1, 6, 1);
+}
+
bool GitVersionControl::supportsOperation(Operation operation) const
{
bool rc = false;
switch (operation) {
case AddOperation:
+ rc = addOperationSupported();
+ break;
case DeleteOperation:
+ rc = true;
+ break;
case OpenOperation:
break;
case CreateRepositoryOperation:
@@ -75,15 +90,18 @@ bool GitVersionControl::vcsOpen(const QString & /*fileName*/)
return false;
}
-bool GitVersionControl::vcsAdd(const QString & /*fileName*/)
+bool GitVersionControl::vcsAdd(const QString & fileName)
{
- return false;
+ // Implement in terms of using "--intent-to-add"
+ QTC_ASSERT(addOperationSupported(), return false);
+ const QFileInfo fi(fileName);
+ return gitClient()->synchronousAdd(fi.absolutePath(), true, QStringList(fi.fileName()));
}
-bool GitVersionControl::vcsDelete(const QString & /*fileName*/)
+bool GitVersionControl::vcsDelete(const QString & fileName)
{
- // TODO: implement using 'git rm'.
- return false;
+ const QFileInfo fi(fileName);
+ return gitClient()->synchronousDelete(fi.absolutePath(), true, QStringList(fi.fileName()));
}
bool GitVersionControl::vcsCreateRepository(const QString &directory)