From d8f1ae0d544b4bdad0f2fecf1345b3c4193f0b2d Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Fri, 2 Feb 2018 02:12:18 -0500 Subject: [PATCH] Updates README (wip) --- README.md | 333 ++++++++++++++------- images/gitlens-header.png | Bin 0 -> 37637 bytes images/screenshot-code-lens.png | Bin 4429 -> 12748 bytes images/screenshot-current-line-blame.png | Bin 0 -> 7691 bytes images/screenshot-gutter-blame.png | Bin 0 -> 14029 bytes images/screenshot-line-blame-annotation.png | Bin 4759 -> 0 bytes package.json | 2 +- .../images/settings/code-lens-recent+authors.png | Bin 4090 -> 0 bytes src/ui/settings/index.html | 4 +- src/ui/welcome/index.html | 3 +- 10 files changed, 225 insertions(+), 117 deletions(-) create mode 100644 images/gitlens-header.png create mode 100644 images/screenshot-current-line-blame.png create mode 100644 images/screenshot-gutter-blame.png delete mode 100644 images/screenshot-line-blame-annotation.png delete mode 100644 src/ui/images/settings/code-lens-recent+authors.png diff --git a/README.md b/README.md index a3d546d..660c4a4 100644 --- a/README.md +++ b/README.md @@ -3,22 +3,14 @@ [![](https://vsmarketplacebadge.apphb.com/rating-short/eamodio.gitlens.svg)](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) [![](https://img.shields.io/badge/vscode--dev--community-gitlens-blue.svg?logo=slack)](https://join.slack.com/t/vscode-dev-community/shared_invite/enQtMjIxOTgxNDE3NzM0LWU5M2ZiZDU1YjBlMzdlZjA2YjBjYzRhYTM5NTgzMTAxMjdiNWU0ZmQzYWI3MWU5N2Q1YjBiYmQ4MzY0NDE1MzY) -
-
- -
-

GitLens

-

Git supercharged

-
-
-

- GitLens - supercharges the Git capabilities built into Visual Studio Code. It helps you to - visualize code authorship at a glance via Git blame annotations and code lens, - seamlessly navigate and explore Git repositories, - gain valuable insights via powerful comparison commands, and so much more. -

-
+

+
+ GitLens Logo +

+ +> GitLens **supercharges** the Git capabilities built into Visual Studio Code. It helps you to **visualize code authorship** at a glance via Git blame annotations and code lens, **seamlessly navigate and explore** Git repositories, **gain valuable insights** via powerful comparison commands, and so much more. + +
# GitLens @@ -29,47 +21,53 @@ GitLens simply helps you understand code better. Quickly glimpse into who, why, Here are just some of the features that GitLens provides, - a [*GitLens* explorer](#gitlens-explorer "Jump to the GitLens explorer") to navigate and explore repositories or file histories - an on-demand [*GitLens Results* view](#gitlens-results-view "Jump to the GitLens Results view") to explore commit searches, visualize comparisions between branches, tags, commits, and more - - Git authorship code lens showing the most recent commit and # of authors to the top of files and/or on code blocks - - an unobtrusive Git blame annotation to the end of the current line - - detailed Git blame information accessible via hovers + - Git authorship [code lens](#code-lens "Jump to the Code Lens") showing the most recent commit and # of authors to the top of files and/or on code blocks + - an unobtrusive Git blame annotation to the end of the [current line](#current-line-blame "Jump to the Current Line Blame") + - on-demand [Git blame annotations](#gutter-blame "Jump to the Gutter Blame"), including a heatmap, to the gutter for the whole file + - detailed Git blame information accessible via [hovers](#hovers "Jump to the Hovers") - a status bar Git blame annotation showing author and date, by default, about the current line - many powerful commands for exploring commits and histories, comparing and navigating revisions, stash access, repository status, and more GitLens is powerful, feature rich, and also [highly customizable](#gitlens-settings "Jump to the GitLens settings docs") to meet your specific needs — find code lens intrusive or the current line blame annotation distracting — no problem, it is quick and easy to turn them off or change how they behave via the built-in *GitLens Settings* editor, a WYSIWYG editor covering many of GitLens' powerful settings. While for more advanced customizations, refer to the [GitLens settings docs](#gitlens-settings "Jump to the GitLens settings docs") and edit your vscode [user settings](https://code.visualstudio.com/docs/getstarted/settings). -### Preview ->![GitLens preview](https://raw.githubusercontent.com/eamodio/vscode-gitlens/master/images/gitlens-preview.gif) ->###### Features blame annotations, code lens, status bar details, quick pick menus for navigation and exploration, compare with previous, and more +

+
+ GitLens Preview +
+

## Features ### GitLens Explorer A [customizable](#gitlens-explorer-settings "Jump to the GitLens Explorer settings") explorer to navigate and explore repositories or file histories. The GitLens explorer provides two views (modes) — a Repository view and a History view. -- Toolbar provides *Search Commits*, *Switch to Repository View* or *Switch to History View*, and *Refresh* commands -- Quickly switch between views using the *Switch to Repository View* or *Switch to History View* commands +- A toolbar provides *Search Commits*, *Switch to Repository View* or *Switch to History View*, and *Refresh* commands + - Quickly switch between views using the *Switch to Repository View* or *Switch to History View* commands + - A context menu provides *Automatic Layout*, *List Layout*, and *Tree Layout* commands #### Repository view -![GitLens Explorer Repository view](https://raw.githubusercontent.com/eamodio/vscode-gitlens/feature-settings/images/screenshot-gitlens-explorer-repository.png) +

+ GitLens Explorer Repository view +

The repository view provides a full Git repository explorer, which has the following features, - **Repository Status** - Provides the name of the current branch, [optionally](#gitlens-explorer-settings "Jump to the GitLens explorer settings") its working tree status, and its upstream tracking branch and status (if available) - Provides indicator dots on the repository icon which denote the following: - - *None* - up-to-date with the upstream - - *Green* - ahead of the upstream - - *Red* - behind the upstream - - *Yellow* - both ahead of and behind the upstream + - *None* — up-to-date with the upstream + - *Green* — ahead of the upstream + - *Red* — behind the upstream + - *Yellow* — both ahead of and behind the upstream - Provides additional upstream status nodes, if the current branch is tracking a remote branch and, - is behind the upstream — quickly see and explore the specific commits behind the upstream (i.e. commits that haven't been pulled) - is ahead of the upstream — quickly see and explore the specific commits ahead of the upstream (i.e. commits that haven't been pushed) - - **Changed Files** node — provides a at-a-glance view of all "working" changes + - A context menu provides *Open Repository in Remote*, and *Refresh* commands + - **Changed Files** — lists all of the "working" changes - Expands to a file-based view of all changed files in the working tree ([optionally](#gitlens-explorer-settings "Jump to the GitLens explorer settings")) and/or all files in all commits ahead of the upstream - - Provides a context menu with *Open Repository in Remote*, and *Refresh* commands - **Branches** — lists the local branches - Indicates which branch is the current branch and [optionally](#gitlens-explorer-settings "Jump to the GitLens explorer settings") shows the remote tracking branch - - Context menu provides *Open Branches in Remote*, and *Refresh* commands + - A context menu provides *Open Branches in Remote*, and *Refresh* commands - Branches expand to show its revision (commit) history - Provides indicator dots on each branch icon which denote the following: - *None* — no upstream or up-to-date with the upstream @@ -86,15 +84,15 @@ The repository view provides a full Git repository explorer, which has the follo - **Remotes** — lists the remotes - Indicates the direction of the remote (fetch, push, both), remote service (if applicable), and repository path - - Context menu provides a *Refresh* command + - A context menu provides a *Refresh* command - Remotes expands show its list of branches - Context menus for each remote provide - *Open Branches in Remote*, *Open Repository in Remote*, *Remove Remote (via Terminal)*, and *Refresh* commands - Branches expand to show its revision (commit) history - - See the *Branches expand* section in the **Branches** above for more details + - See the *Branches expand* section under **Branches** above for more details - **Stashes** — lists the stashed changes - - Context menu provides *Stash Changes*, and *Refresh* commands + - A context menu provides *Stash Changes*, and *Refresh* commands - Stashes expand to show the set of files stashed, complete with status indicators for adds, changes, renames, and deletes - Context menus for each stash provide - *Apply Stashed Changes* (confirmation required), *Delete Stashed Changes* (confirmation required), *Open All Changes*, *Open All Changes with Working Tree*, *Open Files*, *Open Revisions*, *Copy Commit Message to Clipboard*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected* (when available), *Select for Compare*, and *Refresh* commands @@ -102,43 +100,135 @@ The repository view provides a full Git repository explorer, which has the follo - *Apply Changes*, *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote* (if available), and *Show File History* commands - **Tags** — lists the tags - - Context menu provides a *Refresh* command + - A context menu provides a *Refresh* command - Tags expand to show its revision (commit) history - Context menus for each tag provide - *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected*, *Select for Compare*, *Open Directory Compare with Working Tree*, *Delete Tag (via Terminal)*, and *Refresh* commands - Revisions (commits) expand to show the set of files changed, complete with status indicators for adds, changes, renames, and deletes - - See the *Revisions (commits) expand* section in the **Branches** above for more details + - See the *Revisions (commits) expand* section under **Branches** above for more details ### History view -![GitLens Explorer History view](https://raw.githubusercontent.com/eamodio/vscode-gitlens/feature-settings/images/screenshot-gitlens-explorer-history.png) +

+ GitLens Explorer History view +

The history view provides the revision history of the active file, which has the following features, - Automatically updates to track the active editor -- Context menu provides *Open File*, *Open File in Remote* (if available), and *Refresh* commands +- A context menu provides *Open File*, *Open File in Remote* (if available), and *Refresh* commands - Context menus for each revision (commit) provides - *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote* (if available), *Open Revision in Remote* (if available), *Apply Changes*, and *Show Commit File Details* commands -### GitLens Results -![GitLens Results view](https://raw.githubusercontent.com/eamodio/vscode-gitlens/feature-settings/images/screenshot-gitlens-results.png) -An on-demand, [customizable](#gitlens-results-settings "Jump to the GitLens Results settings") view to explore commit searches, visualize comparisions between branches, tags, commits, and more - - - Provides semi-persistent results for commit search, file history, and commit operations - - Accessible via the following: *Show Commit Search* command (`gitlens.showCommitSearch`), *Show File History* command (`gitlens.showQuickFileHistory`), and *Show Commit Details* command (`gitlens.showQuickCommitDetails`) - - Expand each revision (commit) to quickly see the set of files changed, complete with status indicators for adds, changes, renames, and deletes - - Provides a context menu on each revision (commit) with *Open Commit in Remote*, *Open All Changes*, *Open All Changes with Working Tree*, *Open Files*, *Open Revisions*, *Copy Commit ID to Clipboard*, *Copy Commit Message to Clipboard*, *Show Commit Details*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected*, *Select for Compare*, *Cherry Pick Commit (via Terminal)*, *Revert Commit (via Terminal)*, *Rebase to Commit (via Terminal)*, *Reset to Commit (via Terminal)*, *Create Branch (via Terminal)...*, *Create Tag (via Terminal)...*, and *Refresh* commands - - Provides a context menu on each changed file with *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands - - - Provides semi-persistent results for revision comparison operations - - Accessible via the following: *Compare with Index (HEAD)* command (`gitlens.explorers.compareWithHead`), *Compare with Remote* command (`gitlens.explorers.compareWithRemote`), *Compare with Working Tree* command (`gitlens.explorers.compareWithWorking`), *Compare with Selected* command (`gitlens.explorers.compareWithSelected`), and *Compare Selected Ancestor with Working Tree* command (`gitlens.explorers.compareSelectedAncestorWithWorking`) - - **Commits** node — provides a list of the commits between the compared revisions (branches or commits) - - Expand each revision (commit) to quickly see the set of files changed, complete with status indicators for adds, changes, renames, and deletes - - Provides a context menu on each revision (commit) with *Open Commit in Remote*, *Open All Changes*, *Open All Changes with Working Tree*, *Open Files*, *Open Revisions*, *Copy Commit ID to Clipboard*, *Copy Commit Message to Clipboard*, *Show Commit Details*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected*, *Select for Compare*, *Cherry Pick Commit (via Terminal)*, *Revert Commit (via Terminal)*, *Rebase to Commit (via Terminal)*, *Reset to Commit (via Terminal)*, *Create Branch (via Terminal)...*, *Create Tag (via Terminal)...*, and *Refresh* commands - - Provides a context menu on each changed file with *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands - - **Changed Files** node — provides a list of all the files changed between the compared revisions (branches or commits) +### GitLens Results View +

+ GitLens Results view +

+ +An on-demand, [customizable](#gitlens-results-view-settings "Jump to the GitLens Results view settings") view to explore commits, histories, and searches, or visualize comparisions between branches, tags, commits, and more +- A toolbar provides *Search Commits*, *Keep Results*, and *Refresh* commands + - A context menu provides *Automatic Layout*, *List Layout*, *Tree Layout*, and *Close* commands + +#### Explore + - Provides a semi-persistent results view for exploring histories, commits, and searchs + - Accessible via the following commands + - *Show Commit Search* command (`gitlens.showCommitSearch`) + - *Show File History* command (`gitlens.showQuickFileHistory`) + - *Show Commit Details* command (`gitlens.showQuickCommitDetails`) + - Revisions (commits) expand show the set of files changed, complete with status indicators for adds, changes, renames, and deletes + - Context menus for each revision (commit) provide + - *Open Commit in Remote* (if available), *Open All Changes*, *Open All Changes with Working Tree*, *Open Files*, *Open Revisions*, *Copy Commit ID to Clipboard*, *Copy Commit Message to Clipboard*, *Show Commit Details*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected* (when available), *Select for Compare*, *Cherry Pick Commit (via Terminal)*, *Revert Commit (via Terminal)*, *Rebase to Commit (via Terminal)*, *Reset to Commit (via Terminal)*, *Create Branch (via Terminal)...*, *Create Tag (via Terminal)...*, and *Refresh* commands + - Context menus for each changed file provide + - *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands + +#### Compare + - Provides a semi-persistent results view for comparison operations + - Accessible via the following commands + - *Compare with Remote* command (`gitlens.explorers.compareWithRemote`) + - *Compare with Index (HEAD)* command (`gitlens.explorers.compareWithHead`) + - *Compare with Working Tree* command (`gitlens.explorers.compareWithWorking`) + - *Compare with Selected* command (`gitlens.explorers.compareWithSelected`) + - *Compare Selected Ancestor with Working Tree* command (`gitlens.explorers.compareSelectedAncestorWithWorking`) + - A context menu provides *Clear Results*, *Open Directory Compare*, and *Refresh* commands + + - **Commits** — lists the commits between the compared revisions (branches or commits) + - Revisions (commits) expand to show the set of files changed, complete with status indicators for adds, changes, renames, and deletes + - See the *Revisions (commits) expand* section under **Explore** above for more details + + - **Changed Files** — lists the files changed between the compared revisions (branches or commits) - Expands to a file-based view of all changed files - - Provides a context menu on each changed file with *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands - - Provides a context menu with *Open Directory Compare* and *Refresh* commands - - Provides toolbar commands to *Search Commits*, *Keep Results*, *Refresh*, *Show Files in Automatic View* or *Show Files in List View* or *Show Files in Tree View*, and *Close* + - Context menus for each changed file provide + - *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands + +### Code Lens +

+ Code Lens +

+ +- Adds Git authorship **code lens** to the top of the file and on code blocks ([optional](#code-lens-settings "Jump to the Code Lens settings"), on by default) + + - **Recent Change** — author and date of the most recent commit for the file or code block + - Clicking the code lens will, by [default](#code-lens-settings "Jump to the Code Lens settings"), show a **commit file details quick pick menu** with commands for comparing, navigating and exploring commits, and more + - **Authors** — number of authors of the file or code block and the most prominent author (if there is more than one) + - Clicking the code lens will, by [default](#code-lens-settings "Jump to the Code Lens settings"), toggle the file Git blame annotations on and off of the whole file + - Will be hidden if the author of the most recent commit is also the only author of the file or block, to avoid duplicate information and reduce visual noise + + - Provides [customizable](#code-lens-settings "Jump to the Code Lens settings") click behavior for each code lens — choose between one of the following + - Toggle file blame annotations on and off + - Compare the commit with the previous commit + - Show a quick pick menu with details and commands for the commit + - Show a quick pick menu with file details and commands for the commit + - Show a quick pick menu with the commit history of the file + - Show a quick pick menu with the commit history of the current branch + +- Adds a *Toggle Git Code Lens* command (`gitlens.toggleCodeLens`) with a shortcut of `shift+alt+b` to toggle the code lens on and off + +### Current Line Blame +

+ Current Line Blame +

+ +- Adds an unobtrusive, [customizable](#current-line-blame-settings "Jump to the Current Line Blame settings"), and [themable](#themable-colors "Jump to the Themable Colors"), **Git blame annotation** to the end of the current line + - Contains the author, date, and message of the current line's most recent commit, by [default](#current-line-blame-settings "Jump to the Current Line Blame settings") + +### Gutter Blame +

+ Gutter Blame +

+ +- Adds an on-demand, [customizable](#gutter-blame-settings "Jump to the Gutter Blame settings"), and [themable](#themable-colors "Jump to the Themable Colors"), **Git blame annotations** to the gutter of the whole file + - Contains the commit message and date, by [default](#gutter-blame-settings "Jump to the Gutter Blame settings") + +### Hovers +- Adds [customizable](#hover-settings "Jump to the Hover settings") detailed Git blame information accessible via hovers + +#### Current Line + + +#### Annotating + + + + + + + + + + + + + + + + + + + + + + + + + ### Git Blame Annotations - Adds an unobtrusive, highly [customizable](#line-blame-annotation-settings) and [themable](#themable-colors), **Git blame annotation** to the end of the current line ([optional](#line-blame-annotation-settings), on by default) @@ -222,27 +312,6 @@ An on-demand, [customizable](#gitlens-results-settings "Jump to the GitLens Resu - Adds *Toggle Recent File Changes Annotations* command (`gitlens.toggleFileRecentChanges`) to toggle the recent changes annotations on and off -### Git Code Lens - -- Adds **code lens** to the top of the file and on code blocks ([optional](#code-lens-settings), on by default) - - ![Git Code Lens](https://raw.githubusercontent.com/eamodio/vscode-gitlens/master/images/screenshot-code-lens.png) - - **Recent Change** — author and date of the most recent commit for the file or code block - - Clicking the code lens will, by [default](#code-lens-settings), show a **commit file details quick pick menu** with commands for comparing, navigating and exploring commits, and more - - **Authors** — number of authors of the file or code block and the most prominent author (if there is more than one) - - Clicking the code lens will, by [default](#code-lens-settings), toggle the file Git blame annotations on and off of the whole file - - Will be hidden if the author of the most recent commit is also the only author of the file or block, to avoid duplicate information and reduce visual noise - -- Provides [customizable](#code-lens-settings) click behavior for each code lens — choose between one of the following - - Toggle file blame annotations on and off - - Compare the commit with the previous commit - - Show a quick pick menu with details and commands for the commit - - Show a quick pick menu with file details and commands for the commit - - Show a quick pick menu with the commit history of the file - - Show a quick pick menu with the commit history of the current branch - -- Adds a *Toggle Git Code Lens* command (`gitlens.toggleCodeLens`) with a shortcut of `shift+alt+b` to toggle the code lens on and off - ### Navigate and Explore - Adds a *Search Commits* command (`gitlens.showCommitSearch`) with a shortcut of `alt+/` to search for commits by message, author, file(s), commit id, or code changes @@ -396,7 +465,7 @@ GitLens defines a set of themable colors which can be provided by vscode themes ## GitLens Settings -GitLens is highly customizable and provides many configuration settings to allow the personalization of almost all features +GitLens is highly customizable and provides many configuration settings to allow the personalization of almost all features. ### General Settings @@ -411,43 +480,93 @@ GitLens is highly customizable and provides many configuration settings to allow ### GitLens Explorer Settings +See also [Explorer Settings](#explorer-settings) + |Name | Description |-----|------------ -|`gitlens.gitExplorer.enabled`|Specifies whether or not to show the **GitLens** view" -|`gitlens.gitExplorer.view`|Specifies the starting view (mode) of the **GitLens** view
`auto` - shows the last selected view, defaults to `repository`
`history` - shows the commit history of the active file
`repository` - shows a repository explorer" |`gitlens.gitExplorer.autoRefresh`|Specifies whether or not to automatically refresh the **GitLens** view when the repository or the file system changes -|`gitlens.gitExplorer.files.layout`|Specifies how the **GitLens** view will display files
`auto` - automatically switches between displaying files as a `tree` or `list` based on the `gitlens.gitExplorer.files.threshold` setting and the number of files at each nesting level
`list` - displays files as a list
`tree` - displays files as a tree +|`gitlens.gitExplorer.enabled`|Specifies whether or not to show the **GitLens** view" |`gitlens.gitExplorer.files.compact`|Specifies whether or not to compact (flatten) unnecessary file nesting in the **GitLens** view
Only applies when displaying files as a `tree` or `auto` +|`gitlens.gitExplorer.files.layout`|Specifies how the **GitLens** view will display files
`auto` - automatically switches between displaying files as a `tree` or `list` based on the `gitlens.gitExplorer.files.threshold` setting and the number of files at each nesting level
`list` - displays files as a list
`tree` - displays files as a tree |`gitlens.gitExplorer.files.threshold`|Specifies when to switch between displaying files as a `tree` or `list` based on the number of files in a nesting level in the **GitLens** view
Only applies when displaying files as `auto` -|`gitlens.gitExplorer.commitFormat`|Specifies the format of committed changes in the **GitLens** view
Available tokens
${id} - commit id
${author} - commit author
${message} - commit message
${ago} - relative commit date (e.g. 1 day ago)
${date} - formatted commit date (format specified by `gitlens.statusBar.dateFormat`)
${authorAgo} - commit author, relative commit date
See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting -|`gitlens.gitExplorer.commitFileFormat`|Specifies the format of a committed file in the **GitLens** view
Available tokens
${directory} - directory name
${file} - file name
${filePath} - formatted file name and path
${path} - full file path -|`gitlens.gitExplorer.gravatars`|Specifies whether or not to show gravatar images instead of commit (or status) icons in the **GitLens** view |`gitlens.gitExplorer.includeWorkingTree`|Specifies whether or not to include working tree files inside the `Repository Status` node of the **GitLens** view |`gitlens.gitExplorer.showTrackingBranch`|Specifies whether or not to show the tracking branch when displaying local branches in the **GitLens** view" -|`gitlens.gitExplorer.stashFormat`|Specifies the format of stashed changes in the **GitLens** view
Available tokens
${id} - commit id
${author} - commit author
${message} - commit message
${ago} - relative commit date (e.g. 1 day ago)
${date} - formatted commit date (format specified by `gitlens.statusBar.dateFormat`)
${authorAgo} - commit author, relative commit date
See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting -|`gitlens.gitExplorer.stashFileFormat`|Specifies the format of a stashed file in the **GitLens** view
Available tokens
${directory} - directory name
${file} - file name
${filePath} - formatted file name and path
${path} - full file path -|`gitlens.gitExplorer.statusFileFormat`|Specifies the format of the status of a working or committed file in the **GitLens** view
Available tokens
${directory} - directory name
${file} - file name
${filePath} - formatted file name and path
${path} - full file path
${working} - optional indicator if the file is uncommitted +|`gitlens.gitExplorer.view`|Specifies the starting view (mode) of the **GitLens** view
`auto` - shows the last selected view, defaults to `repository`
`history` - shows the commit history of the active file
`repository` - shows a repository explorer" + +### GitLens Results View Settings -### GitLens Results Settings +See also [Explorer Settings](#explorer-settings) |Name | Description |-----|------------ -|`gitlens.resultsExplorer.files.layout`|Specifies how the **GitLens Results** view will display files
`auto` - automatically switches between displaying files as a `tree` or `list` based on the `gitlens.resultsExplorer.files.threshold` setting and the number of files at each nesting level
`list` - displays files as a list
`tree` - displays files as a tree |`gitlens.resultsExplorer.files.compact`|Specifies whether or not to compact (flatten) unnecessary file nesting in the **GitLens Results** view
Only applies when displaying files as a `tree` or `auto` +|`gitlens.resultsExplorer.files.layout`|Specifies how the **GitLens Results** view will display files
`auto` - automatically switches between displaying files as a `tree` or `list` based on the `gitlens.resultsExplorer.files.threshold` setting and the number of files at each nesting level
`list` - displays files as a list
`tree` - displays files as a tree |`gitlens.resultsExplorer.files.threshold`|Specifies when to switch between displaying files as a `tree` or `list` based on the number of files in a nesting level in the **GitLens Results** view
Only applies when displaying files as `auto` -|`gitlens.resultsExplorer.commitFormat`|Specifies the format of committed changes in the **GitLens Results** view
Available tokens
${id} - commit id
${author} - commit author
${message} - commit message
${ago} - relative commit date (e.g. 1 day ago)
${date} - formatted commit date (format specified by `gitlens.statusBar.dateFormat`)
${authorAgo} - commit author, relative commit date
See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting -|`gitlens.resultsExplorer.commitFileFormat`|Specifies the format of a committed file in the **GitLens Results** view
Available tokens
${directory} - directory name
${file} - file name
${filePath} - formatted file name and path
${path} - full file path -|`gitlens.resultsExplorer.gravatars`|Specifies whether or not to show gravatar images instead of commit (or status) icons in the **GitLens Results** view -|`gitlens.resultsExplorer.showTrackingBranch`|Specifies whether or not to show the tracking branch when displaying local branches in the **GitLens Results** view" -|`gitlens.resultsExplorer.stashFormat`|Specifies the format of stashed changes in the **GitLens Results** view
Available tokens
${id} - commit id
${author} - commit author
${message} - commit message
${ago} - relative commit date (e.g. 1 day ago)
${date} - formatted commit date (format specified by `gitlens.statusBar.dateFormat`)
${authorAgo} - commit author, relative commit date
See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting -|`gitlens.resultsExplorer.stashFileFormat`|Specifies the format of a stashed file in the **GitLens Results** view
Available tokens
${directory} - directory name
${file} - file name
${filePath} - formatted file name and path
${path} - full file path -|`gitlens.resultsExplorer.statusFileFormat`|Specifies the format of the status of a working or committed file in the **GitLens Results** view
Available tokens
${directory} - directory name
${file} - file name
${filePath} - formatted file name and path
${path} - full file path
${working} - optional indicator if the file is uncommitted -### Blame Settings +### Explorer Settings + +|Name | Description +|-----|------------ +|`gitlens.explorers.avatars`|Specifies whether or not to show avatar images instead of commit (or status) icons in the **GitLens** and **GitLens Results** views +|`gitlens.explorers.commitFileFormat`|Specifies the format of a committed file in the **GitLens** and **GitLens Results** views
Available tokens
${directory} - directory name
${file} - file name
${filePath} - formatted file name and path
${path} - full file path +|`gitlens.explorers.commitFormat`|Specifies the format of committed changes in the **GitLens** and **GitLens Results** views
Available tokens
${id} - commit id
${author} - commit author
${message} - commit message
${ago} - relative commit date (e.g. 1 day ago)
${date} - formatted commit date (format specified by `gitlens.statusBar.dateFormat`)
${authorAgo} - commit author, relative commit date
See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting +|`gitlens.explorers.stashFileFormat`|Specifies the format of a stashed file in the **GitLens** and **GitLens Results** views
Available tokens
${directory} - directory name
${file} - file name
${filePath} - formatted file name and path
${path} - full file path +|`gitlens.explorers.stashFormat`|Specifies the format of stashed changes in the **GitLens** and **GitLens Results** views
Available tokens
${id} - commit id
${author} - commit author
${message} - commit message
${ago} - relative commit date (e.g. 1 day ago)
${date} - formatted commit date (format specified by `gitlens.statusBar.dateFormat`)
${authorAgo} - commit author, relative commit date
See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting +|`gitlens.explorers.statusFileFormat`|Specifies the format of the status of a working or committed file in the **GitLens** and **GitLens Results** views
Available tokens
${directory} - directory name
${file} - file name
${filePath} - formatted file name and path
${path} - full file path
${working} - optional indicator if the file is uncommitted + +### Code Lens Settings + +|Name | Description +|-----|------------ +|`gitlens.codeLens.authors.command`|Specifies the command to be executed when the `authors` code lens is clicked
`gitlens.toggleFileBlame` - toggles file blame annotations
`gitlens.diffWithPrevious` - compares the current committed file with the previous commit
`gitlens.showQuickCommitDetails` - shows a commit details quick pick
`gitlens.showQuickCommitFileDetails` - shows a commit file details quick pick
`gitlens.showQuickFileHistory` - shows a file history quick pick
`gitlens.showQuickRepoHistory` - shows a branch history quick pick +|`gitlens.codeLens.authors.enabled`|Specifies whether or not to show an `authors` code lens showing number of authors of the file or code block and the most prominent author (if there is more than one) +|`gitlens.codeLens.enabled`|Specifies whether or not to provide any Git code lens, by default
Use the *Toggle Git Code Lens* command (`gitlens.toggleCodeLens`) to toggle the Git code lens on and off for the current window +|`gitlens.codeLens.recentChange.command`|Specifies the command to be executed when the `recent change` code lens is clicked
`gitlens.toggleFileBlame` - toggles file blame annotations
`gitlens.diffWithPrevious` - compares the current committed file with the previous commit
`gitlens.showQuickCommitDetails` - shows a commit details quick pick
`gitlens.showQuickCommitFileDetails` - shows a commit file details quick pick
`gitlens.showQuickFileHistory` - shows a file history quick pick
`gitlens.showQuickRepoHistory` - shows a branch history quick pick +|`gitlens.codeLens.recentChange.enabled`|Specifies whether or not to show a `recent change` code lens showing the author and date of the most recent commit for the file or code block +|`gitlens.codeLens.scopes`|Specifies where Git code lens will be shown in the document
`document` - adds code lens at the top of the document
`containers` - adds code lens at the start of container-like symbols (modules, classes, interfaces, etc)
`blocks` - adds code lens at the start of block-like symbols (functions, methods, etc) lines +|`gitlens.codeLens.scopesByLanguage`|Specifies where Git code lens will be shown in the document for the specified languages +|`gitlens.codeLens.symbolScopes`|Specifies a set of document symbols where Git code lens will or will not be shown in the document
Prefix with `!` to not show Git code lens for the symbol
Must be a member of `SymbolKind` + +#### Current Line Blame Settings + +|Name | Description +|-----|------------ +|`gitlens.currentLine.dateFormat`|Specifies how to format absolute dates (using the `${date}` token) for the current line blame annotations
See https://momentjs.com/docs/#/displaying/format/ for valid formats +|`gitlens.currentLine.enabled`|Specifies whether or not to provide a blame annotation for the current line, by default
Use the *Toggle Line Blame Annotations* command (`gitlens.toggleLineBlame`) to toggle the annotations on and off for the current window +|`gitlens.currentLine.format`|Specifies the format of the current line blame annotation
Available tokens
`${id}` - commit id
`${author}` - commit author
`${message}` - commit message
`${ago}` - relative commit date (e.g. 1 day ago)
`${date}` - formatted commit date (format specified by `gitlens.annotations.line.trailing.dateFormat`)
`${authorAgo}` - commit author, relative commit date
See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting + +### Gutter Blame Settings |Name | Description |-----|------------ +|`gitlens.blame.avatars`|Specifies whether or not to show avatar images in the gutter blame annotations +|`gitlens.blame.compact`|Specifies whether or not to compact (deduplicate) matching adjacent gutter blame annotations +|`gitlens.blame.dateFormat`|Specifies how to format absolute dates (using the `${date}` token) in gutter blame annotations
See https://momentjs.com/docs/#/displaying/format/ for valid formats +|`gitlens.blame.format`|Specifies the format of the gutter blame annotations
Available tokens
`${id}` - commit id
`${author}` - commit author
`${message}` - commit message
`${ago}` - relative commit date (e.g. 1 day ago)
`${date}` - formatted commit date (format specified by `gitlens.blame.dateFormat`)
`${authorAgo}` - commit author, relative commit date
See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting +|`gitlens.blame.heatmap.enabled`|Specifies whether or not to provide a heatmap indicator in the gutter blame annotations +|`gitlens.blame.heatmap.location`|Specifies where the heatmap indicators will be shown in the gutter blame annotations
`left` - adds a heatmap indicator on the left edge of the gutter blame annotations
`right` - adds a heatmap indicator on the right edge of the gutter blame annotations +|`gitlens.blame.highlight.enabled`|Specifies whether or not to highlight lines associated with the current line +|`gitlens.blame.highlight.locations`|Specifies where the associated line highlights will be shown
`gutter` - adds a gutter glyph
`line` - adds a full-line highlight background color
`overviewRuler` - adds a decoration to the overviewRuler (scroll bar) |`gitlens.blame.ignoreWhitespace`|Specifies whether or not to ignore whitespace when comparing revisions during blame operations +|`gitlens.blame.separateLines`|Specifies whether or not gutter blame annotations will have line separators + +#### Hover Settings + + + + + + + + + + + + + + + + #### File Blame Annotation Settings @@ -459,7 +578,7 @@ GitLens is highly customizable and provides many configuration settings to allow |`gitlens.annotations.file.gutter.format`|Specifies the format of the gutter blame annotations
Available tokens
`${id}` - commit id
`${author}` - commit author
`${message}` - commit message
`${ago}` - relative commit date (e.g. 1 day ago)
`${date}` - formatted commit date (format specified by `gitlens.annotations.file.gutter.dateFormat`)
`${authorAgo}` - commit author, relative commit date
See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting |`gitlens.annotations.file.gutter.dateFormat`|Specifies how to format absolute dates (using the `${date}` token) in gutter blame annotations
See https://momentjs.com/docs/#/displaying/format/ for valid formats |`gitlens.annotations.file.gutter.compact`|Specifies whether or not to compact (deduplicate) matching adjacent gutter blame annotations -|`gitlens.annotations.file.gutter.gravatars`|Specifies whether or not to show gravatar images in the gutter blame annotations +|`gitlens.annotations.file.gutter.gravatars`|Specifies whether or not to show avatar images in the gutter blame annotations |`gitlens.annotations.file.gutter.heatmap.enabled`|Specifies whether or not to provide a heatmap indicator in the gutter blame annotations |`gitlens.annotations.file.gutter.heatmap.location`|Specifies where the heatmap indicators will be shown in the gutter blame annotations
`left` - adds a heatmap indicator on the left edge of the gutter blame annotations
`right` - adds a heatmap indicator on the right edge of the gutter blame annotations |`gitlens.annotations.file.gutter.hover.details`|Specifies whether or not to provide a commit details hover annotation over the gutter blame annotations @@ -492,18 +611,6 @@ GitLens is highly customizable and provides many configuration settings to allow |`gitlens.annotations.file.recentChanges.hover.details`|Specifies whether or not to provide a commit details hover annotation |`gitlens.annotations.file.recentChanges.hover.changes`|Specifies whether or not to provide a changes (diff) hover annotation -### Code Lens Settings - -|Name | Description -|-----|------------ -|`gitlens.codeLens.enabled`|Specifies whether or not to provide any Git code lens, by default
Use the *Toggle Git Code Lens* command (`gitlens.toggleCodeLens`) to toggle the Git code lens on and off for the current session -|`gitlens.codeLens.recentChange.enabled`|Specifies whether or not to show a `recent change` code lens showing the author and date of the most recent commit for the file or code block -|`gitlens.codeLens.recentChange.command`|Specifies the command to be executed when the `recent change` code lens is clicked
`gitlens.toggleFileBlame` - toggles file blame annotations
`gitlens.diffWithPrevious` - compares the current committed file with the previous commit
`gitlens.showQuickCommitDetails` - shows a commit details quick pick
`gitlens.showQuickCommitFileDetails` - shows a commit file details quick pick
`gitlens.showQuickFileHistory` - shows a file history quick pick
`gitlens.showQuickRepoHistory` - shows a branch history quick pick -|`gitlens.codeLens.authors.enabled`|Specifies whether or not to show an `authors` code lens showing number of authors of the file or code block and the most prominent author (if there is more than one) -|`gitlens.codeLens.authors.command`|Specifies the command to be executed when the `authors` code lens is clicked
`gitlens.toggleFileBlame` - toggles file blame annotations
`gitlens.diffWithPrevious` - compares the current committed file with the previous commit
`gitlens.showQuickCommitDetails` - shows a commit details quick pick
`gitlens.showQuickCommitFileDetails` - shows a commit file details quick pick
`gitlens.showQuickFileHistory` - shows a file history quick pick
`gitlens.showQuickRepoHistory` - shows a branch history quick pick -|`gitlens.codeLens.scopes`|Specifies where Git code lens will be shown in the document
`document` - adds code lens at the top of the document
`containers` - adds code lens at the start of container-like symbols (modules, classes, interfaces, etc)
`blocks` - adds code lens at the start of block-like symbols (functions, methods, etc) lines -|`gitlens.codeLens.scopesByLanguage`|Specifies where Git code lens will be shown in the document for the specified languages -|`gitlens.codeLens.symbolScopes`|Specifies a set of document symbols where Git code lens will or will not be shown in the document
Prefix with `!` to not show Git code lens for the symbol
Must be a member of `SymbolKind` ### Custom Remotes Settings diff --git a/images/gitlens-header.png b/images/gitlens-header.png new file mode 100644 index 0000000000000000000000000000000000000000..344a3d451b624fb22787f2bff657e03ae7c81e06 GIT binary patch literal 37637 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%0DVHc%o5<<<+O^L36ZPRY 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 literal 0 HcmV?d00001 diff --git a/images/screenshot-code-lens.png b/images/screenshot-code-lens.png index 05b2cf7f2f207af12ced3e5db9a940bfb931e62e..c0698941268498079b584c508e3eeeafffaf24b9 100644 GIT binary patch literal 12748 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 diff --git a/images/screenshot-current-line-blame.png b/images/screenshot-current-line-blame.png new file mode 100644 index 0000000000000000000000000000000000000000..5ace50a5a6ad8a1818210486091a2715e94bd8ef GIT binary patch literal 7691 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 G@;?Bk002G+0{{R3wJYmp00004XF*Lt006O% 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 diff --git a/src/ui/settings/index.html b/src/ui/settings/index.html index 45a456d..3ec7120 100644 --- a/src/ui/settings/index.html +++ b/src/ui/settings/index.html @@ -109,7 +109,7 @@ -

Adds an on-demand GitLens Results view to explore commit searches, visualize comparisions between branches, tags, commits, and more

+

Adds an on-demand GitLens Results view to explore commits, histories, and searches, or visualize comparisions between branches, tags, commits, and more

@@ -278,7 +278,7 @@ -

Adds Git blame annotations for the current file to the gutter

+

Adds on-demand Git blame annotations to the gutter for the whole file

diff --git a/src/ui/welcome/index.html b/src/ui/welcome/index.html index e94e419..9fd9677 100644 --- a/src/ui/welcome/index.html +++ b/src/ui/welcome/index.html @@ -48,9 +48,10 @@

Here are just some of the features that GitLens provides,

  • a GitLens explorer to navigate and explore repositories or file histories
  • -
  • an on-demand GitLens Results view to explore commit searches, visualize comparisions between branches, tags, or commits, and more
  • +
  • an on-demand GitLens Results view to explore commits, histories, and searches, or visualize comparisions between branches, tags, commits, and more
  • Git authorship code lens showing the most recent commit and # of authors to the top of files and/or on code blocks
  • an unobtrusive Git blame annotation to the end of the current line
  • +
  • on-demand Git blame annotations, including a heatmap, to the gutter for the whole file
  • detailed Git blame information accessible via hovers
  • a status bar Git blame annotation showing author and date, by default, about the current line
  • many powerful commands for exploring commits and histories, comparing and navigating revisions, stash access, repository status, and more