diff options
Diffstat (limited to 'src/plugins/git/gitplugin.cpp')
| -rw-r--r-- | src/plugins/git/gitplugin.cpp | 97 |
1 files changed, 48 insertions, 49 deletions
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index 46188534e0c..a9f6d312bbe 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -104,7 +104,7 @@ using namespace std::placeholders; namespace Git { namespace Internal { -using GitClientMemberFunc = void (GitClient::*)(const QString &) const; +using GitClientMemberFunc = void (GitClient::*)(const FilePath &) const; class GitTopicCache : public Core::IVersionControl::TopicCache { @@ -116,13 +116,13 @@ public: protected: FilePath trackFile(const FilePath &repository) override { - const QString gitDir = m_client->findGitDirForRepository(repository.toString()); + const QString gitDir = m_client->findGitDirForRepository(repository); return gitDir.isEmpty() ? FilePath() : FilePath::fromString(gitDir + "/HEAD"); } QString refreshTopic(const FilePath &repository) override { - return m_client->synchronousTopic(repository.toString()); + return m_client->synchronousTopic(repository); } private: @@ -244,13 +244,13 @@ public: bool isConfigured() const final; bool supportsOperation(Operation operation) const final; - bool vcsOpen(const FilePath &fileName) final; - bool vcsAdd(const FilePath &fileName) final; - bool vcsDelete(const FilePath &filename) final; + bool vcsOpen(const FilePath &filePath) final; + bool vcsAdd(const FilePath &filePath) final; + bool vcsDelete(const FilePath &filePath) final; bool vcsMove(const FilePath &from, const FilePath &to) final; bool vcsCreateRepository(const FilePath &directory) final; - void vcsAnnotate(const FilePath &file, int line) final; + void vcsAnnotate(const FilePath &filePath, int line) final; void vcsDescribe(const FilePath &source, const QString &id) final { m_gitClient.show(source.toString(), id); }; QString vcsTopic(const FilePath &directory) final; @@ -274,7 +274,7 @@ public: bool handleLink(const FilePath &workingDirectory, const QString &reference) final { if (reference.contains("..")) - GitClient::instance()->log(workingDirectory.toString(), {}, false, {reference}); + GitClient::instance()->log(workingDirectory, {}, false, {reference}); else GitClient::instance()->show(workingDirectory.toString(), reference); return true; @@ -286,12 +286,12 @@ public: bool isCommitEditorOpen() const; void startCommit(CommitType commitType = SimpleCommit); - void updateBranches(const QString &repository); + void updateBranches(const FilePath &repository); void updateCurrentBranch(); void manageRemotes(); void initRepository(); - void startRebaseFromCommit(const QString &workingDirectory, QString commit); + void startRebaseFromCommit(const FilePath &workingDirectory, QString commit); void updateActions(VcsBase::VcsBasePluginPrivate::ActionState) override; bool submitEditorAboutToClose() override; @@ -371,8 +371,8 @@ public: void updateRepositoryBrowserAction(); Core::IEditor *openSubmitEditor(const QString &fileName, const CommitData &cd); void cleanCommitMessageFile(); - void cleanRepository(const QString &directory); - void applyPatch(const QString &workingDirectory, QString file = QString()); + void cleanRepository(const FilePath &directory); + void applyPatch(const FilePath &workingDirectory, QString file = QString()); void updateVersionWarning(); @@ -406,7 +406,7 @@ public: QPointer<StashDialog> m_stashDialog; BranchViewFactory m_branchViewFactory; QPointer<RemoteDialog> m_remoteDialog; - QString m_submitRepository; + FilePath m_submitRepository; QString m_commitMessageFileName; bool m_submitActionTriggered = false; @@ -514,11 +514,11 @@ const VcsBasePluginState &GitPlugin::currentState() return dd->currentState(); } -QString GitPlugin::msgRepositoryLabel(const QString &repository) +QString GitPlugin::msgRepositoryLabel(const FilePath &repository) { return repository.isEmpty() ? tr("<No repository>") : - tr("Repository: %1").arg(QDir::toNativeSeparators(repository)); + tr("Repository: %1").arg(repository.toUserOutput()); } // Returns a regular expression pattern with characters not allowed @@ -1157,11 +1157,11 @@ void GitPluginPrivate::resetRepository() return; const VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasTopLevel(), return); - QString topLevel = state.topLevel(); + FilePath topLevel = state.topLevel(); LogChangeDialog dialog(true, ICore::dialogParent()); ResetItemDelegate delegate(dialog.widget()); - dialog.setWindowTitle(tr("Undo Changes to %1").arg(QDir::toNativeSeparators(topLevel))); + dialog.setWindowTitle(tr("Undo Changes to %1").arg(topLevel.toUserOutput())); if (dialog.runDialog(topLevel, QString(), LogChangeWidget::IncludeRemotes)) m_gitClient.reset(topLevel, dialog.resetFlag(), dialog.commit()); } @@ -1179,12 +1179,12 @@ void GitPluginPrivate::startRebase() { const VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasTopLevel(), return); - const QString topLevel = state.topLevel(); + const FilePath topLevel = state.topLevel(); startRebaseFromCommit(topLevel, QString()); } -void GitPluginPrivate::startRebaseFromCommit(const QString &workingDirectory, QString commit) +void GitPluginPrivate::startRebaseFromCommit(const FilePath &workingDirectory, QString commit) { if (!DocumentManager::saveAllModifiedDocuments()) return; @@ -1208,7 +1208,8 @@ void GitPluginPrivate::startChangeRelatedAction(const Id &id) { const VcsBasePluginState state = currentState(); - ChangeSelectionDialog dialog(state.hasTopLevel() ? state.topLevel() : PathChooser::homePath(), + ChangeSelectionDialog dialog(state.hasTopLevel() + ? state.topLevel() : FilePath::fromString(PathChooser::homePath()), id, ICore::dialogParent()); int result = dialog.exec(); @@ -1216,7 +1217,7 @@ void GitPluginPrivate::startChangeRelatedAction(const Id &id) if (result == QDialog::Rejected) return; - const QString workingDirectory = dialog.workingDirectory(); + const FilePath workingDirectory = dialog.workingDirectory(); const QString change = dialog.change(); if (workingDirectory.isEmpty() || change.isEmpty()) @@ -1225,10 +1226,10 @@ void GitPluginPrivate::startChangeRelatedAction(const Id &id) if (dialog.command() == Show) { const int colon = change.indexOf(':'); if (colon > 0) { - const QString path = QDir(workingDirectory).absoluteFilePath(change.mid(colon + 1)); + const QString path = QDir(workingDirectory.toString()).absoluteFilePath(change.mid(colon + 1)); m_gitClient.openShowEditor(workingDirectory, change.left(colon), path); } else { - m_gitClient.show(workingDirectory, change); + m_gitClient.show(workingDirectory.toString(), change); } return; } @@ -1296,14 +1297,14 @@ void GitPluginPrivate::gitkForCurrentFolder() * one line command mentioned above. * */ - QDir dir(state.currentFileDirectory()); + QDir dir(state.currentFileDirectory().toString()); if (QFileInfo(dir,".git").exists() || dir.cd(".git")) { m_gitClient.launchGitK(state.currentFileDirectory()); } else { QString folderName = dir.absolutePath(); dir.cdUp(); folderName = folderName.remove(0, dir.absolutePath().length() + 1); - m_gitClient.launchGitK(dir.absolutePath(), folderName); + m_gitClient.launchGitK(FilePath::fromString(dir.absolutePath()), folderName); } } @@ -1399,7 +1400,7 @@ IEditor *GitPluginPrivate::openSubmitEditor(const QString &fileName, const Commi } IDocument *document = submitEditor->document(); document->setPreferredDisplayName(title); - VcsBase::setSource(document, m_submitRepository); + VcsBase::setSource(document, m_submitRepository.toString()); return editor; } @@ -1488,7 +1489,7 @@ void GitPluginPrivate::pull() return; const VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasTopLevel(), return); - QString topLevel = state.topLevel(); + FilePath topLevel = state.topLevel(); bool rebase = m_settings.pullRebase.value(); if (!rebase) { @@ -1561,7 +1562,7 @@ void GitPluginPrivate::cleanRepository() cleanRepository(state.topLevel()); } -void GitPluginPrivate::cleanRepository(const QString &directory) +void GitPluginPrivate::cleanRepository(const FilePath &directory) { // Find files to be deleted QString errorMessage; @@ -1583,7 +1584,7 @@ void GitPluginPrivate::cleanRepository(const QString &directory) // Show in dialog CleanDialog dialog(ICore::dialogParent()); - dialog.setFileList(directory, files, ignoredFiles); + dialog.setFileList(directory.toString(), files, ignoredFiles); dialog.exec(); } @@ -1618,7 +1619,7 @@ void GitPluginPrivate::promptApplyPatch() applyPatch(state.topLevel(), QString()); } -void GitPluginPrivate::applyPatch(const QString &workingDirectory, QString file) +void GitPluginPrivate::applyPatch(const FilePath &workingDirectory, QString file) { // Ensure user has been notified about pending changes if (!m_gitClient.beginStashScope(workingDirectory, "Apply-Patch", AllowUnstashed)) @@ -1636,7 +1637,8 @@ void GitPluginPrivate::applyPatch(const QString &workingDirectory, QString file) QString errorMessage; if (m_gitClient.synchronousApplyPatch(workingDirectory, file, &errorMessage)) { if (errorMessage.isEmpty()) - VcsOutputWindow::appendMessage(tr("Patch %1 successfully applied to %2").arg(file, workingDirectory)); + VcsOutputWindow::appendMessage(tr("Patch %1 successfully applied to %2") + .arg(file, workingDirectory.toUserOutput())); else VcsOutputWindow::appendError(errorMessage); } else { @@ -1653,7 +1655,7 @@ void GitPluginPrivate::stash(bool unstagedOnly) const VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasTopLevel(), return); - const QString topLevel = state.topLevel(); + const FilePath topLevel = state.topLevel(); m_gitClient.executeSynchronousStash(topLevel, QString(), unstagedOnly); if (m_stashDialog) m_stashDialog->refresh(topLevel, true); @@ -1679,7 +1681,7 @@ void GitPluginPrivate::stashPop() { if (!DocumentManager::saveAllModifiedDocuments()) return; - const QString repository = currentState().topLevel(); + const FilePath repository = currentState().topLevel(); m_gitClient.stashPop(repository); if (m_stashDialog) m_stashDialog->refresh(repository, true); @@ -1687,7 +1689,7 @@ void GitPluginPrivate::stashPop() // Create a non-modal dialog with refresh function or raise if it exists template <class NonModalDialog> - inline void showNonModalDialog(const QString &topLevel, + inline void showNonModalDialog(const FilePath &topLevel, QPointer<NonModalDialog> &dialog) { if (dialog) { @@ -1798,7 +1800,7 @@ void GitPluginPrivate::delayedPushToGerrit() m_gerritPlugin->push(m_submitRepository); } -void GitPluginPrivate::updateBranches(const QString &repository) +void GitPluginPrivate::updateBranches(const FilePath &repository) { if (m_branchViewFactory.view()) m_branchViewFactory.view()->refreshIfSame(repository); @@ -1880,21 +1882,19 @@ bool GitPluginPrivate::vcsOpen(const FilePath & /*filePath*/) bool GitPluginPrivate::vcsAdd(const FilePath &filePath) { - const QFileInfo fi = filePath.toFileInfo(); - return m_gitClient.synchronousAdd(fi.absolutePath(), {fi.fileName()}, {"--intent-to-add"}); + return m_gitClient.synchronousAdd(filePath.parentDir(), {filePath.fileName()}, {"--intent-to-add"}); } bool GitPluginPrivate::vcsDelete(const FilePath &filePath) { - const QFileInfo fi = filePath.toFileInfo(); - return m_gitClient.synchronousDelete(fi.absolutePath(), true, {fi.fileName()}); + return m_gitClient.synchronousDelete(filePath.parentDir().absolutePath(), true, {filePath.fileName()}); } bool GitPluginPrivate::vcsMove(const FilePath &from, const FilePath &to) { const QFileInfo fromInfo = from.toFileInfo(); const QFileInfo toInfo = to.toFileInfo(); - return m_gitClient.synchronousMove(fromInfo.absolutePath(), fromInfo.absoluteFilePath(), toInfo.absoluteFilePath()); + return m_gitClient.synchronousMove(from.parentDir().absolutePath(), fromInfo.absoluteFilePath(), toInfo.absoluteFilePath()); } bool GitPluginPrivate::vcsCreateRepository(const FilePath &directory) @@ -1905,7 +1905,7 @@ bool GitPluginPrivate::vcsCreateRepository(const FilePath &directory) QString GitPluginPrivate::vcsTopic(const FilePath &directory) { QString topic = Core::IVersionControl::vcsTopic(directory); - const QString commandInProgress = m_gitClient.commandInProgressDescription(directory.toString()); + const QString commandInProgress = m_gitClient.commandInProgressDescription(directory); if (!commandInProgress.isEmpty()) topic += " (" + commandInProgress + ')'; return topic; @@ -1919,7 +1919,7 @@ Core::ShellCommand *GitPluginPrivate::createInitialCheckoutCommand(const QString QStringList args = {"clone", "--progress"}; args << extraArgs << url << localName; - auto command = new VcsBase::VcsCommand(baseDirectory.toString(), m_gitClient.processEnvironment()); + auto command = new VcsBase::VcsCommand(baseDirectory, m_gitClient.processEnvironment()); command->addFlags(VcsBase::VcsCommand::SuppressStdErr); command->addJob({m_gitClient.vcsBinary(), args}, -1); return command; @@ -1949,7 +1949,7 @@ bool GitPluginPrivate::managesDirectory(const FilePath &directory, FilePath *top bool GitPluginPrivate::managesFile(const FilePath &workingDirectory, const QString &fileName) const { - return m_gitClient.managesFile(workingDirectory.toString(), fileName); + return m_gitClient.managesFile(workingDirectory, fileName); } FilePaths GitPluginPrivate::unmanagedFiles(const FilePaths &filePaths) const @@ -1959,8 +1959,7 @@ FilePaths GitPluginPrivate::unmanagedFiles(const FilePaths &filePaths) const void GitPluginPrivate::vcsAnnotate(const FilePath &filePath, int line) { - const QFileInfo fi = filePath.toFileInfo(); - m_gitClient.annotate(fi.absolutePath(), fi.fileName(), QString(), line); + m_gitClient.annotate(filePath.absolutePath(), filePath.fileName(), QString(), line); } void GitPlugin::emitFilesChanged(const QStringList &l) @@ -1970,10 +1969,10 @@ void GitPlugin::emitFilesChanged(const QStringList &l) void GitPlugin::emitRepositoryChanged(const QString &r) { - emit dd->repositoryChanged(r); + emit dd->repositoryChanged(FilePath::fromString(r)); } -void GitPlugin::startRebaseFromCommit(const QString &workingDirectory, const QString &commit) +void GitPlugin::startRebaseFromCommit(const FilePath &workingDirectory, const QString &commit) { dd->startRebaseFromCommit(workingDirectory, commit); } @@ -1998,12 +1997,12 @@ void GitPlugin::updateCurrentBranch() dd->updateCurrentBranch(); } -void GitPlugin::updateBranches(const QString &repository) +void GitPlugin::updateBranches(const FilePath &repository) { dd->updateBranches(repository); } -void GitPlugin::gerritPush(const QString &topLevel) +void GitPlugin::gerritPush(const FilePath &topLevel) { dd->m_gerritPlugin->push(topLevel); } |
