From c0c5773345480df8cec8d6959f89ae255eeb7d8a Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sat, 13 Jun 2020 23:15:29 +0300 Subject: Git: Add new files with --intent-to-add MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sometimes the file is modified after adding it, either by Qt Creator itself or by the user. Running Diff on such a file may look strange. Instead of showing the entire file, it shows the diff since it was added with its initial content. Fixes: QTCREATORBUG-23441 Change-Id: I712cc574053f39753250685aec148d2b6d7db192 Reviewed-by: André Hartmann --- src/plugins/git/gitclient.cpp | 11 +++++++---- src/plugins/git/gitclient.h | 3 ++- src/plugins/git/gitplugin.cpp | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) (limited to 'src/plugins/git') diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 70f34604ae3..79b0ea657b0 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -1438,10 +1438,13 @@ bool GitClient::synchronousLog(const QString &workingDirectory, const QStringLis } } -bool GitClient::synchronousAdd(const QString &workingDirectory, const QStringList &files) +bool GitClient::synchronousAdd(const QString &workingDirectory, + const QStringList &files, + const QStringList &extraOptions) { - return vcsFullySynchronousExec(workingDirectory, QStringList({"add"}) + files).result - == SynchronousProcessResponse::Finished; + QStringList args{"add"}; + args += extraOptions + files; + return vcsFullySynchronousExec(workingDirectory, args).result == SynchronousProcessResponse::Finished; } bool GitClient::synchronousDelete(const QString &workingDirectory, @@ -2890,7 +2893,7 @@ bool GitClient::addAndCommit(const QString &repositoryDirectory, filesToReset.removeAll(file); filesToAdd.append(file); } else if (state == AddedFile && checked) { - QTC_ASSERT(false, continue); // these should be untracked! + filesToAdd.append(file); } else if (state == DeletedFile && checked) { filesToReset.removeAll(file); filesToRemove.append(file); diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 925e7dc56c4..9588bec3663 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -185,7 +185,8 @@ public: bool synchronousLog(const QString &workingDirectory, const QStringList &arguments, QString *output, QString *errorMessage = nullptr, unsigned flags = 0); - bool synchronousAdd(const QString &workingDirectory, const QStringList &files); + bool synchronousAdd(const QString &workingDirectory, const QStringList &files, + const QStringList &extraOptions = {}); bool synchronousDelete(const QString &workingDirectory, bool force, const QStringList &files); diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index aa1d36d13b9..bb7de098187 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -1859,7 +1859,7 @@ bool GitPluginPrivate::vcsOpen(const QString & /*fileName*/) bool GitPluginPrivate::vcsAdd(const QString & fileName) { const QFileInfo fi(fileName); - return m_gitClient.synchronousAdd(fi.absolutePath(), {fi.fileName()}); + return m_gitClient.synchronousAdd(fi.absolutePath(), {fi.fileName()}, {"--intent-to-add"}); } bool GitPluginPrivate::vcsDelete(const QString & fileName) -- cgit v1.2.3