├── .browserslistrc
├── .devcontainer
└── devcontainer.json
├── .fantasticonrc.js
├── .git-blame-ignore-revs
├── .gitattributes
├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── bug_report.yml
│ ├── config.yml
│ └── feature_request.yml
├── PULL_REQUEST_TEMPLATE.md
└── workflows
│ ├── cd-pre.yml
│ ├── cd-stable.yml
│ ├── codeql.yml
│ ├── issues-completed.yml
│ ├── issues-lock.yml
│ ├── issues-stale.yml
│ └── unit-tests.yml
├── .gitignore
├── .mailmap
├── .prettierignore
├── .prettierrc
├── .vscode-test.mjs
├── .vscode
├── extensions.json
├── issues.github-issues
├── launch.json
├── queries.github-graphql-nb
├── settings.json
└── tasks.json
├── .vscodeignore
├── BACKERS.md
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── LICENSE.plus
├── README.md
├── README.pre.md
├── ThirdPartyNotices.txt
├── contributions.json
├── contributions.schema.json
├── docs
├── links.md
└── telemetry-events.md
├── eslint.config.mjs
├── images
├── dark
│ ├── icon-activity.svg
│ ├── icon-azdo.svg
│ ├── icon-bitbucket.svg
│ ├── icon-branch-ahead.svg
│ ├── icon-branch-behind.svg
│ ├── icon-branch-diverged.svg
│ ├── icon-branch-synced.svg
│ ├── icon-branch.svg
│ ├── icon-check.svg
│ ├── icon-checkout.svg
│ ├── icon-commit-horizontal.svg
│ ├── icon-compare-ref-working.svg
│ ├── icon-diff.svg
│ ├── icon-gerrit.svg
│ ├── icon-gitea.svg
│ ├── icon-github.svg
│ ├── icon-gitlab.svg
│ ├── icon-gitlens-filled-orange.svg
│ ├── icon-gitlens-filled-progress.svg
│ ├── icon-match-all-selected.svg
│ ├── icon-match-all.svg
│ ├── icon-match-case-selected.svg
│ ├── icon-match-case.svg
│ ├── icon-match-regex-selected.svg
│ ├── icon-match-regex.svg
│ ├── icon-next-commit.svg
│ ├── icon-no-check.svg
│ ├── icon-open-revision.svg
│ ├── icon-prev-commit-menu.svg
│ ├── icon-prev-commit.svg
│ ├── icon-push-force.svg
│ ├── icon-repo-ahead-cloud.svg
│ ├── icon-repo-ahead-solid.svg
│ ├── icon-repo-ahead.svg
│ ├── icon-repo-behind-cloud.svg
│ ├── icon-repo-behind-solid.svg
│ ├── icon-repo-behind.svg
│ ├── icon-repo-changes-cloud.svg
│ ├── icon-repo-changes-solid.svg
│ ├── icon-repo-changes.svg
│ ├── icon-repo-cloud.svg
│ ├── icon-repo-diverged-cloud.svg
│ ├── icon-repo-diverged-solid.svg
│ ├── icon-repo-diverged.svg
│ ├── icon-repo-solid.svg
│ ├── icon-repo-synced-cloud.svg
│ ├── icon-repo-synced-solid.svg
│ ├── icon-repo-synced.svg
│ ├── icon-repo.svg
│ ├── icon-stash-pop.svg
│ ├── icon-stash-save.svg
│ ├── icon-stash.svg
│ ├── icon-status-added.svg
│ ├── icon-status-conflict.svg
│ ├── icon-status-copied.svg
│ ├── icon-status-deleted.svg
│ ├── icon-status-ignored.svg
│ ├── icon-status-modified.svg
│ ├── icon-status-renamed.svg
│ ├── icon-status-unknown.svg
│ ├── icon-status-untracked.svg
│ ├── icon-tag-selected.svg
│ ├── icon-unfold.svg
│ ├── icon-unplug.svg
│ └── icon-view-auto.svg
├── docs
│ ├── branches-view.png
│ ├── code-suggest.png
│ ├── commit-graph-illustrated.png
│ ├── commit-graph.png
│ ├── commits-view-merge.png
│ ├── commits-view-rebase.png
│ ├── commits-view.png
│ ├── contributors-view.png
│ ├── current-line-blame.png
│ ├── file-history-view-merge-conflict.png
│ ├── file-history-view.png
│ ├── get-started-video.png
│ ├── git-command-palette.png
│ ├── gutter-blame.png
│ ├── gutter-changes.png
│ ├── gutter-heatmap.png
│ ├── hovers-current-line-details.png
│ ├── hovers-current-line.png
│ ├── launchpad.png
│ ├── rebase.gif
│ ├── remotes-view.png
│ ├── revision-navigation.gif
│ ├── search-and-compare-view.png
│ ├── side-bar-views.png
│ ├── sponsors
│ │ ├── cresus.png
│ │ ├── dendron.png
│ │ ├── embark-studios_dark.png
│ │ ├── embark-studios_light.png
│ │ ├── localize_dark.png
│ │ ├── localize_light.png
│ │ ├── stepsize.png
│ │ └── tabnine.png
│ ├── stashes-view.png
│ ├── status-bar.png
│ ├── tags-view.png
│ ├── terminal-links.gif
│ ├── visual-file-history-illustrated.png
│ ├── worktrees-illustrated.png
│ └── worktrees.png
├── gitlens-icon.png
├── icons
│ ├── branches-view-filled.svg
│ ├── branches-view.svg
│ ├── clock.svg
│ ├── cloud-patch-share.svg
│ ├── cloud-patch.svg
│ ├── code-suggestion.svg
│ ├── commit-horizontal.svg
│ ├── commit-view.svg
│ ├── commits-view-filled.svg
│ ├── commits-view.svg
│ ├── compare-ref-working.svg
│ ├── compare-view.svg
│ ├── confirm-checked.svg
│ ├── confirm-unchecked.svg
│ ├── contributors-view-filled.svg
│ ├── contributors-view.svg
│ ├── expand.svg
│ ├── gitlens-filled.svg
│ ├── gitlens-inspect.svg
│ ├── gitlens.svg
│ ├── graph.svg
│ ├── history-view-filled.svg
│ ├── history-view.svg
│ ├── inspect.svg
│ ├── launchpad-view-filled.svg
│ ├── launchpad-view.svg
│ ├── list-auto.svg
│ ├── merge-target.svg
│ ├── next-commit.svg
│ ├── open-revision.svg
│ ├── pinned-filled.svg
│ ├── play-button.svg
│ ├── prev-commit-menu.svg
│ ├── prev-commit.svg
│ ├── provider-azdo.svg
│ ├── provider-bitbucket.svg
│ ├── provider-gerrit.svg
│ ├── provider-gitea.svg
│ ├── provider-github.svg
│ ├── provider-gitlab.svg
│ ├── provider-jira.svg
│ ├── remotes-view-filled.svg
│ ├── remotes-view.svg
│ ├── repositories-view-filled.svg
│ ├── repositories-view.svg
│ ├── repository-filled.svg
│ ├── rocket-filled.svg
│ ├── search-view-filled.svg
│ ├── search-view.svg
│ ├── stash-pop.svg
│ ├── stash-save.svg
│ ├── stashes-view-filled.svg
│ ├── stashes-view.svg
│ ├── switch.svg
│ ├── tags-view-filled.svg
│ ├── tags-view.svg
│ ├── template
│ │ ├── component-map.hbs
│ │ ├── icons-contribution.hbs
│ │ ├── mapping.json
│ │ ├── sass-map.hbs
│ │ └── styles.hbs
│ ├── unplug.svg
│ ├── workspaces-view.svg
│ ├── worktrees-view-filled.svg
│ └── worktrees-view.svg
├── light
│ ├── icon-activity.svg
│ ├── icon-azdo.svg
│ ├── icon-bitbucket.svg
│ ├── icon-branch-ahead.svg
│ ├── icon-branch-behind.svg
│ ├── icon-branch-diverged.svg
│ ├── icon-branch-synced.svg
│ ├── icon-branch.svg
│ ├── icon-check.svg
│ ├── icon-checkout.svg
│ ├── icon-commit-horizontal.svg
│ ├── icon-compare-ref-working.svg
│ ├── icon-diff.svg
│ ├── icon-gerrit.svg
│ ├── icon-gitea.svg
│ ├── icon-github.svg
│ ├── icon-gitlab.svg
│ ├── icon-gitlens-filled-orange.svg
│ ├── icon-gitlens-filled-progress.svg
│ ├── icon-match-all-selected.svg
│ ├── icon-match-all.svg
│ ├── icon-match-case-selected.svg
│ ├── icon-match-case.svg
│ ├── icon-match-regex-selected.svg
│ ├── icon-match-regex.svg
│ ├── icon-next-commit.svg
│ ├── icon-no-check.svg
│ ├── icon-open-revision.svg
│ ├── icon-prev-commit-menu.svg
│ ├── icon-prev-commit.svg
│ ├── icon-push-force.svg
│ ├── icon-repo-ahead-cloud.svg
│ ├── icon-repo-ahead-solid.svg
│ ├── icon-repo-ahead.svg
│ ├── icon-repo-behind-cloud.svg
│ ├── icon-repo-behind-solid.svg
│ ├── icon-repo-behind.svg
│ ├── icon-repo-changes-cloud.svg
│ ├── icon-repo-changes-solid.svg
│ ├── icon-repo-changes.svg
│ ├── icon-repo-cloud.svg
│ ├── icon-repo-diverged-cloud.svg
│ ├── icon-repo-diverged-solid.svg
│ ├── icon-repo-diverged.svg
│ ├── icon-repo-solid.svg
│ ├── icon-repo-synced-cloud.svg
│ ├── icon-repo-synced-solid.svg
│ ├── icon-repo-synced.svg
│ ├── icon-repo.svg
│ ├── icon-stash-pop.svg
│ ├── icon-stash-save.svg
│ ├── icon-stash.svg
│ ├── icon-status-added.svg
│ ├── icon-status-conflict.svg
│ ├── icon-status-copied.svg
│ ├── icon-status-deleted.svg
│ ├── icon-status-ignored.svg
│ ├── icon-status-modified.svg
│ ├── icon-status-renamed.svg
│ ├── icon-status-unknown.svg
│ ├── icon-status-untracked.svg
│ ├── icon-tag-selected.svg
│ ├── icon-unfold.svg
│ ├── icon-unplug.svg
│ └── icon-view-auto.svg
└── originals
│ ├── blame.pdn
│ ├── branches-view.pdn
│ ├── changes.pdn
│ ├── code-lens.pdn
│ ├── commits-view.pdn
│ ├── contributors-view.pdn
│ ├── current-line-blame.pdn
│ ├── file-history-view.pdn
│ ├── gitlens-logo-1000.png
│ ├── gitlens-logo-2000.png
│ ├── gitlens-logo-256.png
│ ├── gitlens-logo-500.png
│ ├── gitlens-logo.ai
│ ├── gitlens-logo.pdn
│ ├── gitlens-mono-inverted.pdn
│ ├── gitlens-mono.pdn
│ ├── gitlens.pdn
│ ├── heatmap.pdn
│ ├── line-history-view.pdn
│ ├── remotes-view.pdn
│ ├── repositories-view.pdn
│ ├── search-and-compare-view.pdn
│ ├── stashes-view.pdn
│ ├── status-bar.pdn
│ ├── tags-view.pdn
│ └── worktrees-view.pdn
├── package.json
├── patches
├── debug.js
├── tr46.js
└── whatwg-url.js
├── pnpm-lock.yaml
├── resources
└── icons.fig
├── scripts
├── applyIconsContribution.mjs
├── applyPreReleasePatch.mjs
├── contributions
│ ├── contributionsBuilder.mts
│ ├── models.ts
│ └── whenParser.mts
├── esbuild.mjs
├── esbuild.tests.mjs
├── eslint-rules
│ └── no-src-imports.js
├── export-codicons.mjs
├── generateCommandTypes.mts
├── generateContributions.mts
├── generateEmojiShortcodeMap.mjs
├── generateLicenses.mjs
├── generateTelemetryDocs.mjs
└── prep-release.mjs
├── src
├── @types
│ ├── bb.d.ts
│ ├── global.d.ts
│ ├── node-fetch.d.ts
│ ├── vscode.git.d.ts
│ ├── vscode.git.enums.ts
│ ├── vscode.git.resources.d.ts
│ ├── vscode.git.resources.enums.ts
│ ├── vscode.git.timeline.d.ts
│ ├── vscode.git.uri.ts
│ ├── vscode.iconpath.d.ts
│ ├── vscode.proposed.timeline.d.ts
│ └── vsls.d.ts
├── annotations
│ ├── annotationProvider.ts
│ ├── annotations.ts
│ ├── blameAnnotationProvider.ts
│ ├── fileAnnotationController.ts
│ ├── gutterBlameAnnotationProvider.ts
│ ├── gutterChangesAnnotationProvider.ts
│ ├── gutterHeatmapBlameAnnotationProvider.ts
│ └── lineAnnotationController.ts
├── api
│ ├── actionRunners.ts
│ ├── api.ts
│ └── gitlens.d.ts
├── autolinks
│ ├── __tests__
│ │ └── autolinks.test.ts
│ ├── autolinksProvider.ts
│ ├── models
│ │ └── autolinks.ts
│ └── utils
│ │ └── -webview
│ │ └── autolinks.utils.ts
├── avatars.ts
├── cache.ts
├── codelens
│ ├── codeLensController.ts
│ └── codeLensProvider.ts
├── commands.ts
├── commands
│ ├── addAuthors.ts
│ ├── browseRepoAtRevision.ts
│ ├── changeBranchMergeTarget.ts
│ ├── closeUnchangedFiles.ts
│ ├── cloudIntegrations.ts
│ ├── commandBase.ts
│ ├── commandBase.utils.ts
│ ├── commandContext.ts
│ ├── commandContext.utils.ts
│ ├── compareWith.ts
│ ├── copyCurrentBranch.ts
│ ├── copyDeepLink.ts
│ ├── copyMessageToClipboard.ts
│ ├── copyRelativePathToClipboard.ts
│ ├── copyShaToClipboard.ts
│ ├── createPullRequestOnRemote.ts
│ ├── diffFolderWithRevision.ts
│ ├── diffFolderWithRevisionFrom.ts
│ ├── diffLineWithPrevious.ts
│ ├── diffLineWithWorking.ts
│ ├── diffWith.ts
│ ├── diffWithNext.ts
│ ├── diffWithPrevious.ts
│ ├── diffWithRevision.ts
│ ├── diffWithRevisionFrom.ts
│ ├── diffWithWorking.ts
│ ├── explainBase.ts
│ ├── explainBranch.ts
│ ├── explainCommit.ts
│ ├── explainStash.ts
│ ├── explainWip.ts
│ ├── externalDiff.ts
│ ├── generateChangelog.ts
│ ├── generateCommitMessage.ts
│ ├── generateRebase.ts
│ ├── ghpr
│ │ └── openOrCreateWorktree.ts
│ ├── git
│ │ ├── branch.ts
│ │ ├── cherry-pick.ts
│ │ ├── coauthors.ts
│ │ ├── fetch.ts
│ │ ├── log.ts
│ │ ├── merge.ts
│ │ ├── pull.ts
│ │ ├── push.ts
│ │ ├── rebase.ts
│ │ ├── remote.ts
│ │ ├── reset.ts
│ │ ├── revert.ts
│ │ ├── search.ts
│ │ ├── show.ts
│ │ ├── stash.ts
│ │ ├── status.ts
│ │ ├── switch.ts
│ │ ├── tag.ts
│ │ └── worktree.ts
│ ├── gitWizard.ts
│ ├── inspect.ts
│ ├── inviteToLiveShare.ts
│ ├── logging.ts
│ ├── openAssociatedPullRequestOnRemote.ts
│ ├── openBranchOnRemote.ts
│ ├── openBranchesOnRemote.ts
│ ├── openChangedFiles.ts
│ ├── openCommitOnRemote.ts
│ ├── openComparisonOnRemote.ts
│ ├── openCurrentBranchOnRemote.ts
│ ├── openDirectoryCompare.ts
│ ├── openFileAtRevision.ts
│ ├── openFileAtRevisionFrom.ts
│ ├── openFileFromRemote.ts
│ ├── openFileOnRemote.ts
│ ├── openOnRemote.ts
│ ├── openOnlyChangedFiles.ts
│ ├── openPullRequestOnRemote.ts
│ ├── openRepoOnRemote.ts
│ ├── openRevisionFile.ts
│ ├── openWorkingFile.ts
│ ├── patches.ts
│ ├── quickCommand.buttons.ts
│ ├── quickCommand.steps.ts
│ ├── quickCommand.ts
│ ├── quickWizard.base.ts
│ ├── quickWizard.ts
│ ├── quickWizard.utils.ts
│ ├── rebaseEditor.ts
│ ├── refreshHover.ts
│ ├── regenerateMarkdownDocument.ts
│ ├── remoteProviders.ts
│ ├── repositories.ts
│ ├── resetViewsLayout.ts
│ ├── resets.ts
│ ├── searchCommits.ts
│ ├── showCommitsInView.ts
│ ├── showLastQuickPick.ts
│ ├── showQuickBranchHistory.ts
│ ├── showQuickCommit.ts
│ ├── showQuickCommitFile.ts
│ ├── showQuickFileHistory.ts
│ ├── showQuickRepoStatus.ts
│ ├── showQuickStashList.ts
│ ├── showView.ts
│ ├── stashApply.ts
│ ├── stashSave.ts
│ ├── switchAIModel.ts
│ ├── switchMode.ts
│ ├── toggleCodeLens.ts
│ ├── toggleFileAnnotations.ts
│ ├── toggleLineBlame.ts
│ └── walkthroughs.ts
├── config.ts
├── constants.ai.ts
├── constants.colors.ts
├── constants.commands.generated.ts
├── constants.commands.ts
├── constants.context.ts
├── constants.integrations.ts
├── constants.search.ts
├── constants.storage.ts
├── constants.subscription.ts
├── constants.telemetry.ts
├── constants.ts
├── constants.views.ts
├── container.ts
├── documents
│ └── markdown.ts
├── emojis.generated.ts
├── emojis.ts
├── env
│ ├── browser
│ │ ├── base64.ts
│ │ ├── crypto.ts
│ │ ├── fetch.ts
│ │ ├── hex.ts
│ │ ├── hrtime.ts
│ │ ├── json.ts
│ │ ├── md5.ts
│ │ ├── platform.ts
│ │ └── providers.ts
│ └── node
│ │ ├── base64.ts
│ │ ├── crypto.ts
│ │ ├── fetch.ts
│ │ ├── git
│ │ ├── commitMessageProvider.ts
│ │ ├── git.ts
│ │ ├── localGitProvider.ts
│ │ ├── locator.ts
│ │ ├── shell.errors.ts
│ │ ├── shell.ts
│ │ ├── sub-providers
│ │ │ ├── branches.ts
│ │ │ ├── commits.ts
│ │ │ ├── config.ts
│ │ │ ├── contributors.ts
│ │ │ ├── diff.ts
│ │ │ ├── graph.ts
│ │ │ ├── patch.ts
│ │ │ ├── refs.ts
│ │ │ ├── remotes.ts
│ │ │ ├── revision.ts
│ │ │ ├── staging.ts
│ │ │ ├── stash.ts
│ │ │ ├── status.ts
│ │ │ ├── tags.ts
│ │ │ └── worktrees.ts
│ │ └── vslsGitProvider.ts
│ │ ├── gk
│ │ ├── cli
│ │ │ ├── commands.ts
│ │ │ ├── integration.ts
│ │ │ └── ipcServer.ts
│ │ ├── localRepositoryLocationProvider.ts
│ │ ├── localSharedGkStorageLocationProvider.ts
│ │ └── localWorkspacesSharedStorageProvider.ts
│ │ ├── hex.ts
│ │ ├── hrtime.ts
│ │ ├── json.ts
│ │ ├── platform.ts
│ │ └── providers.ts
├── errors.ts
├── eventBus.ts
├── extension.ts
├── features.ts
├── git
│ ├── actions.ts
│ ├── actions
│ │ ├── branch.ts
│ │ ├── commit.ts
│ │ ├── contributor.ts
│ │ ├── pausedOperation.ts
│ │ ├── remote.ts
│ │ ├── repository.ts
│ │ ├── stash.ts
│ │ ├── tag.ts
│ │ └── worktree.ts
│ ├── cache.ts
│ ├── commandOptions.ts
│ ├── errors.ts
│ ├── formatters
│ │ ├── commitFormatter.ts
│ │ ├── formatter.ts
│ │ └── statusFormatter.ts
│ ├── fsProvider.ts
│ ├── gitProvider.ts
│ ├── gitProviderService.ts
│ ├── gitRepositoryService.ts
│ ├── gitUri.authority.ts
│ ├── gitUri.ts
│ ├── gitUri.utils.ts
│ ├── location
│ │ └── repositorylocationProvider.ts
│ ├── models
│ │ ├── author.ts
│ │ ├── blame.ts
│ │ ├── branch.ts
│ │ ├── commit.ts
│ │ ├── contributor.ts
│ │ ├── defaultBranch.ts
│ │ ├── diff.ts
│ │ ├── file.ts
│ │ ├── fileChange.ts
│ │ ├── fileStatus.ts
│ │ ├── graph.ts
│ │ ├── issue.ts
│ │ ├── issueOrPullRequest.ts
│ │ ├── log.ts
│ │ ├── mergeConflict.ts
│ │ ├── patch.ts
│ │ ├── pathMapping.ts
│ │ ├── pausedOperationStatus.ts
│ │ ├── pullRequest.ts
│ │ ├── reference.ts
│ │ ├── reflog.ts
│ │ ├── remote.ts
│ │ ├── remoteProvider.ts
│ │ ├── remoteResource.ts
│ │ ├── repository.ts
│ │ ├── repositoryIdentities.ts
│ │ ├── repositoryMetadata.ts
│ │ ├── repositoryShape.ts
│ │ ├── resourceDescriptor.ts
│ │ ├── revision.ts
│ │ ├── shortlog.ts
│ │ ├── stash.ts
│ │ ├── status.ts
│ │ ├── statusFile.ts
│ │ ├── tag.ts
│ │ ├── tree.ts
│ │ ├── user.ts
│ │ └── worktree.ts
│ ├── parsers
│ │ ├── blameParser.ts
│ │ ├── diffParser.ts
│ │ ├── logParser.ts
│ │ ├── mergeTreeParser.ts
│ │ ├── refParser.ts
│ │ ├── reflogParser.ts
│ │ ├── remoteParser.ts
│ │ ├── shortlogParser.ts
│ │ ├── statusParser.ts
│ │ ├── treeParser.ts
│ │ └── worktreeParser.ts
│ ├── queryResults.ts
│ ├── remotes
│ │ ├── azure-devops.ts
│ │ ├── bitbucket-server.ts
│ │ ├── bitbucket.ts
│ │ ├── custom.ts
│ │ ├── gerrit.ts
│ │ ├── gitea.ts
│ │ ├── github.ts
│ │ ├── gitlab.ts
│ │ ├── google-source.ts
│ │ ├── remoteProvider.ts
│ │ └── remoteProviders.ts
│ ├── search.ts
│ ├── sub-providers
│ │ └── remotes.ts
│ └── utils
│ │ ├── -webview
│ │ ├── branch.issue.utils.ts
│ │ ├── branch.utils.ts
│ │ ├── commit.utils.ts
│ │ ├── contributor.quickpick.ts
│ │ ├── file.utils.ts
│ │ ├── icons.ts
│ │ ├── issue.utils.ts
│ │ ├── log.utils.ts
│ │ ├── pullRequest.utils.ts
│ │ ├── reference.utils.ts
│ │ ├── repository.utils.ts
│ │ ├── sorting.ts
│ │ ├── statusFile.utils.ts
│ │ ├── worktree.quickpick.ts
│ │ └── worktree.utils.ts
│ │ ├── __tests__
│ │ └── pullRequest.utils.test.ts
│ │ ├── branch.utils.ts
│ │ ├── commit.utils.ts
│ │ ├── contributor.utils.ts
│ │ ├── fetch.utils.ts
│ │ ├── file.utils.ts
│ │ ├── fileStatus.utils.ts
│ │ ├── issue.utils.ts
│ │ ├── issueOrPullRequest.utils.ts
│ │ ├── pausedOperationStatus.utils.ts
│ │ ├── pullRequest.utils.ts
│ │ ├── reference.utils.ts
│ │ ├── remote.utils.ts
│ │ ├── remoteResource.utils.ts
│ │ ├── resourceDescriptor.utils.ts
│ │ ├── revision.utils.ts
│ │ ├── status.utils.ts
│ │ ├── tag.utils.ts
│ │ ├── user.utils.ts
│ │ └── worktree.utils.ts
├── hovers
│ ├── hovers.ts
│ └── lineHoverController.ts
├── messages.ts
├── partners.ts
├── plus
│ ├── LICENSE.plus
│ ├── ai
│ │ ├── aiProviderService.ts
│ │ ├── anthropicProvider.ts
│ │ ├── azureProvider.ts
│ │ ├── deepSeekProvider.ts
│ │ ├── geminiProvider.ts
│ │ ├── githubModelsProvider.ts
│ │ ├── gitkrakenProvider.ts
│ │ ├── huggingFaceProvider.ts
│ │ ├── mistralProvider.ts
│ │ ├── models
│ │ │ ├── model.ts
│ │ │ ├── promptTemplates.ts
│ │ │ └── provider.ts
│ │ ├── ollamaProvider.ts
│ │ ├── openAICompatibleProvider.ts
│ │ ├── openAICompatibleProviderBase.ts
│ │ ├── openRouterProvider.ts
│ │ ├── openaiProvider.ts
│ │ ├── prompts.ts
│ │ ├── utils
│ │ │ └── -webview
│ │ │ │ ├── ai.utils.ts
│ │ │ │ └── prompt.utils.ts
│ │ ├── vscodeProvider.ts
│ │ └── xaiProvider.ts
│ ├── drafts
│ │ ├── actions.ts
│ │ ├── draftsService.ts
│ │ ├── models
│ │ │ └── drafts.ts
│ │ └── utils
│ │ │ └── -webview
│ │ │ └── drafts.utils.ts
│ ├── gk
│ │ ├── __debug__accountDebug.ts
│ │ ├── authenticationConnection.ts
│ │ ├── authenticationProvider.ts
│ │ ├── models
│ │ │ ├── checkin.ts
│ │ │ ├── organization.ts
│ │ │ ├── promo.ts
│ │ │ └── subscription.ts
│ │ ├── organizationService.ts
│ │ ├── productConfigProvider.ts
│ │ ├── serverConnection.ts
│ │ ├── subscriptionService.ts
│ │ ├── urlsProvider.ts
│ │ └── utils
│ │ │ ├── -webview
│ │ │ ├── acount.utils.ts
│ │ │ ├── integrationAuthentication.utils.ts
│ │ │ ├── plus.utils.ts
│ │ │ └── subscription.utils.ts
│ │ │ ├── checkin.utils.ts
│ │ │ └── subscription.utils.ts
│ ├── graph
│ │ └── statusbar.ts
│ ├── integrations
│ │ ├── authentication
│ │ │ ├── azureDevOps.ts
│ │ │ ├── bitbucket.ts
│ │ │ ├── cloudIntegrationService.ts
│ │ │ ├── configuredIntegrationService.ts
│ │ │ ├── github.ts
│ │ │ ├── gitlab.ts
│ │ │ ├── integrationAuthenticationProvider.ts
│ │ │ ├── integrationAuthenticationService.ts
│ │ │ ├── jira.ts
│ │ │ └── models.ts
│ │ ├── integrationService.ts
│ │ ├── models
│ │ │ ├── gitHostIntegration.ts
│ │ │ ├── integration.ts
│ │ │ └── issuesIntegration.ts
│ │ ├── providers
│ │ │ ├── azure
│ │ │ │ ├── azure.ts
│ │ │ │ └── models.ts
│ │ │ ├── azureDevOps.ts
│ │ │ ├── bitbucket-server.ts
│ │ │ ├── bitbucket-server
│ │ │ │ └── models.ts
│ │ │ ├── bitbucket.ts
│ │ │ ├── bitbucket
│ │ │ │ ├── bitbucket.ts
│ │ │ │ └── models.ts
│ │ │ ├── github.ts
│ │ │ ├── github
│ │ │ │ ├── __tests__
│ │ │ │ │ └── github.utils.test.ts
│ │ │ │ ├── github.ts
│ │ │ │ ├── github.utils.ts
│ │ │ │ ├── githubGitProvider.ts
│ │ │ │ ├── models.ts
│ │ │ │ ├── sub-providers
│ │ │ │ │ ├── branches.ts
│ │ │ │ │ ├── commits.ts
│ │ │ │ │ ├── config.ts
│ │ │ │ │ ├── contributors.ts
│ │ │ │ │ ├── diff.ts
│ │ │ │ │ ├── graph.ts
│ │ │ │ │ ├── refs.ts
│ │ │ │ │ ├── remotes.ts
│ │ │ │ │ ├── revision.ts
│ │ │ │ │ ├── status.ts
│ │ │ │ │ └── tags.ts
│ │ │ │ └── utils
│ │ │ │ │ └── -webview
│ │ │ │ │ └── search.utils.ts
│ │ │ ├── gitlab.ts
│ │ │ ├── gitlab
│ │ │ │ ├── __tests__
│ │ │ │ │ └── gitlab.utils.test.ts
│ │ │ │ ├── gitlab.ts
│ │ │ │ ├── gitlab.utils.ts
│ │ │ │ └── models.ts
│ │ │ ├── jira.ts
│ │ │ ├── models.ts
│ │ │ ├── providersApi.ts
│ │ │ └── utils.ts
│ │ └── utils
│ │ │ └── -webview
│ │ │ └── integration.utils.ts
│ ├── launchpad
│ │ ├── enrichmentService.ts
│ │ ├── launchpad.ts
│ │ ├── launchpadIndicator.ts
│ │ ├── launchpadProvider.ts
│ │ ├── models
│ │ │ ├── enrichedItem.ts
│ │ │ └── launchpad.ts
│ │ └── utils
│ │ │ └── -webview
│ │ │ └── launchpad.utils.ts
│ ├── remotehub.ts
│ ├── repos
│ │ ├── repositoryIdentityService.ts
│ │ └── sharedGkStorageLocationProvider.ts
│ ├── startWork
│ │ └── startWork.ts
│ └── workspaces
│ │ ├── models
│ │ ├── cloudWorkspace.ts
│ │ ├── localWorkspace.ts
│ │ └── workspaces.ts
│ │ ├── workspacesApi.ts
│ │ ├── workspacesService.ts
│ │ └── workspacesSharedStorageProvider.ts
├── quickpicks
│ ├── aiModelPicker.ts
│ ├── branchPicker.ts
│ ├── commitPicker.ts
│ ├── comparisonPicker.ts
│ ├── contributorsPicker.ts
│ ├── items
│ │ ├── commits.ts
│ │ ├── common.ts
│ │ ├── directive.ts
│ │ ├── flags.ts
│ │ └── gitWizard.ts
│ ├── modePicker.ts
│ ├── organizationMembersPicker.ts
│ ├── referencePicker.ts
│ ├── remotePicker.ts
│ ├── remoteProviderPicker.ts
│ ├── repositoryPicker.ts
│ ├── revisionFilesPicker.ts
│ └── stashPicker.ts
├── repositories.ts
├── statusbar
│ └── statusBarController.ts
├── system
│ ├── -webview
│ │ ├── __tests__
│ │ │ └── path.test.ts
│ │ ├── asyncDebouncer.ts
│ │ ├── cancellation.ts
│ │ ├── command.ts
│ │ ├── configuration.ts
│ │ ├── context.ts
│ │ ├── formatPath.ts
│ │ ├── keyboard.ts
│ │ ├── markdown.ts
│ │ ├── path.ts
│ │ ├── path.vsls.ts
│ │ ├── scm.ts
│ │ ├── storage.ts
│ │ ├── timeline.ts
│ │ ├── uriMap.ts
│ │ ├── vscode.ts
│ │ └── vscode
│ │ │ ├── documents.ts
│ │ │ ├── editors.ts
│ │ │ ├── tabs.ts
│ │ │ ├── uris.ts
│ │ │ └── workspaces.ts
│ ├── __tests__
│ │ ├── __mock__
│ │ │ └── paths.json
│ │ ├── color.test.ts
│ │ ├── iterable.test.ts
│ │ ├── path.test.ts
│ │ └── trie.test.ts
│ ├── array.ts
│ ├── brand.ts
│ ├── color.ts
│ ├── commands.ts
│ ├── counter.ts
│ ├── date.ts
│ ├── decorators
│ │ ├── -webview
│ │ │ ├── gate.ts
│ │ │ ├── memoize.ts
│ │ │ └── resolver.ts
│ │ ├── command.ts
│ │ ├── debounce.ts
│ │ ├── log.ts
│ │ └── serialize.ts
│ ├── encoding.ts
│ ├── event.ts
│ ├── function.ts
│ ├── function
│ │ ├── __tests__
│ │ │ └── debounce.test.ts
│ │ └── debounce.ts
│ ├── iterable.ts
│ ├── lazy.ts
│ ├── loggable.ts
│ ├── logger.constants.ts
│ ├── logger.scope.ts
│ ├── logger.ts
│ ├── markdown.ts
│ ├── mru.ts
│ ├── object.ts
│ ├── paging.ts
│ ├── path.ts
│ ├── promise.ts
│ ├── promiseCache.ts
│ ├── searchTree.ts
│ ├── serialize.ts
│ ├── stopwatch.ts
│ ├── string.ts
│ ├── subscriptionManager.ts
│ ├── trie.ts
│ ├── unifiedDisposable.ts
│ ├── uri.ts
│ ├── validation.ts
│ ├── version.ts
│ └── webview.ts
├── telemetry
│ ├── openTelemetryProvider.ts
│ ├── telemetry.ts
│ ├── usageTracker.ts
│ └── walkthroughStateProvider.ts
├── terminal.ts
├── terminal
│ └── linkProvider.ts
├── trackers
│ ├── documentTracker.ts
│ ├── lineTracker.ts
│ └── trackedDocument.ts
├── uris
│ ├── deepLinks
│ │ ├── deepLink.ts
│ │ └── deepLinkService.ts
│ └── uriService.ts
├── views
│ ├── branchesView.ts
│ ├── commitsView.ts
│ ├── contributorsView.ts
│ ├── draftsView.ts
│ ├── fileHistoryView.ts
│ ├── launchpadView.ts
│ ├── lineHistoryView.ts
│ ├── nodes
│ │ ├── UncommittedFileNode.ts
│ │ ├── UncommittedFilesNode.ts
│ │ ├── abstract
│ │ │ ├── cacheableChildrenViewNode.ts
│ │ │ ├── repositoriesSubscribeableNode.ts
│ │ │ ├── repositoryFolderNode.ts
│ │ │ ├── subscribeableViewNode.ts
│ │ │ ├── viewFileNode.ts
│ │ │ ├── viewNode.ts
│ │ │ └── viewRefNode.ts
│ │ ├── autolinkedItemNode.ts
│ │ ├── autolinkedItemsNode.ts
│ │ ├── branchNode.ts
│ │ ├── branchOrTagFolderNode.ts
│ │ ├── branchTrackingStatusFilesNode.ts
│ │ ├── branchTrackingStatusNode.ts
│ │ ├── branchesNode.ts
│ │ ├── codeSuggestionsNode.ts
│ │ ├── commitFileNode.ts
│ │ ├── commitNode.ts
│ │ ├── common.ts
│ │ ├── compareBranchNode.ts
│ │ ├── comparePickerNode.ts
│ │ ├── compareResultsNode.ts
│ │ ├── contributorNode.ts
│ │ ├── contributorsNode.ts
│ │ ├── draftNode.ts
│ │ ├── fileHistoryNode.ts
│ │ ├── fileHistoryTrackerNode.ts
│ │ ├── fileRevisionAsCommitNode.ts
│ │ ├── folderNode.ts
│ │ ├── groupingNode.ts
│ │ ├── launchpadViewGroupingNode.ts
│ │ ├── lineHistoryNode.ts
│ │ ├── lineHistoryTrackerNode.ts
│ │ ├── mergeConflictCurrentChangesNode.ts
│ │ ├── mergeConflictFileNode.ts
│ │ ├── mergeConflictFilesNode.ts
│ │ ├── mergeConflictIncomingChangesNode.ts
│ │ ├── pausedOperationStatusNode.ts
│ │ ├── pullRequestNode.ts
│ │ ├── rebaseCommitNode.ts
│ │ ├── reflogNode.ts
│ │ ├── reflogRecordNode.ts
│ │ ├── remoteNode.ts
│ │ ├── remotesNode.ts
│ │ ├── repositoriesNode.ts
│ │ ├── repositoryNode.ts
│ │ ├── resultsCommitsNode.ts
│ │ ├── resultsFileNode.ts
│ │ ├── resultsFilesNode.ts
│ │ ├── searchResultsNode.ts
│ │ ├── stashFileNode.ts
│ │ ├── stashNode.ts
│ │ ├── stashesNode.ts
│ │ ├── statusFileNode.ts
│ │ ├── statusFilesNode.ts
│ │ ├── tagNode.ts
│ │ ├── tagsNode.ts
│ │ ├── utils
│ │ │ └── -webview
│ │ │ │ └── node.utils.ts
│ │ ├── workspaceMissingRepositoryNode.ts
│ │ ├── workspaceNode.ts
│ │ ├── worktreeNode.ts
│ │ └── worktreesNode.ts
│ ├── pullRequestView.ts
│ ├── remotesView.ts
│ ├── repositoriesView.ts
│ ├── scmGroupedView.ts
│ ├── searchAndCompareView.ts
│ ├── stashesView.ts
│ ├── tagsView.ts
│ ├── viewBase.ts
│ ├── viewCommands.ts
│ ├── viewDecorationProvider.ts
│ ├── views.ts
│ ├── workspacesView.ts
│ └── worktreesView.ts
├── vsls
│ ├── guest.ts
│ ├── host.ts
│ ├── protocol.ts
│ └── vsls.ts
└── webviews
│ ├── apps
│ ├── commitDetails
│ │ ├── commitDetails.html
│ │ ├── commitDetails.scss
│ │ ├── commitDetails.ts
│ │ └── components
│ │ │ ├── button.css.ts
│ │ │ ├── commit-action.css.ts
│ │ │ ├── commit-details-app.ts
│ │ │ ├── gl-commit-details.ts
│ │ │ ├── gl-details-base.ts
│ │ │ ├── gl-inspect-nav.ts
│ │ │ ├── gl-inspect-patch.ts
│ │ │ ├── gl-status-nav.ts
│ │ │ └── gl-wip-details.ts
│ ├── home
│ │ ├── components
│ │ │ ├── ama-banner.ts
│ │ │ ├── feature-nav.ts
│ │ │ ├── integration-banner.ts
│ │ │ ├── onboarding.ts
│ │ │ ├── preview-banner.ts
│ │ │ ├── promo-banner.ts
│ │ │ └── repo-alerts.ts
│ │ ├── context.ts
│ │ ├── home.css.ts
│ │ ├── home.html
│ │ ├── home.scss
│ │ ├── home.ts
│ │ └── stateProvider.ts
│ ├── media
│ │ ├── blame-avatars-compact.png
│ │ ├── blame-avatars.png
│ │ ├── blame-compact-highlight.png
│ │ ├── blame-compact.png
│ │ ├── blame-heatmap-left.png
│ │ ├── blame-heatmap-right.png
│ │ ├── blame-highlight-gutter.png
│ │ ├── blame-highlight-scrollbar.png
│ │ ├── blame-highlight.png
│ │ ├── blame.png
│ │ ├── branches-view-compare+pr.png
│ │ ├── branches-view-compare.png
│ │ ├── branches-view-pr.png
│ │ ├── branches-view.png
│ │ ├── changes-highlight-gutter.png
│ │ ├── changes-highlight-scrollbar.png
│ │ ├── changes.png
│ │ ├── code-lens-blocks-authors.png
│ │ ├── code-lens-blocks-recent+authors.png
│ │ ├── code-lens-blocks-recent.png
│ │ ├── code-lens-containers-authors.png
│ │ ├── code-lens-containers-recent+authors.png
│ │ ├── code-lens-containers-recent.png
│ │ ├── code-lens-file-authors.png
│ │ ├── code-lens-file-recent+authors.png
│ │ ├── code-lens-file-recent.png
│ │ ├── code-lens.png
│ │ ├── commit-details.png
│ │ ├── commits-view-auto-commit-pr.png
│ │ ├── commits-view-auto-compare+commit-pr.png
│ │ ├── commits-view-auto-compare+pr+commit-pr.png
│ │ ├── commits-view-auto-compare+pr.png
│ │ ├── commits-view-auto-compare.png
│ │ ├── commits-view-auto-pr+commit-pr.png
│ │ ├── commits-view-auto-pr.png
│ │ ├── commits-view-auto.png
│ │ ├── commits-view-tree-commit-pr.png
│ │ ├── commits-view-tree-compare+commit-pr.png
│ │ ├── commits-view-tree-compare+pr+commit-pr.png
│ │ ├── commits-view-tree-compare+pr.png
│ │ ├── commits-view-tree-compare.png
│ │ ├── commits-view-tree-pr+commit-pr.png
│ │ ├── commits-view-tree-pr.png
│ │ ├── commits-view-tree.png
│ │ ├── contributors-view.png
│ │ ├── current-line-blame-on+pr.png
│ │ ├── current-line-blame-on-scrollable.png
│ │ ├── current-line-blame-on.png
│ │ ├── current-line-blame.png
│ │ ├── file-history-view-avatars.png
│ │ ├── file-history-view.png
│ │ ├── gitlens-logo.png
│ │ ├── graph-commit-search.png
│ │ ├── graph-minimap.png
│ │ ├── heatmap-gutter.png
│ │ ├── heatmap-scrollbar.png
│ │ ├── heatmap.png
│ │ ├── hovers-annotations-compact.png
│ │ ├── hovers-annotations-currentLine-on.png
│ │ ├── hovers-annotations.png
│ │ ├── hovers-autolink.png
│ │ ├── hovers-changes.png
│ │ ├── hovers-currentLine-on+pr.png
│ │ ├── hovers-currentLine-on.png
│ │ ├── hovers-currentLine.png
│ │ ├── hovers-details+changes.png
│ │ ├── hovers-details+pr+changes.png
│ │ ├── hovers-details+pr.png
│ │ ├── hovers-details.png
│ │ ├── line-history-view-avatars.png
│ │ ├── line-history-view.png
│ │ ├── modes-status-bar-left.png
│ │ ├── modes-status-bar-right.png
│ │ ├── plus-commit-graph-illustrated.png
│ │ ├── rebase-editor.png
│ │ ├── remotes-view-pr.png
│ │ ├── remotes-view.png
│ │ ├── repositories-view.png
│ │ ├── search-and-compare-view.png
│ │ ├── stashes-view-auto.png
│ │ ├── stashes-view-tree.png
│ │ ├── status-bar-left+pr.png
│ │ ├── status-bar-left.png
│ │ ├── status-bar-right+pr.png
│ │ ├── status-bar-right.png
│ │ ├── status-bar.png
│ │ ├── tags-view-list.png
│ │ ├── tags-view-tree.png
│ │ ├── worktrees-view-compare+pr.png
│ │ ├── worktrees-view-compare.png
│ │ ├── worktrees-view-pr.png
│ │ └── worktrees-view.png
│ ├── play-button.svg
│ ├── plus
│ │ ├── LICENSE.plus
│ │ ├── graph
│ │ │ ├── actions
│ │ │ │ └── gitActionsButtons.ts
│ │ │ ├── context.ts
│ │ │ ├── gate.ts
│ │ │ ├── graph-app.ts
│ │ │ ├── graph-header.ts
│ │ │ ├── graph-wrapper
│ │ │ │ ├── graph-wrapper-element.ts
│ │ │ │ ├── graph-wrapper.react.tsx
│ │ │ │ └── graph-wrapper.ts
│ │ │ ├── graph.html
│ │ │ ├── graph.scss
│ │ │ ├── graph.ts
│ │ │ ├── hover
│ │ │ │ └── graphHover.ts
│ │ │ ├── minimap
│ │ │ │ ├── minimap-container.ts
│ │ │ │ └── minimap.ts
│ │ │ ├── sidebar
│ │ │ │ └── sidebar.ts
│ │ │ ├── stateProvider.ts
│ │ │ └── styles
│ │ │ │ ├── graph.css.ts
│ │ │ │ └── header.css.ts
│ │ ├── home
│ │ │ └── components
│ │ │ │ ├── active-work.ts
│ │ │ │ ├── branch-card.ts
│ │ │ │ ├── branch-section.ts
│ │ │ │ ├── branch-threshold-filter.ts
│ │ │ │ ├── launchpad.ts
│ │ │ │ ├── merge-target-status.ts
│ │ │ │ ├── overview.ts
│ │ │ │ └── overviewState.ts
│ │ ├── patchDetails
│ │ │ ├── components
│ │ │ │ ├── gl-draft-details.ts
│ │ │ │ ├── gl-patch-create.ts
│ │ │ │ ├── gl-tree-base.ts
│ │ │ │ └── patch-details-app.ts
│ │ │ ├── patchDetails.html
│ │ │ ├── patchDetails.scss
│ │ │ └── patchDetails.ts
│ │ ├── shared
│ │ │ └── components
│ │ │ │ ├── account-chip.ts
│ │ │ │ ├── chipStyles.ts
│ │ │ │ ├── feature-gate-plus-state.ts
│ │ │ │ ├── home-header.ts
│ │ │ │ ├── integrations-chip.ts
│ │ │ │ ├── merge-rebase-status.ts
│ │ │ │ └── vscode.css.ts
│ │ └── timeline
│ │ │ ├── components
│ │ │ ├── chart.css.ts
│ │ │ ├── chart.ts
│ │ │ ├── scroller.ts
│ │ │ └── slider.ts
│ │ │ ├── context.ts
│ │ │ ├── stateProvider.ts
│ │ │ ├── timeline.css.ts
│ │ │ ├── timeline.html
│ │ │ ├── timeline.scss
│ │ │ └── timeline.ts
│ ├── rebase
│ │ ├── rebase.html
│ │ ├── rebase.scss
│ │ └── rebase.ts
│ ├── settings
│ │ ├── partials
│ │ │ ├── autolinks.html
│ │ │ ├── blame.html
│ │ │ ├── changes.html
│ │ │ ├── code-lens.html
│ │ │ ├── commit-graph.html
│ │ │ ├── current-line.html
│ │ │ ├── dates.html
│ │ │ ├── file-annotations.html
│ │ │ ├── heatmap.html
│ │ │ ├── hovers.html
│ │ │ ├── menus.html
│ │ │ ├── modes.html
│ │ │ ├── rebase-editor.html
│ │ │ ├── shortcuts.html
│ │ │ ├── sorting.html
│ │ │ ├── status-bar.html
│ │ │ ├── terminal-links.html
│ │ │ ├── views.branches.html
│ │ │ ├── views.commitDetails.html
│ │ │ ├── views.commits.html
│ │ │ ├── views.contributors.html
│ │ │ ├── views.file-history.html
│ │ │ ├── views.line-history.html
│ │ │ ├── views.remotes.html
│ │ │ ├── views.repositories.html
│ │ │ ├── views.searchAndCompare.html
│ │ │ ├── views.stashes.html
│ │ │ ├── views.tags.html
│ │ │ └── views.worktrees.html
│ │ ├── settings.html
│ │ ├── settings.scss
│ │ └── settings.ts
│ ├── shared
│ │ ├── appBase.ts
│ │ ├── appHost.ts
│ │ ├── base.scss
│ │ ├── buttons.scss
│ │ ├── codicons.scss
│ │ ├── components
│ │ │ ├── accordion
│ │ │ │ └── accordion.ts
│ │ │ ├── actions
│ │ │ │ ├── action-item.ts
│ │ │ │ └── action-nav.ts
│ │ │ ├── avatar
│ │ │ │ ├── avatar-list.ts
│ │ │ │ └── avatar.ts
│ │ │ ├── badges
│ │ │ │ ├── badge.ts
│ │ │ │ └── badges.css.ts
│ │ │ ├── branch-icon.ts
│ │ │ ├── branch-name.ts
│ │ │ ├── breadcrumbs.ts
│ │ │ ├── button-container.ts
│ │ │ ├── button.ts
│ │ │ ├── card
│ │ │ │ ├── card.css.ts
│ │ │ │ └── card.ts
│ │ │ ├── checkbox
│ │ │ │ └── checkbox.ts
│ │ │ ├── chips
│ │ │ │ ├── action-chip.ts
│ │ │ │ └── autolink-chip.ts
│ │ │ ├── code-icon.ts
│ │ │ ├── commit-sha.ts
│ │ │ ├── commit
│ │ │ │ ├── commit-author.ts
│ │ │ │ ├── commit-date.ts
│ │ │ │ ├── commit-identity.ts
│ │ │ │ └── commit-stats.ts
│ │ │ ├── converters
│ │ │ │ └── date-converter.ts
│ │ │ ├── copy-container.ts
│ │ │ ├── element.ts
│ │ │ ├── feature-badge.ts
│ │ │ ├── feature-gate.ts
│ │ │ ├── formatted-date.ts
│ │ │ ├── forms
│ │ │ │ └── checkbox.css.ts
│ │ │ ├── gitlens-logo.ts
│ │ │ ├── helpers
│ │ │ │ ├── react-wrapper.ts
│ │ │ │ └── slots.ts
│ │ │ ├── icons
│ │ │ │ ├── codicons-map.ts
│ │ │ │ └── glicons-map.ts
│ │ │ ├── indicators
│ │ │ │ ├── indicator.css.ts
│ │ │ │ ├── indicator.ts
│ │ │ │ ├── watermark-loader.css.ts
│ │ │ │ └── watermark-loader.ts
│ │ │ ├── integrations
│ │ │ │ └── connect.ts
│ │ │ ├── markdown
│ │ │ │ ├── markdown.react.tsx
│ │ │ │ └── markdown.ts
│ │ │ ├── menu
│ │ │ │ ├── menu-divider.ts
│ │ │ │ ├── menu-item.ts
│ │ │ │ ├── menu-label.ts
│ │ │ │ └── menu-list.ts
│ │ │ ├── overlays
│ │ │ │ ├── overlays.utils.ts
│ │ │ │ ├── popover.ts
│ │ │ │ └── tooltip.ts
│ │ │ ├── panes
│ │ │ │ └── pane-group.ts
│ │ │ ├── pills
│ │ │ │ ├── pill.css.ts
│ │ │ │ └── tracking.ts
│ │ │ ├── progress.ts
│ │ │ ├── promo.ts
│ │ │ ├── radio
│ │ │ │ ├── radio-group.ts
│ │ │ │ ├── radio.css.ts
│ │ │ │ └── radio.ts
│ │ │ ├── ref-button.ts
│ │ │ ├── ref-name.ts
│ │ │ ├── ref.css.ts
│ │ │ ├── repo-button-group.ts
│ │ │ ├── rich
│ │ │ │ ├── issue-icon.ts
│ │ │ │ ├── issue-pull-request.ts
│ │ │ │ ├── issue.css.ts
│ │ │ │ ├── pr-icon.ts
│ │ │ │ ├── pr.css.ts
│ │ │ │ └── utils.ts
│ │ │ ├── search
│ │ │ │ ├── search-box.ts
│ │ │ │ └── search-input.ts
│ │ │ ├── signal-utils.ts
│ │ │ ├── skeleton-loader.ts
│ │ │ ├── snow.ts
│ │ │ ├── status
│ │ │ │ └── git-status.ts
│ │ │ ├── styles
│ │ │ │ └── lit
│ │ │ │ │ ├── a11y.css.ts
│ │ │ │ │ └── base.css.ts
│ │ │ ├── tree
│ │ │ │ ├── base.ts
│ │ │ │ ├── tree-generator.ts
│ │ │ │ ├── tree-item.ts
│ │ │ │ ├── tree.css.ts
│ │ │ │ └── tree.ts
│ │ │ └── webview-pane.ts
│ │ ├── contexts
│ │ │ ├── ipc.ts
│ │ │ ├── logger.ts
│ │ │ ├── promos.ts
│ │ │ └── telemetry.ts
│ │ ├── date.ts
│ │ ├── dom.ts
│ │ ├── events.ts
│ │ ├── git-utils.ts
│ │ ├── glicons.scss
│ │ ├── icons.scss
│ │ ├── ipc.ts
│ │ ├── popup.scss
│ │ ├── styles
│ │ │ ├── details-base.scss
│ │ │ ├── icons
│ │ │ │ ├── codicons-map.scss
│ │ │ │ ├── glicons-map.scss
│ │ │ │ └── utils.scss
│ │ │ ├── normalize.scss
│ │ │ ├── properties.scss
│ │ │ ├── scrollbars.scss
│ │ │ ├── shoelace
│ │ │ │ └── vscode-theme.scss
│ │ │ ├── theme.scss
│ │ │ └── utils.scss
│ │ ├── telemetry.ts
│ │ ├── theme.ts
│ │ └── utils.scss
│ └── tsconfig.json
│ ├── commitDetails
│ ├── actions.ts
│ ├── commitDetailsWebview.ts
│ ├── protocol.ts
│ └── registration.ts
│ ├── home
│ ├── homeWebview.ts
│ ├── protocol.ts
│ └── registration.ts
│ ├── plus
│ ├── graph
│ │ ├── graphWebview.ts
│ │ ├── graphWebview.utils.ts
│ │ ├── protocol.ts
│ │ └── registration.ts
│ ├── patchDetails
│ │ ├── patchDetailsWebview.ts
│ │ ├── protocol.ts
│ │ ├── registration.ts
│ │ └── repositoryChangeset.ts
│ └── timeline
│ │ ├── protocol.ts
│ │ ├── registration.ts
│ │ ├── timelineWebview.ts
│ │ └── utils
│ │ └── -webview
│ │ └── timeline.utils.ts
│ ├── protocol.ts
│ ├── rebase
│ ├── protocol.ts
│ └── rebaseEditor.ts
│ ├── settings
│ ├── protocol.ts
│ ├── registration.ts
│ └── settingsWebview.ts
│ ├── webviewCommandRegistrar.ts
│ ├── webviewController.ts
│ ├── webviewProvider.ts
│ └── webviewsController.ts
├── svgo.config.js
├── tests
├── docker
│ ├── Dockerfile
│ ├── run-e2e-test-local.sh
│ ├── run-unit-tests.sh
│ └── supervisor.conf
└── e2e
│ ├── playwright.config.ts
│ ├── setup.ts
│ ├── specs
│ ├── baseTest.ts
│ ├── command_palette.test.ts
│ └── gitlens_install.test.ts
│ └── tsconfig.json
├── tsconfig.base.json
├── tsconfig.browser.json
├── tsconfig.json
├── tsconfig.node.json
├── tsconfig.test.json
├── walkthroughs
└── welcome
│ ├── accelerate-pr-reviews.md
│ ├── ai-features.md
│ ├── get-started-community.md
│ ├── home.md
│ ├── improve-workflows-with-integrations.md
│ ├── streamline-collaboration.md
│ ├── thumbnails
│ ├── ai-features.jpg
│ ├── autolinks.jpg
│ ├── cloud-patches.jpg
│ ├── commit-graph.jpg
│ ├── discover-pro.png
│ ├── home-view.jpg
│ ├── launchpad.jpg
│ └── welcome.png
│ ├── visualize-code-history.md
│ ├── welcome-in-trial-expired-eligible.md
│ ├── welcome-in-trial-expired.md
│ ├── welcome-in-trial.md
│ └── welcome-paid.md
├── webpack.config.images.mjs
└── webpack.config.mjs
/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 Electron versions
2 |
--------------------------------------------------------------------------------
/.git-blame-ignore-revs:
--------------------------------------------------------------------------------
1 | 85769575493b939733a3dee5a590c2407923f31b
2 | 59d9071a9bb200c3ef95369a6335f8a0138f461a
3 | 9e17dbe2b7457af484c88cc15a45c42b84d2ba3b
4 | d790e9db047769de079f6838c3578f3a47bf5930
5 | 003da86002563f825b51ca95a28afc7ef85f91d8
6 | 175a81eabe741aedb30776f092a937bfee7044bc
7 | 60f8cb9fb8d1a56772d18a1a81cdd1748d589c2e
8 | 9c2df377d3e1842ed09eea5bb99be00edee9ca9c
9 | 444bf829156b3170c8b4b5156dcf10b06db83779
10 | 4dba4612670c0a942e3daa3e6a34a57aebe257ae
11 | fbccf2428fd671378202de43ff99deff66168a13
12 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto eol=lf
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | @eamodio
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 | contact_links:
3 | - name: Q & A
4 | url: https://github.com/gitkraken/vscode-gitlens/discussions?discussions_q=category%3AQ%26A
5 | about: Ask and answer questions about GitLens
6 | - name: Documentation
7 | url: https://help.gitkraken.com/gitlens
8 | about: Read the GitLens support documentation
9 | - name: GitKraken Support
10 | url: https://help.gitkraken.com/gitlens/gl-contact-support/?product_s_=GitLens
11 | about: Get email support for issues and questions on paid features or relating to your GitKraken account or plan
12 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.yml:
--------------------------------------------------------------------------------
1 | name: Enhancement or feature request
2 | description: Suggest an enhancement, feature, or idea for GitLens
3 | type: 'Enhancement'
4 | labels: [triage]
5 | body:
6 | - type: textarea
7 | attributes:
8 | label: Description
9 | description: Please describe the enhancement or feature you'd like to see in GitLens.
10 | validations:
11 | required: false
12 |
--------------------------------------------------------------------------------
/.github/workflows/issues-lock.yml:
--------------------------------------------------------------------------------
1 | name: 'Lock closed issues'
2 |
3 | on:
4 | schedule:
5 | - cron: '30 5 * * *'
6 | workflow_dispatch:
7 |
8 | jobs:
9 | stale:
10 | runs-on: ubuntu-latest
11 | permissions:
12 | issues: write
13 | steps:
14 | - uses: dessant/lock-threads@v5
15 | with:
16 | github-token: ${{ secrets.GITHUB_TOKEN }}
17 | issue-comment: 'This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.'
18 | issue-inactive-days: 30
19 | process-only: 'issues'
20 |
--------------------------------------------------------------------------------
/.github/workflows/unit-tests.yml:
--------------------------------------------------------------------------------
1 | name: Unit tests
2 |
3 | on:
4 | pull_request:
5 | branches: ['*']
6 | types:
7 | - opened
8 | - reopened
9 | - synchronize
10 | - ready_for_review
11 |
12 | jobs:
13 | test:
14 | name: Run unit tests
15 | runs-on: ubuntu-latest
16 | if: ${{ !github.event.pull_request.draft }}
17 | steps:
18 | - name: Checkout
19 | uses: actions/checkout@v3
20 | - run: cd tests/docker && ./run-e2e-test-local.sh
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .eslintcache*
3 | .vscode-clean/**
4 | .vscode-test/**
5 | .vscode-test-web/**
6 | dist
7 | out
8 | node_modules
9 | images/settings
10 | gitlens-*.vsix
11 | product.json
12 | tsconfig*.tsbuildinfo
13 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | dist
2 | docs/telemetry-events.md
3 | out
4 | node_modules
5 | git.d.ts
6 | glicons.scss
7 | images/icons/template/component-map.hbs
8 | images/icons/template/icons-contribution.hbs
9 | images/icons/template/mapping.json
10 | images/icons/template/sass-map.hbs
11 | images/icons/template/styles.hbs
12 | src/emojis.generated.ts
13 | src/webviews/apps/shared/components/icons/codicons-map.ts
14 | src/webviews/apps/shared/components/icons/glicons-map.ts
15 | src/webviews/apps/shared/styles/icons/codicons-map.scss
16 | src/webviews/apps/shared/styles/icons/glicons-map.scss
17 | pnpm-lock.yaml
18 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "arrowParens": "avoid",
3 | "endOfLine": "lf",
4 | "trailingComma": "all",
5 | "printWidth": 120,
6 | "singleQuote": true,
7 | "tabWidth": 4,
8 | "useTabs": true,
9 | "overrides": [
10 | {
11 | "files": ".prettierrc",
12 | "options": { "parser": "json" }
13 | },
14 | {
15 | "files": "*.md",
16 | "options": { "tabWidth": 2 }
17 | }
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/.vscode-test.mjs:
--------------------------------------------------------------------------------
1 | import { defineConfig } from '@vscode/test-cli';
2 |
3 | export default defineConfig([
4 | {
5 | label: 'Unit Tests',
6 | files: 'out/tests/**/*.test.js',
7 | version: 'insiders',
8 | mocha: {
9 | ui: 'tdd',
10 | timeout: 20000,
11 | },
12 | },
13 | ]);
14 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // See http://go.microsoft.com/fwlink/?LinkId=827846
3 | // for the documentation about the extensions.json format
4 | "recommendations": [
5 | "dbaeumer.vscode-eslint",
6 | "amodio.tsl-problem-matcher",
7 | "esbenp.prettier-vscode",
8 | "runem.lit-plugin",
9 | "ms-vscode.extension-test-runner",
10 | "ms-playwright.playwright"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/README.pre.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/README.pre.md
--------------------------------------------------------------------------------
/images/dark/icon-azdo.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/dark/icon-branch.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-check.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-checkout.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/dark/icon-commit-horizontal.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/dark/icon-compare-ref-working.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-diff.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-github.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/dark/icon-gitlens-filled-orange.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-gitlens-filled-progress.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-match-regex-selected.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/dark/icon-match-regex.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-next-commit.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-no-check.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-open-revision.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/dark/icon-prev-commit-menu.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/images/dark/icon-prev-commit.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-push-force.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-ahead-cloud.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-ahead-solid.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-ahead.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-behind-cloud.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-behind-solid.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-behind.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-changes-cloud.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-changes-solid.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-changes.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-cloud.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-diverged-cloud.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-diverged-solid.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-diverged.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-solid.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-synced-cloud.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-synced-solid.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/dark/icon-repo-synced.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-repo.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/dark/icon-stash-pop.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/dark/icon-stash.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-status-added.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-status-conflict.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-status-copied.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-status-deleted.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-status-ignored.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-status-modified.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-status-renamed.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-status-untracked.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/dark/icon-tag-selected.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/dark/icon-unfold.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/dark/icon-view-auto.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/docs/branches-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/branches-view.png
--------------------------------------------------------------------------------
/images/docs/code-suggest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/code-suggest.png
--------------------------------------------------------------------------------
/images/docs/commit-graph-illustrated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/commit-graph-illustrated.png
--------------------------------------------------------------------------------
/images/docs/commit-graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/commit-graph.png
--------------------------------------------------------------------------------
/images/docs/commits-view-merge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/commits-view-merge.png
--------------------------------------------------------------------------------
/images/docs/commits-view-rebase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/commits-view-rebase.png
--------------------------------------------------------------------------------
/images/docs/commits-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/commits-view.png
--------------------------------------------------------------------------------
/images/docs/contributors-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/contributors-view.png
--------------------------------------------------------------------------------
/images/docs/current-line-blame.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/current-line-blame.png
--------------------------------------------------------------------------------
/images/docs/file-history-view-merge-conflict.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/file-history-view-merge-conflict.png
--------------------------------------------------------------------------------
/images/docs/file-history-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/file-history-view.png
--------------------------------------------------------------------------------
/images/docs/get-started-video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/get-started-video.png
--------------------------------------------------------------------------------
/images/docs/git-command-palette.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/git-command-palette.png
--------------------------------------------------------------------------------
/images/docs/gutter-blame.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/gutter-blame.png
--------------------------------------------------------------------------------
/images/docs/gutter-changes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/gutter-changes.png
--------------------------------------------------------------------------------
/images/docs/gutter-heatmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/gutter-heatmap.png
--------------------------------------------------------------------------------
/images/docs/hovers-current-line-details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/hovers-current-line-details.png
--------------------------------------------------------------------------------
/images/docs/hovers-current-line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/hovers-current-line.png
--------------------------------------------------------------------------------
/images/docs/launchpad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/launchpad.png
--------------------------------------------------------------------------------
/images/docs/rebase.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/rebase.gif
--------------------------------------------------------------------------------
/images/docs/remotes-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/remotes-view.png
--------------------------------------------------------------------------------
/images/docs/revision-navigation.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/revision-navigation.gif
--------------------------------------------------------------------------------
/images/docs/search-and-compare-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/search-and-compare-view.png
--------------------------------------------------------------------------------
/images/docs/side-bar-views.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/side-bar-views.png
--------------------------------------------------------------------------------
/images/docs/sponsors/cresus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/cresus.png
--------------------------------------------------------------------------------
/images/docs/sponsors/dendron.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/dendron.png
--------------------------------------------------------------------------------
/images/docs/sponsors/embark-studios_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/embark-studios_dark.png
--------------------------------------------------------------------------------
/images/docs/sponsors/embark-studios_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/embark-studios_light.png
--------------------------------------------------------------------------------
/images/docs/sponsors/localize_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/localize_dark.png
--------------------------------------------------------------------------------
/images/docs/sponsors/localize_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/localize_light.png
--------------------------------------------------------------------------------
/images/docs/sponsors/stepsize.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/stepsize.png
--------------------------------------------------------------------------------
/images/docs/sponsors/tabnine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/tabnine.png
--------------------------------------------------------------------------------
/images/docs/stashes-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/stashes-view.png
--------------------------------------------------------------------------------
/images/docs/status-bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/status-bar.png
--------------------------------------------------------------------------------
/images/docs/tags-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/tags-view.png
--------------------------------------------------------------------------------
/images/docs/terminal-links.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/terminal-links.gif
--------------------------------------------------------------------------------
/images/docs/visual-file-history-illustrated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/visual-file-history-illustrated.png
--------------------------------------------------------------------------------
/images/docs/worktrees-illustrated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/worktrees-illustrated.png
--------------------------------------------------------------------------------
/images/docs/worktrees.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/worktrees.png
--------------------------------------------------------------------------------
/images/gitlens-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/gitlens-icon.png
--------------------------------------------------------------------------------
/images/icons/branches-view-filled.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/clock.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/code-suggestion.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/commit-horizontal.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/commit-view.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/commits-view-filled.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/commits-view.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/confirm-checked.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/confirm-unchecked.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/contributors-view-filled.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/gitlens-filled.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/gitlens.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/history-view-filled.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/history-view.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/inspect.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/launchpad-view-filled.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/launchpad-view.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/list-auto.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/next-commit.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/open-revision.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/pinned-filled.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/prev-commit.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/provider-azdo.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/provider-bitbucket.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/provider-gerrit.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/provider-github.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/provider-jira.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/remotes-view-filled.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/remotes-view.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/repository-filled.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/search-view-filled.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/search-view.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/stash-pop.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/stash-save.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/stashes-view-filled.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/stashes-view.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/switch.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/tags-view-filled.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/tags-view.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/template/component-map.hbs:
--------------------------------------------------------------------------------
1 | // This file is generated by (vscode-gitlens)/scripts/export-codicons.js
2 | // Do not edit this file directly
3 |
4 | export const iconFontFamily = '{{ name }}';
5 |
6 | export const iconMap = Object.freeze({
7 | {{#each codepoints}}
8 | '{{ @key }}': '\\\{{ codepoint this }}',
9 | {{/each}}
10 | });
11 |
--------------------------------------------------------------------------------
/images/icons/template/icons-contribution.hbs:
--------------------------------------------------------------------------------
1 | {
2 | "icons": {
3 | {{#each codepoints}}
4 | "gitlens-{{@key}}": {
5 | "description": "{{@key}} icon",
6 | "default": {
7 | "fontPath": "dist/glicons.woff2",
8 | "fontCharacter": "\\\{{codepoint this}}"
9 | }
10 | {{#if @last}}
11 | }
12 | {{else}}
13 | },
14 | {{/if}}
15 | {{/each}}
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/images/icons/template/sass-map.hbs:
--------------------------------------------------------------------------------
1 | // This file is generated by (vscode-gitlens)/scripts/export-codicons.js
2 | // Do not edit this file directly
3 |
4 | $icon-font-family: '{{ name }}';
5 |
6 | $icon-map: (
7 | {{#each codepoints}}
8 | '{{@key}}': '\\{{ codepoint this }}',
9 | {{/each}}
10 | );
11 |
--------------------------------------------------------------------------------
/images/icons/workspaces-view.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/worktrees-view-filled.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/icons/worktrees-view.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/light/icon-azdo.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/light/icon-branch.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-check.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-checkout.svg:
--------------------------------------------------------------------------------
1 |
5 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-commit-horizontal.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/light/icon-compare-ref-working.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-diff.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-github.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-gitlens-filled-orange.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-gitlens-filled-progress.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/images/light/icon-match-regex-selected.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/light/icon-match-regex.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-next-commit.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-no-check.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-open-revision.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/light/icon-prev-commit-menu.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/images/light/icon-prev-commit.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-push-force.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/light/icon-repo-ahead-cloud.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-repo-ahead-solid.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/light/icon-repo-ahead.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-repo-behind-cloud.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-repo-behind-solid.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/light/icon-repo-behind.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-repo-changes-cloud.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-repo-changes-solid.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/light/icon-repo-changes.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-repo-cloud.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-repo-diverged-cloud.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-repo-diverged-solid.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/light/icon-repo-diverged.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-repo-solid.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/light/icon-repo-synced-cloud.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-repo-synced-solid.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/light/icon-repo-synced.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-repo.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/images/light/icon-stash-pop.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/light/icon-stash.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-status-added.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-status-conflict.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-status-copied.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-status-deleted.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-status-ignored.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-status-modified.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-status-renamed.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-status-untracked.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/light/icon-tag-selected.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/light/icon-unfold.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/light/icon-view-auto.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/originals/blame.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/blame.pdn
--------------------------------------------------------------------------------
/images/originals/branches-view.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/branches-view.pdn
--------------------------------------------------------------------------------
/images/originals/changes.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/changes.pdn
--------------------------------------------------------------------------------
/images/originals/code-lens.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/code-lens.pdn
--------------------------------------------------------------------------------
/images/originals/commits-view.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/commits-view.pdn
--------------------------------------------------------------------------------
/images/originals/contributors-view.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/contributors-view.pdn
--------------------------------------------------------------------------------
/images/originals/current-line-blame.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/current-line-blame.pdn
--------------------------------------------------------------------------------
/images/originals/file-history-view.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/file-history-view.pdn
--------------------------------------------------------------------------------
/images/originals/gitlens-logo-1000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-logo-1000.png
--------------------------------------------------------------------------------
/images/originals/gitlens-logo-2000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-logo-2000.png
--------------------------------------------------------------------------------
/images/originals/gitlens-logo-256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-logo-256.png
--------------------------------------------------------------------------------
/images/originals/gitlens-logo-500.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-logo-500.png
--------------------------------------------------------------------------------
/images/originals/gitlens-logo.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-logo.ai
--------------------------------------------------------------------------------
/images/originals/gitlens-logo.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-logo.pdn
--------------------------------------------------------------------------------
/images/originals/gitlens-mono-inverted.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-mono-inverted.pdn
--------------------------------------------------------------------------------
/images/originals/gitlens-mono.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-mono.pdn
--------------------------------------------------------------------------------
/images/originals/gitlens.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens.pdn
--------------------------------------------------------------------------------
/images/originals/heatmap.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/heatmap.pdn
--------------------------------------------------------------------------------
/images/originals/line-history-view.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/line-history-view.pdn
--------------------------------------------------------------------------------
/images/originals/remotes-view.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/remotes-view.pdn
--------------------------------------------------------------------------------
/images/originals/repositories-view.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/repositories-view.pdn
--------------------------------------------------------------------------------
/images/originals/search-and-compare-view.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/search-and-compare-view.pdn
--------------------------------------------------------------------------------
/images/originals/stashes-view.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/stashes-view.pdn
--------------------------------------------------------------------------------
/images/originals/status-bar.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/status-bar.pdn
--------------------------------------------------------------------------------
/images/originals/tags-view.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/tags-view.pdn
--------------------------------------------------------------------------------
/images/originals/worktrees-view.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/worktrees-view.pdn
--------------------------------------------------------------------------------
/patches/debug.js:
--------------------------------------------------------------------------------
1 | export default function () {
2 | return function () {};
3 | }
4 |
--------------------------------------------------------------------------------
/patches/tr46.js:
--------------------------------------------------------------------------------
1 | function toASCII(d) {
2 | return d;
3 | }
4 | module.exports = { toASCII };
5 |
--------------------------------------------------------------------------------
/patches/whatwg-url.js:
--------------------------------------------------------------------------------
1 | exports.URL = require('url').URL;
2 |
--------------------------------------------------------------------------------
/resources/icons.fig:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/resources/icons.fig
--------------------------------------------------------------------------------
/src/@types/bb.d.ts:
--------------------------------------------------------------------------------
1 | export interface ChartWithInternal {
2 | internal: ChartInternal;
3 | }
4 |
5 | export interface ChartInternal {
6 | showGridFocus(data?: DataItem[]): void;
7 | hideGridFocus(): void;
8 |
9 | setExpand?(i: number, id: string | null, reset: boolean): void;
10 | toggleShape?(that: object | null, d: DataItem, i: number): void;
11 | }
12 |
--------------------------------------------------------------------------------
/src/@types/vscode.git.resources.d.ts:
--------------------------------------------------------------------------------
1 | import type { SourceControlResourceState } from 'vscode';
2 | import type { Status as ScmStatus } from '../@types/vscode.git.enums.ts';
3 | import type { ScmResourceGroupType } from '../@types/vscode.git.resources.enums';
4 |
5 | export interface ScmResource extends SourceControlResourceState {
6 | readonly resourceGroupType?: ScmResourceGroupType;
7 | readonly type?: ScmStatus;
8 | }
9 |
--------------------------------------------------------------------------------
/src/@types/vscode.git.resources.enums.ts:
--------------------------------------------------------------------------------
1 | export { Status as ScmStatus } from './vscode.git.enums';
2 |
3 | export const enum ScmResourceGroupType {
4 | Merge,
5 | Index,
6 | WorkingTree,
7 | }
8 |
--------------------------------------------------------------------------------
/src/@types/vscode.git.timeline.d.ts:
--------------------------------------------------------------------------------
1 | declare module 'vscode' {
2 | export interface GitTimelineItem extends TimelineItem {
3 | readonly ref: string;
4 | readonly previousRef: string;
5 | readonly message: string;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/@types/vscode.git.uri.ts:
--------------------------------------------------------------------------------
1 | import { Uri } from 'vscode';
2 | import { Schemes } from '../constants';
3 |
4 | export interface GitUriQuery {
5 | path: string;
6 | ref: string;
7 |
8 | decoration?: string;
9 | }
10 |
11 | export function getQueryDataFromScmGitUri(uri: Uri): GitUriQuery | undefined {
12 | if (uri.scheme === Schemes.Git) {
13 | try {
14 | return JSON.parse(uri.query) as GitUriQuery;
15 | } catch {}
16 | }
17 | return undefined;
18 | }
19 |
--------------------------------------------------------------------------------
/src/@types/vscode.iconpath.d.ts:
--------------------------------------------------------------------------------
1 | import type { ThemeIcon, Uri } from 'vscode';
2 |
3 | export type IconPath = { light: Uri; dark: Uri } | ThemeIcon;
4 |
--------------------------------------------------------------------------------
/src/commands/addAuthors.ts:
--------------------------------------------------------------------------------
1 | import type { SourceControl } from 'vscode';
2 | import type { Container } from '../container';
3 | import { executeGitCommand } from '../git/actions';
4 | import { command } from '../system/-webview/command';
5 | import { GlCommandBase } from './commandBase';
6 |
7 | @command()
8 | export class AddAuthorsCommand extends GlCommandBase {
9 | constructor(private readonly container: Container) {
10 | super('gitlens.addAuthors');
11 | }
12 |
13 | execute(sourceControl: SourceControl): Promise {
14 | let repo;
15 | if (sourceControl?.rootUri != null) {
16 | repo = this.container.git.getRepository(sourceControl.rootUri);
17 | }
18 |
19 | return executeGitCommand({
20 | command: 'co-authors',
21 | state: { repo: repo, contributors: undefined },
22 | });
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/commands/commandBase.utils.ts:
--------------------------------------------------------------------------------
1 | import type { TextEditor, Uri } from 'vscode';
2 |
3 | export function getCommandUri(uri?: Uri, editor?: TextEditor): Uri | undefined {
4 | // Always use the editor.uri (if we have one), so we are correct for a split diff
5 | return editor?.document?.uri ?? uri;
6 | }
7 |
--------------------------------------------------------------------------------
/src/commands/rebaseEditor.ts:
--------------------------------------------------------------------------------
1 | import type { Container } from '../container';
2 | import { command } from '../system/-webview/command';
3 | import { GlCommandBase } from './commandBase';
4 |
5 | @command()
6 | export class DisableRebaseEditorCommand extends GlCommandBase {
7 | constructor(private readonly container: Container) {
8 | super('gitlens.disableRebaseEditor');
9 | }
10 |
11 | execute(): Promise {
12 | return this.container.rebaseEditor.setEnabled(false);
13 | }
14 | }
15 |
16 | @command()
17 | export class EnableRebaseEditorCommand extends GlCommandBase {
18 | constructor(private readonly container: Container) {
19 | super('gitlens.enableRebaseEditor');
20 | }
21 |
22 | execute(): Promise {
23 | return this.container.rebaseEditor.setEnabled(true);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/commands/refreshHover.ts:
--------------------------------------------------------------------------------
1 | import type { Container } from '../container';
2 | import { command, executeCoreCommand } from '../system/-webview/command';
3 | import { GlCommandBase } from './commandBase';
4 |
5 | @command()
6 | export class RefreshHoverCommand extends GlCommandBase {
7 | constructor(private readonly container: Container) {
8 | super('gitlens.refreshHover');
9 | }
10 |
11 | async execute(): Promise {
12 | // TODO@eamodio figure out how to really refresh/update a hover
13 | await executeCoreCommand('editor.action.showHover');
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/commands/showQuickRepoStatus.ts:
--------------------------------------------------------------------------------
1 | import type { Container } from '../container';
2 | import { executeGitCommand } from '../git/actions';
3 | import { command } from '../system/-webview/command';
4 | import { GlCommandBase } from './commandBase';
5 |
6 | export interface ShowQuickRepoStatusCommandArgs {
7 | repoPath?: string;
8 | }
9 |
10 | @command()
11 | export class ShowQuickRepoStatusCommand extends GlCommandBase {
12 | constructor(private readonly container: Container) {
13 | super('gitlens.showQuickRepoStatus');
14 | }
15 |
16 | async execute(args?: ShowQuickRepoStatusCommandArgs): Promise {
17 | return executeGitCommand({
18 | command: 'status',
19 | state: {
20 | repo: args?.repoPath,
21 | },
22 | });
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/commands/showQuickStashList.ts:
--------------------------------------------------------------------------------
1 | import type { Container } from '../container';
2 | import { executeGitCommand } from '../git/actions';
3 | import { command } from '../system/-webview/command';
4 | import { GlCommandBase } from './commandBase';
5 |
6 | export interface ShowQuickStashListCommandArgs {
7 | repoPath?: string;
8 | }
9 |
10 | @command()
11 | export class ShowQuickStashListCommand extends GlCommandBase {
12 | constructor(private readonly container: Container) {
13 | super('gitlens.showQuickStashList');
14 | }
15 |
16 | execute(args?: ShowQuickStashListCommandArgs): Promise {
17 | return executeGitCommand({
18 | command: 'stash',
19 | state: {
20 | subcommand: 'list',
21 | repo: args?.repoPath,
22 | },
23 | });
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/commands/switchAIModel.ts:
--------------------------------------------------------------------------------
1 | import type { Source } from '../constants.telemetry';
2 | import type { Container } from '../container';
3 | import { command } from '../system/-webview/command';
4 | import { GlCommandBase } from './commandBase';
5 |
6 | @command()
7 | export class SwitchAIModelCommand extends GlCommandBase {
8 | constructor(private readonly container: Container) {
9 | super('gitlens.ai.switchProvider', ['gitlens.switchAIModel']);
10 | }
11 |
12 | async execute(source?: Source): Promise {
13 | await this.container.ai.switchModel(source);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/commands/toggleCodeLens.ts:
--------------------------------------------------------------------------------
1 | import type { Container } from '../container';
2 | import { command } from '../system/-webview/command';
3 | import { GlCommandBase } from './commandBase';
4 |
5 | @command()
6 | export class ToggleCodeLensCommand extends GlCommandBase {
7 | constructor(private readonly container: Container) {
8 | super('gitlens.toggleCodeLens');
9 | }
10 |
11 | execute(): void {
12 | this.container.codeLens.toggleCodeLens();
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/emojis.ts:
--------------------------------------------------------------------------------
1 | import { emojis as compressed } from './emojis.generated';
2 | import { decompressFromBase64LZString } from './system/string';
3 |
4 | const emojiRegex = /(^|\s):([-+_a-z0-9]+):($|\s)/g;
5 |
6 | let emojis: Record | undefined = undefined;
7 | export function emojify(message: string): string {
8 | if (emojis == null) {
9 | emojis = JSON.parse(decompressFromBase64LZString(compressed));
10 | }
11 | return message.replace(emojiRegex, (s, $1, code, $3) => (emojis![code] ? `${$1}${emojis![code]}${$3}` : s));
12 | }
13 |
--------------------------------------------------------------------------------
/src/env/browser/base64.ts:
--------------------------------------------------------------------------------
1 | const { fromCharCode } = String;
2 | const textEncoder = new TextEncoder();
3 |
4 | export function base64(s: string): string;
5 | export function base64(bytes: Uint8Array): string;
6 | export function base64(data: string | Uint8Array): string {
7 | const bytes = typeof data === 'string' ? textEncoder.encode(data) : data;
8 |
9 | let output = '';
10 | for (let i = 0, { length } = bytes; i < length; i++) {
11 | output += fromCharCode(bytes[i]);
12 | }
13 | return globalThis.btoa(output);
14 | }
15 |
16 | export function fromBase64(s: string): Uint8Array {
17 | const decoded = globalThis.atob(s);
18 |
19 | const len = decoded.length;
20 | const bytes = new Uint8Array(len);
21 | for (let i = 0; i < len; i++) {
22 | bytes[i] = decoded.charCodeAt(i);
23 | }
24 | return bytes;
25 | }
26 |
--------------------------------------------------------------------------------
/src/env/browser/crypto.ts:
--------------------------------------------------------------------------------
1 | import { base64 } from './base64';
2 | import { md5 as _md5 } from './md5';
3 |
4 | export function getNonce(): string {
5 | return base64(globalThis.crypto.getRandomValues(new Uint8Array(16)));
6 | }
7 |
8 | export function md5(data: string, encoding: 'base64' | 'hex' = 'hex'): string {
9 | return _md5(data, encoding);
10 | }
11 |
12 | export function uuid(): string {
13 | return globalThis.crypto.randomUUID();
14 | }
15 |
--------------------------------------------------------------------------------
/src/env/browser/hrtime.ts:
--------------------------------------------------------------------------------
1 | export function hrtime(time?: [number, number]): [number, number] {
2 | const now = performance.now() * 1e-3;
3 | let seconds = Math.floor(now);
4 | let nanoseconds = Math.floor((now % 1) * 1e9);
5 | if (time !== undefined) {
6 | seconds = seconds - time[0];
7 | nanoseconds = nanoseconds - time[1];
8 | if (nanoseconds < 0) {
9 | seconds--;
10 | nanoseconds += 1e9;
11 | }
12 | }
13 | return [seconds, nanoseconds];
14 | }
15 |
--------------------------------------------------------------------------------
/src/env/browser/json.ts:
--------------------------------------------------------------------------------
1 | export function loggingJsonReplacer(key: string, value: unknown): unknown {
2 | if (key === '' || value == null || typeof value !== 'object') return value;
3 |
4 | if (value instanceof Error) return String(value);
5 |
6 | return value;
7 | }
8 |
9 | export function serializeJsonReplacer(this: any, key: string, value: unknown): unknown {
10 | if (value instanceof Date) return value.getTime();
11 | if (value instanceof Map || value instanceof Set) return [...value.entries()];
12 | if (value instanceof Function || value instanceof Error) return undefined;
13 | if (value instanceof RegExp) return value.toString();
14 |
15 | const original = this[key];
16 | return original instanceof Date ? original.getTime() : value;
17 | }
18 |
--------------------------------------------------------------------------------
/src/env/node/base64.ts:
--------------------------------------------------------------------------------
1 | export function base64(s: string): string;
2 | export function base64(bytes: Uint8Array): string;
3 | export function base64(data: string | Uint8Array): string {
4 | return Buffer.from(data).toString('base64');
5 | }
6 |
7 | export function fromBase64(s: string): Uint8Array {
8 | return Buffer.from(s, 'base64') as unknown as Uint8Array;
9 | }
10 |
--------------------------------------------------------------------------------
/src/env/node/crypto.ts:
--------------------------------------------------------------------------------
1 | import { createHash, randomBytes, randomUUID } from 'crypto';
2 |
3 | export function getNonce(): string {
4 | return randomBytes(16).toString('base64');
5 | }
6 |
7 | export function md5(data: string, encoding: 'base64' | 'hex' = 'hex'): string {
8 | return createHash('md5').update(data).digest(encoding);
9 | }
10 |
11 | export function uuid(): string {
12 | return randomUUID();
13 | }
14 |
--------------------------------------------------------------------------------
/src/env/node/hex.ts:
--------------------------------------------------------------------------------
1 | export function encodeUtf8Hex(s: string): string {
2 | return Buffer.from(s, 'utf8').toString('hex');
3 | }
4 |
5 | export function decodeUtf8Hex(hex: string): string {
6 | return Buffer.from(hex, 'hex').toString('utf8');
7 | }
8 |
--------------------------------------------------------------------------------
/src/env/node/hrtime.ts:
--------------------------------------------------------------------------------
1 | export { hrtime } from 'process';
2 |
--------------------------------------------------------------------------------
/src/git/gitUri.authority.ts:
--------------------------------------------------------------------------------
1 | import { decodeUtf8Hex, encodeUtf8Hex } from '@env/hex';
2 |
3 | export function decodeGitLensRevisionUriAuthority(authority: string): T {
4 | return JSON.parse(decodeUtf8Hex(authority)) as T;
5 | }
6 |
7 | export function encodeGitLensRevisionUriAuthority(metadata: T): string {
8 | return encodeUtf8Hex(JSON.stringify(metadata));
9 | }
10 |
11 | export function decodeRemoteHubAuthority(authority: string): { scheme: string; metadata: T | undefined } {
12 | const [scheme, encoded] = authority.split('+');
13 |
14 | let metadata: T | undefined;
15 | if (encoded) {
16 | try {
17 | const data = JSON.parse(decodeUtf8Hex(encoded));
18 | metadata = data as T;
19 | } catch {}
20 | }
21 |
22 | return { scheme: scheme, metadata: metadata };
23 | }
24 |
--------------------------------------------------------------------------------
/src/git/location/repositorylocationProvider.ts:
--------------------------------------------------------------------------------
1 | import type { Disposable } from 'vscode';
2 |
3 | export interface RepositoryLocationProvider extends Disposable {
4 | getLocation(
5 | remoteUrl: string | undefined,
6 | repoInfo?: { provider?: string; owner?: string; repoName?: string },
7 | ): Promise;
8 |
9 | storeLocation(
10 | path: string,
11 | remoteUrl: string | undefined,
12 | repoInfo?: { provider?: string; owner?: string; repoName?: string },
13 | ): Promise;
14 | }
15 |
--------------------------------------------------------------------------------
/src/git/models/author.ts:
--------------------------------------------------------------------------------
1 | import type { ProviderReference } from './remoteProvider';
2 |
3 | export interface CommitAuthor {
4 | provider: ProviderReference;
5 | readonly id: string | undefined;
6 | readonly username: string | undefined;
7 | name: string | undefined;
8 | email: string | undefined;
9 | avatarUrl: string | undefined;
10 | }
11 |
12 | export interface UnidentifiedAuthor extends CommitAuthor {
13 | readonly id: undefined;
14 | readonly username: undefined;
15 | }
16 |
17 | export interface Account extends CommitAuthor {
18 | readonly id: string;
19 | }
20 |
--------------------------------------------------------------------------------
/src/git/models/blame.ts:
--------------------------------------------------------------------------------
1 | import type { GitCommit, GitCommitLine } from './commit';
2 |
3 | export interface GitBlame {
4 | readonly repoPath: string;
5 | readonly authors: Map;
6 | readonly commits: Map;
7 | readonly lines: GitCommitLine[];
8 | }
9 |
10 | export interface GitBlameAuthor {
11 | name: string;
12 | lineCount: number;
13 | }
14 |
15 | export interface GitBlameLine {
16 | readonly author?: GitBlameAuthor;
17 | readonly commit: GitCommit;
18 | readonly line: GitCommitLine;
19 | }
20 |
--------------------------------------------------------------------------------
/src/git/models/defaultBranch.ts:
--------------------------------------------------------------------------------
1 | import type { ProviderReference } from './remoteProvider';
2 |
3 | export interface DefaultBranch {
4 | provider: ProviderReference;
5 | name: string;
6 | }
7 |
--------------------------------------------------------------------------------
/src/git/models/file.ts:
--------------------------------------------------------------------------------
1 | import type { GitCommit } from './commit';
2 | import type { GitFileConflictStatus, GitFileIndexStatus, GitFileStatus, GitFileWorkingTreeStatus } from './fileStatus';
3 |
4 | export interface GitFile {
5 | readonly path: string;
6 | readonly originalPath?: string;
7 | status: GitFileStatus;
8 | readonly repoPath?: string;
9 |
10 | readonly conflictStatus?: GitFileConflictStatus;
11 | readonly indexStatus?: GitFileIndexStatus;
12 | readonly workingTreeStatus?: GitFileWorkingTreeStatus;
13 | }
14 |
15 | export interface GitFileWithCommit extends GitFile {
16 | readonly commit: GitCommit;
17 | }
18 |
--------------------------------------------------------------------------------
/src/git/models/fileStatus.ts:
--------------------------------------------------------------------------------
1 | export declare type GitFileStatus = GitFileConflictStatus | GitFileIndexStatus | GitFileWorkingTreeStatus;
2 |
3 | export const enum GitFileConflictStatus {
4 | AddedByBoth = 'AA',
5 | AddedByUs = 'AU',
6 | AddedByThem = 'UA',
7 | DeletedByBoth = 'DD',
8 | DeletedByUs = 'DU',
9 | DeletedByThem = 'UD',
10 | ModifiedByBoth = 'UU',
11 | }
12 |
13 | export const enum GitFileIndexStatus {
14 | Modified = 'M',
15 | Added = 'A',
16 | Deleted = 'D',
17 | Renamed = 'R',
18 | Copied = 'C',
19 | Unchanged = '.',
20 | Untracked = '?',
21 | Ignored = '!',
22 | UpdatedButUnmerged = 'U',
23 | }
24 |
25 | export const enum GitFileWorkingTreeStatus {
26 | Modified = 'M',
27 | Added = 'A',
28 | Deleted = 'D',
29 | Untracked = '?',
30 | Ignored = '!',
31 | }
32 |
--------------------------------------------------------------------------------
/src/git/models/issueOrPullRequest.ts:
--------------------------------------------------------------------------------
1 | import type { ProviderReference } from './remoteProvider';
2 |
3 | export interface IssueOrPullRequest {
4 | readonly type: IssueOrPullRequestType;
5 | readonly provider: ProviderReference;
6 | readonly id: string;
7 | readonly nodeId: string | undefined;
8 | readonly title: string;
9 | readonly url: string;
10 | readonly createdDate: Date;
11 | readonly updatedDate: Date;
12 | readonly closedDate?: Date;
13 | readonly closed: boolean;
14 | readonly state: IssueOrPullRequestState;
15 | readonly commentsCount?: number;
16 | readonly thumbsUpCount?: number;
17 | }
18 |
19 | export type IssueOrPullRequestType = 'issue' | 'pullrequest';
20 | export type IssueOrPullRequestState = 'opened' | 'closed' | 'merged';
21 |
--------------------------------------------------------------------------------
/src/git/models/log.ts:
--------------------------------------------------------------------------------
1 | import type { SearchQueryFilters } from '../search';
2 | import type { GitCommit } from './commit';
3 |
4 | export interface GitLog {
5 | readonly repoPath: string;
6 | readonly commits: Map;
7 | readonly count: number;
8 |
9 | readonly sha: string | undefined;
10 | readonly searchFilters?: SearchQueryFilters;
11 |
12 | readonly limit: number | undefined;
13 | readonly startingCursor?: string;
14 | readonly endingCursor?: string;
15 | readonly hasMore: boolean;
16 |
17 | readonly pagedCommits?: () => Map;
18 |
19 | query?(limit: number | undefined): Promise;
20 | more?(limit: number | { until?: string } | undefined): Promise;
21 | }
22 |
--------------------------------------------------------------------------------
/src/git/models/mergeConflict.ts:
--------------------------------------------------------------------------------
1 | export interface MergeConflict {
2 | repoPath: string;
3 | branch: string;
4 | target: string;
5 | files: MergeConflictFile[];
6 | }
7 |
8 | export interface MergeConflictFile {
9 | path: string;
10 | }
11 |
--------------------------------------------------------------------------------
/src/git/models/patch.ts:
--------------------------------------------------------------------------------
1 | import type { Uri } from 'vscode';
2 | import type { GitCommit } from './commit';
3 | import type { GitDiffFiles } from './diff';
4 | import type { Repository } from './repository';
5 |
6 | /**
7 | * For a single commit `to` is the commit SHA and `from` is its parent `^`
8 | * For a commit range `to` is the tip SHA and `from` is the base SHA
9 | * For a WIP `to` is the "uncommitted" SHA and `from` is the current HEAD SHA
10 | */
11 | export interface PatchRevisionRange {
12 | from: string;
13 | to: string;
14 | }
15 |
16 | export interface GitPatch {
17 | readonly type: 'local';
18 | readonly contents: string;
19 |
20 | readonly id?: undefined;
21 | readonly uri?: Uri;
22 |
23 | baseRef?: string;
24 | commit?: GitCommit;
25 | files?: GitDiffFiles['files'];
26 | repository?: Repository;
27 | }
28 |
--------------------------------------------------------------------------------
/src/git/models/pathMapping.ts:
--------------------------------------------------------------------------------
1 | export type LocalRepoDataMap = Record<
2 | string /* key can be remote url, provider/owner/name, or first commit SHA*/,
3 | RepoLocalData
4 | >;
5 |
6 | export interface RepoLocalData {
7 | paths: string[];
8 | name?: string;
9 | hostName?: string;
10 | owner?: string;
11 | hostingServiceType?: string;
12 | }
13 |
--------------------------------------------------------------------------------
/src/git/models/remoteProvider.ts:
--------------------------------------------------------------------------------
1 | export interface ProviderReference {
2 | readonly id: string;
3 | readonly name: string;
4 | readonly domain: string;
5 | readonly icon: string;
6 | }
7 |
8 | export interface Provider extends ProviderReference {
9 | getIgnoreSSLErrors(): boolean | 'force';
10 | reauthenticate(): Promise;
11 | trackRequestException(): void;
12 | }
13 |
--------------------------------------------------------------------------------
/src/git/models/repositoryMetadata.ts:
--------------------------------------------------------------------------------
1 | import type { ProviderReference } from './remoteProvider';
2 |
3 | export interface RepositoryMetadata {
4 | provider: ProviderReference;
5 | owner: string;
6 | name: string;
7 | isFork: boolean;
8 | parent?: {
9 | owner: string;
10 | name: string;
11 | };
12 | }
13 |
--------------------------------------------------------------------------------
/src/git/models/repositoryShape.ts:
--------------------------------------------------------------------------------
1 | import type { SupportedCloudIntegrationIds } from '../../constants.integrations';
2 | import type { RemoteProviderSupportedFeatures } from '../remotes/remoteProvider';
3 |
4 | export interface RepositoryShape {
5 | id: string;
6 | name: string;
7 | path: string;
8 | uri: string;
9 | virtual: boolean;
10 |
11 | provider?: {
12 | name: string;
13 | icon?: string;
14 | integration?: { id: SupportedCloudIntegrationIds; connected: boolean };
15 | supportedFeatures: RemoteProviderSupportedFeatures;
16 | url?: string;
17 | };
18 | }
19 |
--------------------------------------------------------------------------------
/src/git/models/resourceDescriptor.ts:
--------------------------------------------------------------------------------
1 | export type ResourceDescriptor = { key: string } & Record;
2 |
3 | export type IssueResourceDescriptor = ResourceDescriptor & {
4 | id: string;
5 | name: string;
6 | };
7 |
8 | export type RepositoryDescriptor = ResourceDescriptor & {
9 | owner: string;
10 | name: string;
11 | };
12 |
--------------------------------------------------------------------------------
/src/git/models/revision.ts:
--------------------------------------------------------------------------------
1 | export const deletedOrMissing = '0000000000000000000000000000000000000000-';
2 | export const uncommitted = '0000000000000000000000000000000000000000';
3 | export const uncommittedStaged = '0000000000000000000000000000000000000000:';
4 |
5 | export type GitRevisionRange =
6 | | `${GitRevisionRangeNotation}${string}`
7 | | `${string}${GitRevisionRangeNotation}`
8 | | `${string}${GitRevisionRangeNotation}${string}`;
9 |
10 | export type GitRevisionRangeNotation = '..' | '...';
11 |
--------------------------------------------------------------------------------
/src/git/models/shortlog.ts:
--------------------------------------------------------------------------------
1 | import type { GitContributor } from './contributor';
2 |
3 | export interface GitShortLog {
4 | readonly repoPath: string;
5 | readonly contributors: GitContributor[];
6 | }
7 |
--------------------------------------------------------------------------------
/src/git/models/stash.ts:
--------------------------------------------------------------------------------
1 | import type { GitStashCommit } from './commit';
2 |
3 | export interface GitStash {
4 | readonly repoPath: string;
5 | readonly stashes: Map;
6 | }
7 |
--------------------------------------------------------------------------------
/src/git/models/tree.ts:
--------------------------------------------------------------------------------
1 | export interface GitTreeEntry {
2 | ref: string;
3 | oid: string;
4 | path: string;
5 | size: number;
6 | type: 'blob' | 'tree';
7 | }
8 |
9 | export interface GitLsFilesEntry {
10 | mode: string;
11 | oid: string;
12 | path: string;
13 | stage: number;
14 | }
15 |
--------------------------------------------------------------------------------
/src/git/models/user.ts:
--------------------------------------------------------------------------------
1 | export interface GitUser {
2 | name: string | undefined;
3 | email: string | undefined;
4 |
5 | id?: string | undefined;
6 | username?: string | undefined;
7 | }
8 |
--------------------------------------------------------------------------------
/src/git/utils/fetch.utils.ts:
--------------------------------------------------------------------------------
1 | const millisecondsPerMinute = 60 * 1000;
2 | const millisecondsPerHour = 60 * 60 * 1000;
3 | export const millisecondsPerDay = 24 * 60 * 60 * 1000;
4 |
5 | export function getLastFetchedUpdateInterval(lastFetched: number): number {
6 | const timeDiff = Date.now() - lastFetched;
7 | return timeDiff < millisecondsPerDay
8 | ? (timeDiff < millisecondsPerHour ? millisecondsPerMinute : millisecondsPerHour) / 2
9 | : 0;
10 | }
11 |
--------------------------------------------------------------------------------
/src/git/utils/file.utils.ts:
--------------------------------------------------------------------------------
1 | import type { GitFile } from '../models/file';
2 |
3 | export function isGitFile(file: any | undefined): file is GitFile {
4 | return (
5 | file != null &&
6 | 'fileName' in file &&
7 | typeof file.fileName === 'string' &&
8 | 'status' in file &&
9 | typeof file.status === 'string' &&
10 | file.status.length === 1
11 | );
12 | }
13 |
--------------------------------------------------------------------------------
/src/git/utils/issueOrPullRequest.utils.ts:
--------------------------------------------------------------------------------
1 | import type { IssueOrPullRequest } from '../models/issueOrPullRequest';
2 |
3 | export function serializeIssueOrPullRequest(value: IssueOrPullRequest): IssueOrPullRequest {
4 | const serialized: IssueOrPullRequest = {
5 | type: value.type,
6 | provider: {
7 | id: value.provider.id,
8 | name: value.provider.name,
9 | domain: value.provider.domain,
10 | icon: value.provider.icon,
11 | },
12 | id: value.id,
13 | nodeId: value.nodeId,
14 | title: value.title,
15 | url: value.url,
16 | createdDate: value.createdDate,
17 | updatedDate: value.updatedDate,
18 | closedDate: value.closedDate,
19 | closed: value.closed,
20 | state: value.state,
21 | };
22 | return serialized;
23 | }
24 |
--------------------------------------------------------------------------------
/src/git/utils/pausedOperationStatus.utils.ts:
--------------------------------------------------------------------------------
1 | export const pausedOperationStatusStringsByType = {
2 | 'cherry-pick': {
3 | label: 'Cherry picking',
4 | conflicts: 'Resolve conflicts to continue cherry picking',
5 | directionality: 'into',
6 | },
7 | merge: {
8 | label: 'Merging',
9 | conflicts: 'Resolve conflicts to continue merging',
10 | directionality: 'into',
11 | },
12 | rebase: {
13 | label: 'Rebasing',
14 | conflicts: 'Resolve conflicts to continue rebasing',
15 | directionality: 'onto',
16 | pending: 'Pending rebase of',
17 | },
18 | revert: {
19 | label: 'Reverting',
20 | conflicts: 'Resolve conflicts to continue reverting',
21 | directionality: 'in',
22 | },
23 | } as const;
24 |
--------------------------------------------------------------------------------
/src/git/utils/resourceDescriptor.utils.ts:
--------------------------------------------------------------------------------
1 | import type { IssueResourceDescriptor, RepositoryDescriptor, ResourceDescriptor } from '../models/resourceDescriptor';
2 |
3 | export function isRepositoryDescriptor(resource: ResourceDescriptor): resource is RepositoryDescriptor {
4 | return (
5 | 'key' in resource &&
6 | resource.key != null &&
7 | 'owner' in resource &&
8 | resource.owner != null &&
9 | 'name' in resource &&
10 | resource.name != null
11 | );
12 | }
13 | export function isIssueResourceDescriptor(resource: ResourceDescriptor): resource is IssueResourceDescriptor {
14 | return (
15 | 'key' in resource &&
16 | resource.key != null &&
17 | 'id' in resource &&
18 | resource.id != null &&
19 | 'name' in resource &&
20 | resource.name != null
21 | );
22 | }
23 |
--------------------------------------------------------------------------------
/src/git/utils/tag.utils.ts:
--------------------------------------------------------------------------------
1 | import type { GitReference, GitTagReference } from '../models/reference';
2 |
3 | export function getTagId(repoPath: string, name: string): string {
4 | return `${repoPath}|tags/${name}`;
5 | }
6 |
7 | export function isOfTagRefType(tag: GitReference | undefined): tag is GitTagReference {
8 | return tag?.refType === 'tag';
9 | }
10 |
11 | const tagsPrefixRegex = /^(refs\/)?tags\//i;
12 |
13 | export function parseRefName(refName: string): { name: string } {
14 | // Strip off refs/tags/
15 | const name = refName.replace(tagsPrefixRegex, '');
16 | return { name: name };
17 | }
18 |
--------------------------------------------------------------------------------
/src/git/utils/user.utils.ts:
--------------------------------------------------------------------------------
1 | import type { GitUser } from '../models/user';
2 |
3 | export function isUserMatch(
4 | user: GitUser | undefined,
5 | name: string | undefined,
6 | email: string | undefined,
7 | username?: string | undefined,
8 | ): boolean {
9 | return (
10 | user != null &&
11 | // Name or e-mail is provided
12 | (user.name != null || user.email != null || user.username != null) &&
13 | // Match on name if provided
14 | (user.name == null || user.name === name) &&
15 | // Match on email if provided
16 | (user.email == null || user.email === email) &&
17 | // Match on username if provided
18 | (user.username == null || user.username === username)
19 | );
20 | }
21 |
--------------------------------------------------------------------------------
/src/git/utils/worktree.utils.ts:
--------------------------------------------------------------------------------
1 | export function getWorktreeId(repoPath: string, name: string): string {
2 | return `${repoPath}|worktrees/${name}`;
3 | }
4 |
--------------------------------------------------------------------------------
/src/plus/gk/utils/-webview/subscription.utils.ts:
--------------------------------------------------------------------------------
1 | import { configuration } from '../../../../system/-webview/configuration';
2 |
3 | export function getConfiguredActiveOrganizationId(): string | undefined {
4 | return (
5 | configuration.get('gitkraken.activeOrganizationId') ??
6 | // Deprecated: Use `gitlens.gitkraken.activeOrganizationId` instead
7 | configuration.getAny('gitlens.gitKraken.activeOrganizationId') ??
8 | undefined
9 | );
10 | }
11 |
12 | export async function updateActiveOrganizationId(orgId: string | undefined): Promise {
13 | await configuration.updateEffective('gitkraken.activeOrganizationId', orgId);
14 | }
15 |
--------------------------------------------------------------------------------
/src/plus/integrations/authentication/azureDevOps.ts:
--------------------------------------------------------------------------------
1 | import { GitCloudHostIntegrationId } from '../../../constants.integrations';
2 | import { CloudIntegrationAuthenticationProvider } from './integrationAuthenticationProvider';
3 |
4 | export class AzureDevOpsAuthenticationProvider extends CloudIntegrationAuthenticationProvider {
5 | protected override get authProviderId(): GitCloudHostIntegrationId.AzureDevOps {
6 | return GitCloudHostIntegrationId.AzureDevOps;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/plus/integrations/authentication/jira.ts:
--------------------------------------------------------------------------------
1 | import { IssuesCloudHostIntegrationId } from '../../../constants.integrations';
2 | import { CloudIntegrationAuthenticationProvider } from './integrationAuthenticationProvider';
3 |
4 | export class JiraAuthenticationProvider extends CloudIntegrationAuthenticationProvider {
5 | protected override get authProviderId(): IssuesCloudHostIntegrationId.Jira {
6 | return IssuesCloudHostIntegrationId.Jira;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/plus/launchpad/utils/-webview/launchpad.utils.ts:
--------------------------------------------------------------------------------
1 | import type { Container } from '../../../../container';
2 | import { configuration } from '../../../../system/-webview/configuration';
3 | import type { LaunchpadSummaryResult } from '../../launchpadIndicator';
4 | import { generateLaunchpadSummary } from '../../launchpadIndicator';
5 | import type { LaunchpadGroup } from '../../models/launchpad';
6 |
7 | export async function getLaunchpadSummary(container: Container): Promise {
8 | const result = await container.launchpad.getCategorizedItems();
9 |
10 | if (result.error != null) {
11 | return {
12 | error: result.error,
13 | };
14 | }
15 |
16 | const groups: LaunchpadGroup[] = configuration.get('launchpad.indicator.groups') ?? [];
17 | return generateLaunchpadSummary(result.items, groups);
18 | }
19 |
--------------------------------------------------------------------------------
/src/plus/repos/sharedGkStorageLocationProvider.ts:
--------------------------------------------------------------------------------
1 | import type { Uri } from 'vscode';
2 | import type { UnifiedAsyncDisposable } from '../../system/unifiedDisposable';
3 |
4 | export interface SharedGkStorageLocationProvider {
5 | getSharedRepositoryLocationFileUri(): Promise;
6 | getSharedCloudWorkspaceMappingFileUri(): Promise;
7 | getSharedLocalWorkspaceMappingFileUri(): Promise;
8 |
9 | acquireSharedStorageWriteLock(): Promise;
10 | releaseSharedStorageWriteLock(): Promise;
11 | }
12 |
--------------------------------------------------------------------------------
/src/system/-webview/timeline.ts:
--------------------------------------------------------------------------------
1 | import type { GitTimelineItem, TimelineItem } from 'vscode';
2 |
3 | function isTimelineItem(item: any): item is TimelineItem {
4 | if (item == null) return false;
5 |
6 | return (item as TimelineItem).timestamp != null && (item as TimelineItem).label != null;
7 | }
8 |
9 | export function isGitTimelineItem(item: any): item is GitTimelineItem {
10 | if (item == null) return false;
11 |
12 | return (
13 | isTimelineItem(item) &&
14 | (item as GitTimelineItem).ref != null &&
15 | (item as GitTimelineItem).previousRef != null &&
16 | (item as GitTimelineItem).message != null
17 | );
18 | }
19 |
--------------------------------------------------------------------------------
/src/system/__tests__/iterable.test.ts:
--------------------------------------------------------------------------------
1 | import * as assert from 'assert';
2 | import { join } from '../iterable';
3 |
4 | suite('Iterable Test Suite', () => {
5 | test('join', () => {
6 | assert.strictEqual(join([1, 2, 3], ','), '1,2,3');
7 | assert.strictEqual(join([1, 2, 3], ''), '123');
8 | assert.strictEqual(join([], ''), '');
9 | assert.strictEqual(join([1], ''), '1');
10 | assert.strictEqual(join([1], ','), '1');
11 | assert.strictEqual(join([], ','), '');
12 | });
13 | });
14 |
--------------------------------------------------------------------------------
/src/system/brand.ts:
--------------------------------------------------------------------------------
1 | // eslint-disable-next-line @typescript-eslint/naming-convention
2 | declare const __brand: unique symbol;
3 | // eslint-disable-next-line @typescript-eslint/naming-convention
4 | declare const __base: unique symbol;
5 |
6 | type _Brand = { [__brand]: B; [__base]: Base };
7 | export type Branded = Base & _Brand;
8 | export type Brand> = B extends Branded ? B : never;
9 | export type Unbrand = T extends _Brand ? Base : never;
10 |
--------------------------------------------------------------------------------
/src/system/commands.ts:
--------------------------------------------------------------------------------
1 | import type { GlCommands } from '../constants.commands';
2 |
3 | export function createCommandLink(command: GlCommands, args?: T): string {
4 | if (args == null) return `command:${command}`;
5 |
6 | return `command:${command}?${encodeURIComponent(typeof args === 'string' ? args : JSON.stringify(args))}`;
7 | }
8 |
9 | export function createMarkdownCommandLink(command: GlCommands, args: T): string {
10 | if (args == null) return `command:${command}`;
11 |
12 | // Since we are using the command in a markdown link, we need to escape ()'s so they don't get interpreted as markdown
13 | return `command:${command}?${encodeURIComponent(typeof args === 'string' ? args : JSON.stringify(args)).replace(
14 | /([()])/g,
15 | '\\$1',
16 | )}`;
17 | }
18 |
--------------------------------------------------------------------------------
/src/system/counter.ts:
--------------------------------------------------------------------------------
1 | const maxSmallIntegerV8 = 2 ** 30 - 1; // Max number that can be stored in V8's smis (small integers)
2 |
3 | export type Counter = { readonly current: number; next(): number; reset(): void };
4 |
5 | export function getScopedCounter(): Counter {
6 | let counter = 0;
7 | return {
8 | get current() {
9 | return counter;
10 | },
11 | next: function () {
12 | if (counter === maxSmallIntegerV8) {
13 | counter = 0;
14 | }
15 | return ++counter;
16 | },
17 | reset: function () {
18 | counter = 0;
19 | },
20 | };
21 | }
22 |
--------------------------------------------------------------------------------
/src/system/encoding.ts:
--------------------------------------------------------------------------------
1 | export function encodeUrl(url: string): string;
2 | export function encodeUrl(url: string | undefined): string | undefined;
3 | export function encodeUrl(url: string | undefined): string | undefined {
4 | if (url == null) return undefined;
5 |
6 | // Not a fan of this, but it's hard to gauge previous encoding and this is the most common case
7 | return encodeURI(url.replace(/%20/g, ' '));
8 | }
9 |
--------------------------------------------------------------------------------
/src/system/logger.constants.ts:
--------------------------------------------------------------------------------
1 | export const slowCallWarningThreshold = 500;
2 |
3 | export type LogLevel = 'off' | 'error' | 'warn' | 'info' | 'debug';
4 |
--------------------------------------------------------------------------------
/src/system/uri.ts:
--------------------------------------------------------------------------------
1 | import type { Uri } from 'vscode';
2 |
3 | export function areUrisEqual(a: Uri | undefined, b: Uri | undefined): boolean {
4 | if (a === b) return true;
5 | if (a == null || b == null) return false;
6 |
7 | return a.toString() === b.toString();
8 | }
9 |
--------------------------------------------------------------------------------
/src/terminal.ts:
--------------------------------------------------------------------------------
1 | import type { Disposable, Terminal } from 'vscode';
2 | import { window } from 'vscode';
3 | import { Container } from './container';
4 |
5 | let _terminal: Terminal | undefined;
6 | let _disposable: Disposable | undefined;
7 |
8 | const extensionTerminalName = 'GitLens';
9 |
10 | export function ensureGitTerminal(): Terminal {
11 | if (_terminal == null) {
12 | _terminal = window.createTerminal(extensionTerminalName);
13 | _disposable = window.onDidCloseTerminal((e: Terminal) => {
14 | if (e === _terminal) {
15 | _terminal = undefined;
16 | _disposable?.dispose();
17 | _disposable = undefined;
18 | }
19 | });
20 |
21 | Container.instance.context.subscriptions.push(_disposable);
22 | }
23 |
24 | return _terminal;
25 | }
26 |
--------------------------------------------------------------------------------
/src/views/nodes/stashFileNode.ts:
--------------------------------------------------------------------------------
1 | import type { GitStashCommit } from '../../git/models/commit';
2 | import type { GitFile } from '../../git/models/file';
3 | import type { ViewsWithStashes } from '../viewBase';
4 | import type { ViewNode } from './abstract/viewNode';
5 | import { ContextValues } from './abstract/viewNode';
6 | import { CommitFileNodeBase } from './commitFileNode';
7 |
8 | export class StashFileNode extends CommitFileNodeBase<'stash-file', ViewsWithStashes> {
9 | constructor(view: ViewsWithStashes, parent: ViewNode, file: GitFile, commit: GitStashCommit) {
10 | super('stash-file', view, parent, file, commit);
11 | }
12 |
13 | protected override get contextValue(): string {
14 | return `${ContextValues.File}+stashed`;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/webviews/apps/home/context.ts:
--------------------------------------------------------------------------------
1 | import { createContext } from '@lit/context';
2 | import type { State } from '../../home/protocol';
3 |
4 | export const stateContext = createContext('state');
5 |
--------------------------------------------------------------------------------
/src/webviews/apps/home/home.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
17 |
18 |
19 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/webviews/apps/media/blame-avatars-compact.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-avatars-compact.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/blame-avatars.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-avatars.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/blame-compact-highlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-compact-highlight.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/blame-compact.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-compact.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/blame-heatmap-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-heatmap-left.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/blame-heatmap-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-heatmap-right.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/blame-highlight-gutter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-highlight-gutter.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/blame-highlight-scrollbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-highlight-scrollbar.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/blame-highlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-highlight.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/blame.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/branches-view-compare+pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/branches-view-compare+pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/branches-view-compare.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/branches-view-compare.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/branches-view-pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/branches-view-pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/branches-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/branches-view.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/changes-highlight-gutter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/changes-highlight-gutter.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/changes-highlight-scrollbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/changes-highlight-scrollbar.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/changes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/changes.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/code-lens-blocks-authors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-blocks-authors.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/code-lens-blocks-recent+authors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-blocks-recent+authors.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/code-lens-blocks-recent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-blocks-recent.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/code-lens-containers-authors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-containers-authors.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/code-lens-containers-recent+authors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-containers-recent+authors.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/code-lens-containers-recent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-containers-recent.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/code-lens-file-authors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-file-authors.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/code-lens-file-recent+authors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-file-recent+authors.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/code-lens-file-recent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-file-recent.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/code-lens.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commit-details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commit-details.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-auto-commit-pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto-commit-pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-auto-compare+commit-pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto-compare+commit-pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-auto-compare+pr+commit-pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto-compare+pr+commit-pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-auto-compare+pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto-compare+pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-auto-compare.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto-compare.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-auto-pr+commit-pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto-pr+commit-pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-auto-pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto-pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-auto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-tree-commit-pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree-commit-pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-tree-compare+commit-pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree-compare+commit-pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-tree-compare+pr+commit-pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree-compare+pr+commit-pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-tree-compare+pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree-compare+pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-tree-compare.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree-compare.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-tree-pr+commit-pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree-pr+commit-pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-tree-pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree-pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/commits-view-tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/contributors-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/contributors-view.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/current-line-blame-on+pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/current-line-blame-on+pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/current-line-blame-on-scrollable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/current-line-blame-on-scrollable.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/current-line-blame-on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/current-line-blame-on.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/current-line-blame.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/current-line-blame.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/file-history-view-avatars.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/file-history-view-avatars.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/file-history-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/file-history-view.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/gitlens-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/gitlens-logo.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/graph-commit-search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/graph-commit-search.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/graph-minimap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/graph-minimap.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/heatmap-gutter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/heatmap-gutter.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/heatmap-scrollbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/heatmap-scrollbar.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/heatmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/heatmap.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/hovers-annotations-compact.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-annotations-compact.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/hovers-annotations-currentLine-on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-annotations-currentLine-on.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/hovers-annotations.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-annotations.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/hovers-autolink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-autolink.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/hovers-changes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-changes.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/hovers-currentLine-on+pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-currentLine-on+pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/hovers-currentLine-on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-currentLine-on.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/hovers-currentLine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-currentLine.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/hovers-details+changes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-details+changes.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/hovers-details+pr+changes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-details+pr+changes.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/hovers-details+pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-details+pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/hovers-details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-details.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/line-history-view-avatars.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/line-history-view-avatars.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/line-history-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/line-history-view.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/modes-status-bar-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/modes-status-bar-left.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/modes-status-bar-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/modes-status-bar-right.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/plus-commit-graph-illustrated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/plus-commit-graph-illustrated.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/rebase-editor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/rebase-editor.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/remotes-view-pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/remotes-view-pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/remotes-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/remotes-view.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/repositories-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/repositories-view.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/search-and-compare-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/search-and-compare-view.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/stashes-view-auto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/stashes-view-auto.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/stashes-view-tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/stashes-view-tree.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/status-bar-left+pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/status-bar-left+pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/status-bar-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/status-bar-left.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/status-bar-right+pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/status-bar-right+pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/status-bar-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/status-bar-right.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/status-bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/status-bar.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/tags-view-list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/tags-view-list.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/tags-view-tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/tags-view-tree.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/worktrees-view-compare+pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/worktrees-view-compare+pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/worktrees-view-compare.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/worktrees-view-compare.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/worktrees-view-pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/worktrees-view-pr.png
--------------------------------------------------------------------------------
/src/webviews/apps/media/worktrees-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/worktrees-view.png
--------------------------------------------------------------------------------
/src/webviews/apps/plus/graph/context.ts:
--------------------------------------------------------------------------------
1 | import { createContext } from '@lit/context';
2 | import type { State } from '../../../plus/graph/protocol';
3 |
4 | export const stateContext = createContext('state');
5 |
--------------------------------------------------------------------------------
/src/webviews/apps/plus/shared/components/vscode.css.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 |
3 | export const linkStyles = css`
4 | a {
5 | border: 0;
6 | color: var(--link-foreground);
7 | font-weight: 400;
8 | outline: none;
9 | text-decoration: var(--link-decoration-default, none);
10 | }
11 |
12 | a:focus-visible {
13 | outline: 1px solid var(--color-focus-border);
14 | border-radius: 0.2rem;
15 | }
16 |
17 | a:hover {
18 | color: var(--link-foreground-active);
19 | text-decoration: underline;
20 | }
21 | `;
22 |
23 | export const ruleStyles = css`
24 | hr {
25 | border: none;
26 | border-top: 1px solid var(--color-foreground--25);
27 | }
28 | `;
29 |
--------------------------------------------------------------------------------
/src/webviews/apps/plus/timeline/context.ts:
--------------------------------------------------------------------------------
1 | import { createContext } from '@lit/context';
2 | import type { State } from '../../../plus/timeline/protocol';
3 |
4 | export const stateContext = createContext('state');
5 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/components/badges/badge.ts:
--------------------------------------------------------------------------------
1 | import { html, LitElement } from 'lit';
2 | import { customElement } from 'lit/decorators.js';
3 | import { badgeBase } from './badges.css';
4 |
5 | @customElement('gl-badge')
6 | export class Badge extends LitElement {
7 | static override styles = [badgeBase];
8 |
9 | override render(): unknown {
10 | return html``;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/components/badges/badges.css.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 |
3 | export const badgeBase = css`
4 | .badge {
5 | display: inline-flex;
6 | font-size: var(--gl-badge-font-size, x-small);
7 | font-variant: all-small-caps;
8 | font-weight: 600;
9 | color: var(--gl-badge-color, var(--color-foreground--50));
10 | border: currentColor 1px solid;
11 | border-radius: 1rem;
12 | padding: 0 0.8rem 0.1rem;
13 | white-space: nowrap;
14 | }
15 | `;
16 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/components/converters/date-converter.ts:
--------------------------------------------------------------------------------
1 | import type { ComplexAttributeConverter } from 'lit';
2 |
3 | export const dateConverter = (): ComplexAttributeConverter => {
4 | return {
5 | toAttribute: (date: Date) => {
6 | return date.getTime();
7 | },
8 | fromAttribute: (value: string, _type?: number) => {
9 | return new Date(parseInt(value, 10));
10 | },
11 | };
12 | };
13 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/components/helpers/slots.ts:
--------------------------------------------------------------------------------
1 | export function hasNodes(...nodes: (Node[] | undefined)[]): boolean {
2 | return nodes.some(nodes => (nodes?.length ?? 0) > 0);
3 | }
4 |
5 | export function nodeTypeFilter(nodeType: Node['nodeType']): (node: Node) => boolean {
6 | return (node: Node) => node.nodeType === nodeType;
7 | }
8 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/components/indicators/indicator.ts:
--------------------------------------------------------------------------------
1 | import { html, LitElement } from 'lit';
2 | import { customElement, property } from 'lit/decorators.js';
3 | import { baseStyles, pulseStyles } from './indicator.css';
4 |
5 | export const tagName = 'gl-indicator';
6 |
7 | @customElement(tagName)
8 | export class GlIndicator extends LitElement {
9 | static override styles = [baseStyles, pulseStyles];
10 |
11 | @property({ type: Boolean })
12 | pulse = false;
13 |
14 | override render(): unknown {
15 | return html``;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/components/markdown/markdown.react.tsx:
--------------------------------------------------------------------------------
1 | import { reactWrapper } from '../helpers/react-wrapper';
2 | import { GlMarkdown as GlMarkdownWC } from './markdown';
3 |
4 | export interface GlMarkdown extends GlMarkdownWC {}
5 | export const GlMarkdown = reactWrapper(GlMarkdownWC, { tagName: 'gl-markdown' });
6 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/components/menu/menu-divider.ts:
--------------------------------------------------------------------------------
1 | import { css, LitElement } from 'lit';
2 | import { customElement } from 'lit/decorators.js';
3 | import { elementBase } from '../styles/lit/base.css';
4 |
5 | @customElement('menu-divider')
6 | export class MenuDivider extends LitElement {
7 | static override styles = [
8 | elementBase,
9 | css`
10 | :host {
11 | display: block;
12 | height: 0;
13 | margin: 0.6rem;
14 | border-top: 0.1rem solid var(--vscode-menu-separatorBackground);
15 | }
16 | `,
17 | ];
18 | }
19 |
20 | declare global {
21 | interface HTMLElementTagNameMap {
22 | 'menu-divider': MenuDivider;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/components/overlays/overlays.utils.ts:
--------------------------------------------------------------------------------
1 | import { unsafeHTML } from 'lit/directives/unsafe-html.js';
2 |
3 | export function handleUnsafeOverlayContent(content?: string) {
4 | if (content?.includes('\n')) {
5 | return unsafeHTML(content.replace(/\n\n/g, '
').replace(/\n/g, '
'));
6 | }
7 |
8 | return content;
9 | }
10 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/components/panes/pane-group.ts:
--------------------------------------------------------------------------------
1 | import { css, html, LitElement } from 'lit';
2 | import { customElement } from 'lit/decorators.js';
3 |
4 | @customElement('webview-pane-group')
5 | export class WebviewPaneGroup extends LitElement {
6 | static override styles = css`
7 | :host {
8 | display: flex;
9 | box-sizing: border-box;
10 | flex-direction: column;
11 | }
12 |
13 | ::slotted(webview-pane) {
14 | flex: none;
15 | }
16 |
17 | :host([flexible]) ::slotted(webview-pane[flexible][expanded]) {
18 | flex: 1;
19 | }
20 | `;
21 |
22 | override render(): unknown {
23 | return html``;
24 | }
25 | }
26 |
27 | declare global {
28 | interface HTMLElementTagNameMap {
29 | 'webview-pane-group': WebviewPaneGroup;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/components/radio/radio.css.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 |
3 | export const radioStyles = css`
4 | :host {
5 | --checkbox-radius: 50%;
6 | --checkbox-foreground: var(--vscode-radio-inactiveForeground);
7 | --checkbox-background: var(--vscode-radio-inactiveBackground);
8 | --checkbox-border: var(--vscode-radio-inactiveBorder);
9 | --checkbox-checked-foreground: var(--vscode-radio-activeForeground);
10 | --checkbox-checked-background: var(--vscode-radio-activeBackground);
11 | --checkbox-checked-border: var(--vscode-radio-activeBorder);
12 | --checkbox-hover-background: var(--vscode-radio-inactiveHoverBackground);
13 | }
14 | `;
15 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/components/rich/issue.css.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 |
3 | export const issueIconStyles = css`
4 | .issue-icon--opened {
5 | color: var(--vscode-gitlens-openAutolinkedIssueIconColor);
6 | }
7 | .issue-icon--closed {
8 | color: var(--vscode-gitlens-closedAutolinkedIssueIconColor);
9 | }
10 | `;
11 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/components/rich/pr.css.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 |
3 | export const prIconStyles = css`
4 | .pr-icon--opened {
5 | color: var(--vscode-gitlens-openPullRequestIconColor);
6 | }
7 | .pr-icon--closed {
8 | color: var(--vscode-gitlens-closedPullRequestIconColor);
9 | }
10 | .pr-icon--merged {
11 | color: var(--vscode-gitlens-mergedPullRequestIconColor);
12 | }
13 | `;
14 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/components/styles/lit/a11y.css.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 |
3 | export const srOnlyStyles = css`
4 | clip: rect(0 0 0 0);
5 | clip-path: inset(50%);
6 | width: 1px;
7 | height: 1px;
8 | overflow: hidden;
9 | position: absolute;
10 | white-space: nowrap;
11 | `;
12 |
13 | export const srOnly = css`
14 | .sr-only,
15 | .sr-only-focusable:not(:active):not(:focus-visible):not(:focus-within) {
16 | ${srOnlyStyles}
17 | }
18 | `;
19 |
20 | export const focusOutline = css`
21 | outline: 1px solid var(--color-focus-border);
22 | outline-offset: -1px;
23 | `;
24 |
25 | export const focusOutlineButton = css`
26 | outline: 1px solid var(--color-focus-border);
27 | outline-offset: 2px;
28 | `;
29 |
30 | export const focusableBaseStyles = css`
31 | :focus-visible {
32 | ${focusOutline}
33 | }
34 | `;
35 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/contexts/ipc.ts:
--------------------------------------------------------------------------------
1 | import { createContext } from '@lit/context';
2 | import type { HostIpc } from '../ipc';
3 |
4 | export const ipcContext = createContext('ipc');
5 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/contexts/telemetry.ts:
--------------------------------------------------------------------------------
1 | import { createContext } from '@lit/context';
2 | import type { TelemetrySendEventParams } from '../../../protocol';
3 | import { TelemetrySendEventCommand } from '../../../protocol';
4 | import type { Disposable } from '../events';
5 | import type { HostIpc } from '../ipc';
6 |
7 | export class TelemetryContext implements Disposable {
8 | private readonly ipc: HostIpc;
9 | private readonly disposables: Disposable[] = [];
10 |
11 | constructor(ipc: HostIpc) {
12 | this.ipc = ipc;
13 | }
14 |
15 | sendEvent(detail: TelemetrySendEventParams): void {
16 | this.ipc.sendCommand(TelemetrySendEventCommand, detail);
17 | }
18 |
19 | dispose(): void {
20 | this.disposables.forEach(d => d.dispose());
21 | }
22 | }
23 |
24 | export const telemetryContext = createContext('telemetry');
25 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/date.ts:
--------------------------------------------------------------------------------
1 | export * from '../../../system/date';
2 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/styles/normalize.scss:
--------------------------------------------------------------------------------
1 | html {
2 | box-sizing: border-box;
3 | }
4 | *,
5 | *::before,
6 | *::after {
7 | box-sizing: inherit;
8 | }
9 |
10 | // avoids FOUC for elements not yet called with `define()`
11 | :not(:defined) {
12 | visibility: hidden;
13 | }
14 |
15 | [hidden] {
16 | display: none !important;
17 | }
18 |
19 | html {
20 | font-size: 62.5%;
21 | text-size-adjust: 100%;
22 | // -webkit-font-smoothing: antialiased;
23 | // -moz-osx-font-smoothing: grayscale;
24 | }
25 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/styles/properties.scss:
--------------------------------------------------------------------------------
1 | :root {
2 | --gitlens-gutter-width: 20px;
3 | --gk-action-radius: 0.3rem;
4 | }
5 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/styles/utils.scss:
--------------------------------------------------------------------------------
1 | @mixin focus() {
2 | outline: 1px solid var(--vscode-focusBorder);
3 | outline-offset: -1px;
4 | }
5 |
6 | @mixin dark-theme($selectorPrefix: '', $selectorPostfix: '') {
7 | #{$selectorPrefix}.vscode-dark#{$selectorPostfix},
8 | #{$selectorPrefix}.vscode-high-contrast:not(.vscode-high-contrast-light)#{$selectorPostfix} {
9 | @content;
10 | }
11 | }
12 |
13 | @mixin light-theme($selectorPrefix: '', $selectorPostfix: '') {
14 | #{$selectorPrefix}.vscode-light#{$selectorPostfix},
15 | #{$selectorPrefix}.vscode-high-contrast-light#{$selectorPostfix} {
16 | @content;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/webviews/apps/shared/telemetry.ts:
--------------------------------------------------------------------------------
1 | import type { TelemetryEvents } from '../../../constants.telemetry';
2 | import type { TelemetrySendEventParams } from '../../protocol';
3 |
4 | export const telemetryEventName = 'gl-telemetry-fired';
5 |
6 | export function emitTelemetrySentEvent(
7 | el: EventTarget,
8 | params: TelemetrySendEventParams,
9 | ): void {
10 | el.dispatchEvent(
11 | new CustomEvent>(telemetryEventName, {
12 | bubbles: true,
13 | detail: params,
14 | }),
15 | );
16 | }
17 |
18 | declare global {
19 | interface WindowEventMap {
20 | [telemetryEventName]: CustomEvent;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/svgo.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | js2svg: {
3 | eol: 'lf',
4 | finalNewline: true,
5 | },
6 | plugins: [
7 | {
8 | name: 'removeAttrs',
9 | params: {
10 | attrs: 'fill',
11 | },
12 | },
13 | {
14 | name: 'addAttributesToSVGElement',
15 | params: {
16 | attributes: [
17 | {
18 | fill: 'currentColor',
19 | },
20 | ],
21 | },
22 | },
23 | ],
24 | };
25 |
--------------------------------------------------------------------------------
/tests/docker/run-unit-tests.sh:
--------------------------------------------------------------------------------
1 | pnpm run test;
2 | EXIT_CODE=$?;
3 | if [[ "$EXIT_CODE" == "0" ]]; then
4 | kill -s SIGINT `cat /var/run/supervisor/supervisord.pid`;
5 | else
6 | kill -s SIGKILL `cat /var/run/supervisor/supervisord.pid`;
7 | fi
8 |
--------------------------------------------------------------------------------
/tests/e2e/playwright.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from '@playwright/test';
2 |
3 | // eslint-disable-next-line import-x/no-default-export
4 | export default defineConfig({
5 | use: {
6 | headless: true, // Ensure headless mode is enabled
7 | viewport: { width: 1920, height: 1080 },
8 | },
9 | reporter: 'list', // process.env.CI ? 'html' : 'list',
10 | timeout: 60000, // 1 minute
11 | workers: 1,
12 | expect: {
13 | timeout: 60000, // 1 minute
14 | },
15 | globalSetup: './setup',
16 | outputDir: '../../out/test-results',
17 | projects: [
18 | {
19 | name: 'VSCode stable',
20 | use: {
21 | vscodeVersion: 'stable',
22 | },
23 | },
24 | ],
25 | testMatch: 'specs/*.test.ts',
26 | });
27 |
--------------------------------------------------------------------------------
/tests/e2e/setup.ts:
--------------------------------------------------------------------------------
1 | import { downloadAndUnzipVSCode } from '@vscode/test-electron';
2 |
3 | // eslint-disable-next-line import-x/no-default-export
4 | export default async (): Promise => {
5 | await downloadAndUnzipVSCode('insiders');
6 | await downloadAndUnzipVSCode('stable');
7 | };
8 |
--------------------------------------------------------------------------------
/tests/e2e/specs/gitlens_install.test.ts:
--------------------------------------------------------------------------------
1 | import { expect, test } from './baseTest';
2 |
3 | test.describe('Test GitLens installation', () => {
4 | test('should contain GitLens & GitLens Inspect icons in activity bar', async ({ page }) => {
5 | await page.getByRole('tab', { name: 'GitLens Inspect' }).waitFor();
6 | const gitlensIcons = page.getByRole('tab', { name: 'GitLens' });
7 | void expect(gitlensIcons).toHaveCount(2);
8 |
9 | expect(await page.title()).toContain('[Extension Development Host]');
10 | });
11 | });
12 |
--------------------------------------------------------------------------------
/tests/e2e/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.base.json",
3 | "compilerOptions": {
4 | "target": "es2023",
5 | "module": "node16",
6 | "moduleResolution": "node16",
7 | "strict": true,
8 | "esModuleInterop": true,
9 | "skipLibCheck": true,
10 | "forceConsistentCasingInFileNames": true,
11 | "outDir": "./out",
12 | "rootDir": ".",
13 | "sourceMap": true
14 | },
15 | "include": ["**/*.ts"]
16 | }
17 |
--------------------------------------------------------------------------------
/tsconfig.base.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "esModuleInterop": true,
5 | "experimentalDecorators": true,
6 | "forceConsistentCasingInFileNames": true,
7 | "incremental": true,
8 | "isolatedModules": true,
9 | "lib": ["es2023"],
10 | "libReplacement": false,
11 | "module": "esnext",
12 | "moduleResolution": "bundler",
13 | "noFallthroughCasesInSwitch": true,
14 | "noImplicitOverride": true,
15 | "noImplicitReturns": true,
16 | "noUnusedLocals": false,
17 | "outDir": "dist",
18 | "resolveJsonModule": true,
19 | "rootDir": "src",
20 | "skipLibCheck": true,
21 | "sourceMap": true,
22 | "strict": true,
23 | "target": "es2023",
24 | "useDefineForClassFields": true,
25 | "useUnknownInCatchVariables": false
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/tsconfig.browser.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.base.json",
3 | "compilerOptions": {
4 | "lib": ["dom", "dom.iterable", "es2023"],
5 | "paths": {
6 | "@env/*": ["src/env/browser/*"],
7 | "path": ["node_modules/path-browserify"]
8 | },
9 | "tsBuildInfoFile": "tsconfig.browser.tsbuildinfo"
10 | },
11 | "include": ["src/**/*"],
12 | "exclude": ["src/**/__tests__/**/*", "src/**/webview/**/*", "src/webviews/apps/**/*", "src/env/node/**/*"]
13 | }
14 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true
4 | },
5 | "files": [],
6 | "references": [
7 | { "path": "./tsconfig.node.json" },
8 | { "path": "./tsconfig.browser.json" },
9 | { "path": "./src/webviews/apps/tsconfig.json" },
10 | { "path": "./tests/e2e/tsconfig.json" },
11 | { "path": "./tsconfig.test.json" }
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.base.json",
3 | "compilerOptions": {
4 | "paths": {
5 | "@env/*": ["src/env/node/*"]
6 | },
7 | "tsBuildInfoFile": "tsconfig.node.tsbuildinfo"
8 | },
9 | "include": ["src/**/*"],
10 | "exclude": ["src/**/__tests__/**/*", "src/**/webview/**/*", "src/webviews/apps/**/*", "src/env/browser/**/*"]
11 | }
12 |
--------------------------------------------------------------------------------
/tsconfig.test.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.base.json",
3 | "compilerOptions": {
4 | "incremental": false,
5 | "outDir": "out/tests",
6 | "paths": {
7 | "@env/*": ["src/env/node/*"]
8 | }
9 | },
10 | "include": ["src/**/*"],
11 | "exclude": ["src/**/webview/**/*", "src/webviews/apps/**/*", "src/env/browser/**/*"]
12 | }
13 |
--------------------------------------------------------------------------------
/walkthroughs/welcome/accelerate-pr-reviews.md:
--------------------------------------------------------------------------------
1 | ### Launchpad & Worktrees | PR Hub that accelerates PR Reviews
2 |
3 |
4 |
5 |
6 |
7 | Streamline your workflow with Launchpad by managing pull requests directly in VS Code, keeping your tasks organized and your focus uninterrupted.
8 |
9 | Work smarter with Worktrees and switch between branches seamlessly to work on multiple projects in parallel, all without disrupting your main workspace.
10 |
11 | Watch a [video](command:gitlens.walkthrough.openAcceleratePrReviews) about how to accelerate code review in GitLens.
12 |
--------------------------------------------------------------------------------
/walkthroughs/welcome/get-started-community.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Accelerate PR reviews, gain actionable code insights with visualizations, and streamline collaboration to supercharge your Git and VS Code experience. Leverage powerful workflows with GitLens Pro that will increase productivity for you and your team.
6 |
7 | [Get started with GitLens Pro](command:gitlens.walkthrough.plus.signUp) free for 14 days — no credit card required.
8 |
--------------------------------------------------------------------------------
/walkthroughs/welcome/home.md:
--------------------------------------------------------------------------------
1 | ### Start and manage your work in the Home View
2 |
3 |
4 |
5 |
6 |
7 | Located in the VS Code sidebar, the GitLens Home View highlights your current work with clear, actionable insights, guides you to Start Work on your next important tasks, and tracks recently modified branches for easy task-switching.
8 |
9 | [Connect Integrations](command:gitlens.walkthrough.connectIntegrations) with hosting and issue services like GitHub, GitLab, Azure DevOps, Jira, Bitbucket, and more to help you monitor and take action on branches, issues, and pull requests.
10 |
11 | Learn more on our detailed [Home View Help Center Page](command:gitlens.walkthrough.openHomeViewVideo).
12 |
--------------------------------------------------------------------------------
/walkthroughs/welcome/improve-workflows-with-integrations.md:
--------------------------------------------------------------------------------
1 | ### Integrate with Git Hosting & Issue Services
2 |
3 |
4 |
5 |
6 |
7 | Connect GitLens to GitHub, GitLab, and Jira to link PRs and issues to branches and commits, track and manage PRs in Launchpad, and start work on issues seamlessly.
8 |
9 | With Autolinks, GitLens surfaces links to issues and PRs related to your commits automatically, from a variety of services and custom servers.
10 |
11 | Watch a [video](command:gitlens.walkthrough.openStartIntegrations) about improving GitLens with integrations.
12 |
--------------------------------------------------------------------------------
/walkthroughs/welcome/streamline-collaboration.md:
--------------------------------------------------------------------------------
1 | ### Streamline Collaboration | Access Work Anywhere & Suggest Changes
2 |
3 |
4 |
5 |
6 |
7 | With Cloud Patches, privately and securely share code with specific teammates and other developers, accessible from anywhere. Enhance collaboration without adding noise to your repositories.
8 |
9 | With Code Suggest, review pull requests and send suggested changes to teammates in any part of your project, not just the lines of code changed in the PR.
10 |
11 | Watch a [video](command:gitlens.walkthrough.openStreamlineCollaboration) about enhancing collaboration with GitLens.
12 |
--------------------------------------------------------------------------------
/walkthroughs/welcome/thumbnails/ai-features.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/ai-features.jpg
--------------------------------------------------------------------------------
/walkthroughs/welcome/thumbnails/autolinks.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/autolinks.jpg
--------------------------------------------------------------------------------
/walkthroughs/welcome/thumbnails/cloud-patches.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/cloud-patches.jpg
--------------------------------------------------------------------------------
/walkthroughs/welcome/thumbnails/commit-graph.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/commit-graph.jpg
--------------------------------------------------------------------------------
/walkthroughs/welcome/thumbnails/discover-pro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/discover-pro.png
--------------------------------------------------------------------------------
/walkthroughs/welcome/thumbnails/home-view.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/home-view.jpg
--------------------------------------------------------------------------------
/walkthroughs/welcome/thumbnails/launchpad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/launchpad.jpg
--------------------------------------------------------------------------------
/walkthroughs/welcome/thumbnails/welcome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/welcome.png
--------------------------------------------------------------------------------
/walkthroughs/welcome/visualize-code-history.md:
--------------------------------------------------------------------------------
1 | ### Blame, Hovers, and Commit Graph
2 |
3 |
4 |
5 |
6 |
7 | Go beyond visualization with the GitLens Commit Graph and take action to create branches, rebase, revert, and more. With rich search and filtering capabilities, easily find what you need by commit message, author, changed files, or even specific code changes.
8 |
9 | Watch a [video](command:gitlens.walkthrough.openInteractiveCodeHistory) about Interactive Code History in GitLens.
10 |
--------------------------------------------------------------------------------
/walkthroughs/welcome/welcome-in-trial-expired-eligible.md:
--------------------------------------------------------------------------------
1 | ### GitLens: Explore Your Options
2 |
3 |
4 |
5 |
6 |
7 | Accelerate PR reviews, gain actionable code insights with visualizations, and streamline collaboration to supercharge your Git and VS Code experience. Leverage powerful workflows with GitLens Pro that will increase productivity for you and your team.
8 |
9 | [Reactivate your GitLens Pro trial](command:gitlens.walkthrough.plus.reactivate) and experience all the new Pro features — free for another 14 days.
10 |
--------------------------------------------------------------------------------
/walkthroughs/welcome/welcome-in-trial-expired.md:
--------------------------------------------------------------------------------
1 | ### GitLens: Explore Your Options
2 |
3 |
4 |
5 |
6 |
7 | Accelerate PR reviews, gain actionable code insights with visualizations, and streamline collaboration to supercharge your Git and VS Code experience. Leverage powerful workflows with GitLens Pro that will increase productivity for you and your team.
8 |
9 | [Upgrade to GitLens Pro](command:gitlens.walkthrough.plus.upgrade) today. Includes access to the [GitKraken DevEx platform](command:gitlens.walkthrough.openDevExPlatform), unleashing powerful Git visualization & productivity capabilities everywhere you work: IDE, desktop, browser, and terminal.
10 |
--------------------------------------------------------------------------------
/walkthroughs/welcome/welcome-in-trial.md:
--------------------------------------------------------------------------------
1 | ### Discover the Benefits of GitLens Pro
2 |
3 |
4 |
5 |
6 |
7 | Accelerate PR reviews, gain actionable code insights with visualizations, and streamline collaboration to supercharge your Git and VS Code experience. Leverage powerful workflows with GitLens Pro that will increase productivity for you and your team.
8 |
--------------------------------------------------------------------------------
/walkthroughs/welcome/welcome-paid.md:
--------------------------------------------------------------------------------
1 | ### Discover the Benefits of GitLens Pro
2 |
3 |
4 |
5 | You also have access to the [GitKraken DevEx platform](command:gitlens.walkthrough.openDevExPlatform), unleashing powerful Git visualization & productivity capabilities everywhere you work: IDE, desktop, browser, and terminal.
6 |
--------------------------------------------------------------------------------