From 8f374f891b411e62e34677488c74edd05fa89792 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 24 Apr 2025 13:12:34 +0200 Subject: [PATCH] Git: Return Result from readDataFromCommit ... and rename it to 'enrichCommitData', which is I think since it already takes a partially CommitData struct as input (previously via non-const ref) Change-Id: I53a3a224f27d6fc934a9469c3dc44d86c24f4351 Reviewed-by: David Schulz --- src/plugins/git/gitclient.cpp | 31 ++++++++++++++++--------------- src/plugins/git/gitclient.h | 6 +++--- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 4b647d5cc8e..1da91ff83d7 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -2688,22 +2688,20 @@ static QByteArray shiftLogLine(QByteArray &logText) return res; } -bool GitClient::readDataFromCommit(const FilePath &repoDirectory, const QString &commit, - CommitData &commitData, QString *errorMessage, - QString *commitTemplate) +Result GitClient::enrichCommitData(const FilePath &repoDirectory, + const QString &commit, + const CommitData &commitDataIn) { // Get commit data as "hashauthoremailmessage". const QStringList arguments = {"log", "--max-count=1", "--pretty=format:%h\n%aN\n%aE\n%B", commit}; const CommandResult result = vcsSynchronousExec(repoDirectory, arguments, RunFlags::NoOutput); if (result.result() != ProcessResult::FinishedWithSuccess) { - if (errorMessage) { - *errorMessage = Tr::tr("Cannot retrieve last commit data of repository \"%1\".") - .arg(repoDirectory.toUserOutput()); - } - return false; + return ResultError(Tr::tr("Cannot retrieve last commit data of repository \"%1\".") + .arg(repoDirectory.toUserOutput())); } + CommitData commitData = commitDataIn; QTextCodec *authorCodec = HostOsInfo::isWindowsHost() ? QTextCodec::codecForName("UTF-8") : commitData.commitEncoding; @@ -2711,9 +2709,8 @@ bool GitClient::readDataFromCommit(const FilePath &repoDirectory, const QString commitData.amendHash = QLatin1String(shiftLogLine(stdOut)); commitData.panelData.author = authorCodec->toUnicode(shiftLogLine(stdOut)); commitData.panelData.email = authorCodec->toUnicode(shiftLogLine(stdOut)); - if (commitTemplate) - *commitTemplate = commitData.commitEncoding->toUnicode(stdOut); - return true; + commitData.commitTemplate = commitData.commitEncoding->toUnicode(stdOut); + return commitData; } Author GitClient::parseAuthor(const QString &authorInfo) @@ -2815,16 +2812,20 @@ Result GitClient::getCommitData(CommitType commitType, const FilePat // Get the commit template or the last commit message switch (commitData.commitType) { case AmendCommit: { - if (!readDataFromCommit(repoDirectory, HEAD, commitData, &errorMessage, - &commitData.commitTemplate)) - return ResultError(errorMessage); + if (const Result res = enrichCommitData(repoDirectory, HEAD, commitData)) + commitData = res.value(); + else + return ResultError(res.error()); break; } case SimpleCommit: { bool authorFromCherryPick = false; // For cherry-picked commit, read author data from the commit (but template from MERGE_MSG) if (gitDir.pathAppended(CHERRY_PICK_HEAD).exists()) { - authorFromCherryPick = readDataFromCommit(repoDirectory, CHERRY_PICK_HEAD, commitData); + if (const Result res = enrichCommitData(repoDirectory, CHERRY_PICK_HEAD, commitData)) { + authorFromCherryPick = true; + commitData = res.value(); + } commitData.amendHash.clear(); } if (!authorFromCherryPick) { diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 25cc25f01e8..356746a77dd 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -299,9 +299,9 @@ public: void setConfigValue(const Utils::FilePath &workingDirectory, const QString &configVar, const QString &value) const; - bool readDataFromCommit(const Utils::FilePath &repoDirectory, const QString &commit, - CommitData &commitData, QString *errorMessage = nullptr, - QString *commitTemplate = nullptr); + Utils::Result enrichCommitData(const Utils::FilePath &repoDirectory, + const QString &commit, + const CommitData &commitDataIn); Utils::Result getCommitData(CommitType commitType, const Utils::FilePath &workingDirectory);