aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/git/gitclient.cpp
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2025-07-22 11:18:00 +0200
committerAndré Hartmann <aha_1980@gmx.de>2025-08-04 10:07:58 +0000
commitf8a0faca9220b4527be9cd776dd10b2f0fb6bd9c (patch)
tree72e4409492084ed2728b16464549df242ff71d93 /src/plugins/git/gitclient.cpp
parent546fb6e7590b7173e071e858bc949114c466c8ce (diff)
Git: SubmitEditor: Add actions for conflicted files
Change-Id: I2368eb97faf844cd010b005fc19691fec30242d7 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/git/gitclient.cpp')
-rw-r--r--src/plugins/git/gitclient.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index cdab58ba9e6..0cec33116bd 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -1032,6 +1032,27 @@ void GitClient::requestReload(const QString &documentId, const FilePath &source,
controller->requestReload();
}
+/**
+ * Returns \c true if \a filePath has all merge conflicts resolved.
+ *
+ * If the \a filePath still contains conflict markers, \c false is returned.
+ */
+bool GitClient::isConflictFree(const Utils::FilePath &workingDirectory,
+ const Utils::FilePath &filePath,
+ DiffMode diffMode) const
+{
+ QStringList args = {"-c", "core.whitespace=nowarn", "diff", "--check"};
+ if (diffMode == GitClient::Staged)
+ args.append("--cached");
+ args.append(filePath.path());
+
+ RunFlags flags = RunFlags::ShowStdOut;
+
+ const CommandResult result = vcsSynchronousExec(workingDirectory, args, flags, vcsTimeoutS(),
+ encoding(EncodingLogOutput, workingDirectory));
+ return result.result() == ProcessResult::FinishedWithSuccess;
+}
+
void GitClient::diffFiles(const FilePath &workingDirectory,
const QStringList &unstagedFileNames,
const QStringList &stagedFileNames) const