From 2f8ca8f81a23625313d665a1479354823a35e9c1 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 16 Mar 2014 22:22:32 +0200 Subject: [PATCH] VCS: Prevent checkout/clone over an existing non-empty directory Task-number: QTCREATORBUG-11701 Change-Id: Iee87deec59a8abed8930096c53e3c3514a208486 Reviewed-by: Tobias Hunger --- src/plugins/vcsbase/basecheckoutwizardpage.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/plugins/vcsbase/basecheckoutwizardpage.cpp b/src/plugins/vcsbase/basecheckoutwizardpage.cpp index 672f3deea91..a9ea539d1ed 100644 --- a/src/plugins/vcsbase/basecheckoutwizardpage.cpp +++ b/src/plugins/vcsbase/basecheckoutwizardpage.cpp @@ -30,6 +30,7 @@ #include "basecheckoutwizardpage.h" #include "ui_basecheckoutwizardpage.h" +#include #include /*! @@ -105,9 +106,14 @@ void BaseCheckoutWizardPage::addRepositoryControl(QWidget *w) bool BaseCheckoutWizardPage::checkIsValid() const { - return d->ui.pathChooser->isValid() - && !d->ui.checkoutDirectoryLineEdit->text().isEmpty() - && !d->ui.repositoryLineEdit->text().isEmpty(); + if (!d->ui.pathChooser->isValid() || d->ui.repositoryLineEdit->text().isEmpty()) + return false; + + const QString checkoutDirectory = d->ui.checkoutDirectoryLineEdit->text(); + if (checkoutDirectory.isEmpty()) + return false; + const QDir dir(d->ui.pathChooser->path() + QLatin1Char('/') + checkoutDirectory); + return !dir.exists() || (dir.count() <= 2); } void BaseCheckoutWizardPage::addRepositoryControl(QString &description, QWidget *w)