diff options
author | Friedemann Kleint <[email protected]> | 2010-02-02 12:27:05 +0100 |
---|---|---|
committer | Friedemann Kleint <[email protected]> | 2010-02-02 12:27:05 +0100 |
commit | 9b76c068f97b200b814157f2aca2d880f7ad86f3 (patch) | |
tree | ac50ef9456bcc0c0dc5664013c6acfc23f8eaebb /src/plugins/git/gitversioncontrol.cpp | |
parent | 3d8b6845a39ab5ceb709c9e98241362c78a6ac3e (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.cpp | 28 |
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) |