diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp index 2e15c6a8cd5dbd5f2aac0771eee440b0db1ca8a3..205cf76021d75a249b018178a53643b6442e1772 100644 --- a/src/plugins/mercurial/mercurialclient.cpp +++ b/src/plugins/mercurial/mercurialclient.cpp @@ -515,12 +515,19 @@ void MercurialClient::update(const QString &repositoryRoot, const QString &revis } void MercurialClient::commit(const QString &repositoryRoot, const QStringList &files, - const QString &committerInfo, const QString &commitMessageFile) + const QString &committerInfo, const QString &commitMessageFile, + bool autoAddRemove) { + // refuse to do "autoadd" on a commit with working directory only, as this will + // add all the untracked stuff. + QTC_ASSERT(!(autoAddRemove && files.isEmpty()), return) QStringList args(QLatin1String("commit")); if (!committerInfo.isEmpty()) args << QLatin1String("-u") << committerInfo; - args << QLatin1String("-l") << commitMessageFile << files; + args << QLatin1String("-l") << commitMessageFile; + if (autoAddRemove) + args << QLatin1String("-A"); + args << files; QSharedPointer<HgTask> job(new HgTask(repositoryRoot, args, false)); enqueueJob(job); } diff --git a/src/plugins/mercurial/mercurialclient.h b/src/plugins/mercurial/mercurialclient.h index 53fc0e58d0c135f10567746d4ceb99c451a510dc..8dbfb073c9c67d2aa972344e3b782a8bcf1ccca0 100644 --- a/src/plugins/mercurial/mercurialclient.h +++ b/src/plugins/mercurial/mercurialclient.h @@ -89,8 +89,11 @@ public: void revertFile(const QString &workingDir, const QString &file, const QString &revision = QString()); void revertRepository(const QString &workingDir, const QString &revision = QString()); void update(const QString &repositoryRoot, const QString &revision = QString()); - void commit(const QString &repositoryRoot, const QStringList &files, - const QString &commiterInfo, const QString &commitMessageFile); + void commit(const QString &repositoryRoot, + const QStringList &files, + const QString &commiterInfo, + const QString &commitMessageFile, + bool autoAddRemove = false); static QString findTopLevelForFile(const QFileInfo &file); diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp index 009d44375c69300a3d268e113567b3bcb1e3e830..6da681bc283f5a5b756659590cacf4815411dd61 100644 --- a/src/plugins/mercurial/mercurialplugin.cpp +++ b/src/plugins/mercurial/mercurialplugin.cpp @@ -634,7 +634,7 @@ bool MercurialPlugin::submitEditorAboutToClose(VCSBase::VCSBaseSubmitEditor *sub core->fileManager()->unblockFileChange(editorFile); m_client->commit(commitEditor->repoRoot(), files, commitEditor->committerInfo(), - editorFile->fileName()); + editorFile->fileName(), true); } return true; }