Git: Initialize GitClient on first access

This does not change the current timing of construction a lot as
the GerritPlugin may need it immediately in some cases, in any
case the gitGrep instance will need it.

There's nothing big going on at destruction time, so the prolonged
lifetime until really close to the end does not hurt.

The reason here is that this way we will avoid cases like in change
5e5b90a9a1.

Change-Id: I326d83c1a3d21114322ac6cce8d9e9b782faacdc
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
hjk
2023-07-25 16:09:50 +02:00
parent 8d5897b8eb
commit 778a1d75ba
24 changed files with 255 additions and 280 deletions

View File

@@ -224,7 +224,7 @@ void GitEditorWidget::applyDiffChunk(const DiffChunk& chunk, PatchAction patchAc
if (patchAction == PatchAction::Revert)
args << "--reverse";
QString errorMessage;
if (GitClient::instance()->synchronousApplyPatch(baseDir, patchFile.fileName(), &errorMessage, args)) {
if (gitClient().synchronousApplyPatch(baseDir, patchFile.fileName(), &errorMessage, args)) {
if (errorMessage.isEmpty())
VcsOutputWindow::append(Tr::tr("Chunk successfully staged"));
else
@@ -244,7 +244,7 @@ void GitEditorWidget::init()
const bool isRebaseEditor = editorId == Git::Constants::GIT_REBASE_EDITOR_ID;
if (!isCommitEditor && !isRebaseEditor)
return;
const QChar commentChar = GitClient::instance()->commentChar(source());
const QChar commentChar = gitClient().commentChar(source());
if (isCommitEditor)
textDocument()->setSyntaxHighlighter(new GitSubmitHighlighter(commentChar));
else if (isRebaseEditor)
@@ -274,14 +274,14 @@ void GitEditorWidget::aboutToOpen(const FilePath &filePath, const FilePath &real
|| editorId == Git::Constants::GIT_REBASE_EDITOR_ID) {
const FilePath gitPath = filePath.absolutePath();
setSource(gitPath);
textDocument()->setCodec(GitClient::instance()->encoding(GitClient::EncodingCommit, gitPath));
textDocument()->setCodec(gitClient().encoding(GitClient::EncodingCommit, gitPath));
}
}
QString GitEditorWidget::decorateVersion(const QString &revision) const
{
// Format verbose, SHA1 being first token
return GitClient::instance()->synchronousShortDescription(sourceWorkingDirectory(), revision);
return gitClient().synchronousShortDescription(sourceWorkingDirectory(), revision);
}
QStringList GitEditorWidget::annotationPreviousVersions(const QString &revision) const
@@ -289,7 +289,7 @@ QStringList GitEditorWidget::annotationPreviousVersions(const QString &revision)
QStringList revisions;
QString errorMessage;
// Get the SHA1's of the file.
if (!GitClient::instance()->synchronousParentRevisions(
if (!gitClient().synchronousParentRevisions(
sourceWorkingDirectory(), revision, &revisions, &errorMessage)) {
VcsOutputWindow::appendSilently(errorMessage);
return QStringList();
@@ -299,7 +299,7 @@ QStringList GitEditorWidget::annotationPreviousVersions(const QString &revision)
bool GitEditorWidget::isValidRevision(const QString &revision) const
{
return GitClient::instance()->isValidRevision(revision);
return gitClient().isValidRevision(revision);
}
void GitEditorWidget::addChangeActions(QMenu *menu, const QString &change)