diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2009-07-17 17:19:23 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2009-07-17 17:19:23 +0200 |
commit | 9f14b79cc609c878023b3d00bca0a6c8ce24283f (patch) | |
tree | 6fa61a382c0d13e00bf28002963057895f7eccbd /src/plugins/git/clonewizardpage.cpp | |
parent | b799f32b967b9cb5a91631736ef5f035308beaa8 (diff) | |
download | qt-creator-9f14b79cc609c878023b3d00bca0a6c8ce24283f.tar.gz |
Add a clone wizard for version control (base classes + git/svn).
Task-number: 244831
Diffstat (limited to 'src/plugins/git/clonewizardpage.cpp')
-rw-r--r-- | src/plugins/git/clonewizardpage.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/plugins/git/clonewizardpage.cpp b/src/plugins/git/clonewizardpage.cpp new file mode 100644 index 0000000000..6f78ab278f --- /dev/null +++ b/src/plugins/git/clonewizardpage.cpp @@ -0,0 +1,83 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://www.qtsoftware.com/contact. +** +**************************************************************************/ + +#include "clonewizardpage.h" + +namespace Git { +namespace Internal { + +CloneWizardPage::CloneWizardPage(QWidget *parent) : + VCSBase::BaseCheckoutWizardPage(parent), + m_mainLinePostfix(QLatin1String("/mainline.git")), + m_gitPostFix(QLatin1String(".git")), + m_protocolDelimiter(QLatin1String("://")) +{ + setSubTitle(tr("Specify repository URL, checkout directory and path.")); + setRepositoryLabel(tr("Clone URL:")); +} + +QString CloneWizardPage::directoryFromRepository(const QString &urlIn) const +{ + /* Try to figure out a good directory name from something like: + * 'user@host:qt/qt.git', 'http://host/qt/qt.git' 'local repo' + * ------> 'qt' . */ + + QString url = urlIn.trimmed(); + const QChar slash = QLatin1Char('/'); + // remove host + const int protocolDelimiterPos = url.indexOf(m_protocolDelimiter); // "://" + const int startRepoSearchPos = protocolDelimiterPos == -1 ? 0 : protocolDelimiterPos + m_protocolDelimiter.size(); + int repoPos = url.indexOf(QLatin1Char(':'), startRepoSearchPos); + if (repoPos == -1) + repoPos = url.indexOf(slash, startRepoSearchPos); + if (repoPos != -1) + url.remove(0, repoPos + 1); + // Remove postfixes + if (url.endsWith(m_mainLinePostfix)) { + url.truncate(url.size() - m_mainLinePostfix.size()); + } else { + if (url.endsWith(m_gitPostFix)) { + url.truncate(url.size() - m_gitPostFix.size()); + } + } + // Check for equal parts, something like "qt/qt" -> "qt" + const int slashPos = url.indexOf(slash); + if (slashPos != -1 && slashPos == (url.size() - 1) / 2) { + if (url.leftRef(slashPos) == url.rightRef(slashPos)) + url.truncate(slashPos); + } + // fix invalid characters + const QChar dash = QLatin1Char('-'); + url.replace(slash, dash); + url.replace(QLatin1Char('.'), dash); + return url; +} + +} // namespace Internal +} // namespace Git |