This is an automated email from the ASF dual-hosted git repository.
mattcasters pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new d968ec7b33 Add pages for the Git and Git commit perspectives and bring
the git pages up to date with the current Hop Gui. #7120 (#8919)
d968ec7b33 is described below
commit d968ec7b3398e52f26d81bc819343e95353878ad
Author: Adalennis <[email protected]>
AuthorDate: Wed Oct 14 18:43:57 2026 +0200
Add pages for the Git and Git commit perspectives and bring the git pages
up to date with the current Hop Gui. #7120 (#8919)
* Add pages for the Git and Git commit perspectives and bring the git pages
up to date with the current Hop Gui. #7120
* Issue #7120 : Correct the git pages where they do not match the plugin
---------
Co-authored-by: mattcasters <[email protected]>
---
.../hop-gui/hop-gui-file-explorer-right-menu.png | Bin 185129 -> 106517 bytes
.../assets/images/hop-gui/hop-gui-git-toolbar.png | Bin 6195 -> 13835 bytes
.../ROOT/assets/images/hop-gui/hop-gui-no-git.png | Bin 4822 -> 12771 bytes
.../assets/images/icons/git-commit-perspective.svg | 7 ++
.../ROOT/assets/images/icons/git-delete.svg | 24 ++++++
.../ROOT/assets/images/icons/git-perspective.svg | 10 +++
.../ROOT/assets/images/icons/select-target.svg | 4 +
docs/hop-user-manual/modules/ROOT/nav.adoc | 2 +
.../modules/ROOT/pages/hop-gui/hop-gui-git.adoc | 87 +++++++++-----------
.../pages/hop-gui/perspective-file-explorer.adoc | 30 ++++---
.../ROOT/pages/hop-gui/perspective-git-commit.adoc | 76 +++++++++++++++++
.../ROOT/pages/hop-gui/perspective-git.adoc | 90 +++++++++++++++++++++
.../pages/snippets/hop-gui/perspectives-list.adoc | 4 +
13 files changed, 273 insertions(+), 61 deletions(-)
diff --git
a/docs/hop-user-manual/modules/ROOT/assets/images/hop-gui/hop-gui-file-explorer-right-menu.png
b/docs/hop-user-manual/modules/ROOT/assets/images/hop-gui/hop-gui-file-explorer-right-menu.png
index 1c266fd355..17052aea55 100644
Binary files
a/docs/hop-user-manual/modules/ROOT/assets/images/hop-gui/hop-gui-file-explorer-right-menu.png
and
b/docs/hop-user-manual/modules/ROOT/assets/images/hop-gui/hop-gui-file-explorer-right-menu.png
differ
diff --git
a/docs/hop-user-manual/modules/ROOT/assets/images/hop-gui/hop-gui-git-toolbar.png
b/docs/hop-user-manual/modules/ROOT/assets/images/hop-gui/hop-gui-git-toolbar.png
index 60e56daed3..e1a0e35c5a 100644
Binary files
a/docs/hop-user-manual/modules/ROOT/assets/images/hop-gui/hop-gui-git-toolbar.png
and
b/docs/hop-user-manual/modules/ROOT/assets/images/hop-gui/hop-gui-git-toolbar.png
differ
diff --git
a/docs/hop-user-manual/modules/ROOT/assets/images/hop-gui/hop-gui-no-git.png
b/docs/hop-user-manual/modules/ROOT/assets/images/hop-gui/hop-gui-no-git.png
index 2660890c88..870f279333 100644
Binary files
a/docs/hop-user-manual/modules/ROOT/assets/images/hop-gui/hop-gui-no-git.png
and
b/docs/hop-user-manual/modules/ROOT/assets/images/hop-gui/hop-gui-no-git.png
differ
diff --git
a/docs/hop-user-manual/modules/ROOT/assets/images/icons/git-commit-perspective.svg
b/docs/hop-user-manual/modules/ROOT/assets/images/icons/git-commit-perspective.svg
new file mode 100644
index 0000000000..5c17f0836f
--- /dev/null
+++
b/docs/hop-user-manual/modules/ROOT/assets/images/icons/git-commit-perspective.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0
0 800 800">
+<path fill="#0E3A5A"
d="M700,350H593.75c-27.566-106.962-136.622-171.326-243.584-143.76
+
C279.648,224.414,224.58,279.481,206.406,350H100c-27.614,0-50,22.386-50,50s22.386,50,50,50h106.328
+
c27.481,106.983,136.487,171.433,243.471,143.951C520.441,575.805,575.604,520.642,593.75,450H700c27.613,0,50-22.386,50-50
+ S727.614,350,700,350z
M400,500c-55.229,0-100-44.771-100-100s44.771-100,100-100c55.228,0,100,44.771,100,100
+ C499.94,455.203,455.203,499.939,400,500z"/>
+</svg>
diff --git
a/docs/hop-user-manual/modules/ROOT/assets/images/icons/git-delete.svg
b/docs/hop-user-manual/modules/ROOT/assets/images/icons/git-delete.svg
new file mode 100644
index 0000000000..7e495d3d1f
--- /dev/null
+++ b/docs/hop-user-manual/modules/ROOT/assets/images/icons/git-delete.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ enable-background="new 0 0 97 97"
+ viewBox="0 0 97 97"
+ height="97px"
+ width="97px"
+ y="0px"
+ x="0px"
+ version="1.1">
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ />
+ <g
+ transform="matrix(0.84322823,0,0,0.84322823,0.40051268,0.40098299)"
+ >
+ <path
+ style="fill:#f05133"
+ d="M 92.71,44.408 52.591,4.291 c -2.31,-2.311 -6.057,-2.311
-8.369,0 l -8.33,8.332 10.567,10.567 c 2.456,-0.83 5.272,-0.273 7.229,1.685
1.969,1.97 2.521,4.81 1.67,7.275 l 10.186,10.185 c 2.465,-0.85 5.307,-0.3
7.275,1.671 2.75,2.75 2.75,7.206 0,9.958 -2.752,2.751 -7.208,2.751 -9.961,0
-2.068,-2.07 -2.58,-5.11 -1.531,-7.658 l -9.5,-9.499 v 24.997 c 0.67,0.332
1.303,0.774 1.861,1.332 2.75,2.75 2.75,7.206 0,9.959 -2.75,2.749 -7.209,2.749
-9.957,0 -2.75,-2.754 -2.75,-7.21 0,- [...]
+ </g>
+ <polygon
+ transform="matrix(4.1516888,0,0,4.1516888,-65.646035,-69.674863)"
+ style="fill:#ea102a"
+ points="31.8,39.9 34.7,37 37.6,39.9 38.9,38.5 36,35.6 38.9,32.7
37.6,31.4 34.7,34.3 31.8,31.4 30.4,32.7 33.3,35.6 30.4,38.5 "/>
+</svg>
\ No newline at end of file
diff --git
a/docs/hop-user-manual/modules/ROOT/assets/images/icons/git-perspective.svg
b/docs/hop-user-manual/modules/ROOT/assets/images/icons/git-perspective.svg
new file mode 100644
index 0000000000..1e1ebc1db2
--- /dev/null
+++ b/docs/hop-user-manual/modules/ROOT/assets/images/icons/git-perspective.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="97px" height="97px" viewBox="0
0 97 97">
+ <path fill="#0e3a5a"
d="M92.71,44.408L52.591,4.291c-2.31-2.311-6.057-2.311-8.369,0l-8.33,8.332L46.459,23.19
+
c2.456-0.83,5.272-0.273,7.229,1.685c1.969,1.97,2.521,4.81,1.67,7.275l10.186,10.185c2.465-0.85,5.307-0.3,7.275,1.671
+
c2.75,2.75,2.75,7.206,0,9.958c-2.752,2.751-7.208,2.751-9.961,0c-2.068-2.07-2.58-5.11-1.531-7.658l-9.5-9.499v24.997
+
c0.67,0.332,1.303,0.774,1.861,1.332c2.75,2.75,2.75,7.206,0,9.959c-2.75,2.749-7.209,2.749-9.957,0c-2.75-2.754-2.75-7.21,0-9.959
+
c0.68-0.679,1.467-1.193,2.307-1.537V36.369c-0.84-0.344-1.625-0.853-2.307-1.537c-2.083-2.082-2.584-5.14-1.516-7.698
+
L31.798,16.715L4.288,44.222c-2.311,2.313-2.311,6.06,0,8.371l40.121,40.118c2.31,2.311,6.056,2.311,8.369,0L92.71,52.779
+ C95.021,50.468,95.021,46.719,92.71,44.408z"/>
+</svg>
diff --git
a/docs/hop-user-manual/modules/ROOT/assets/images/icons/select-target.svg
b/docs/hop-user-manual/modules/ROOT/assets/images/icons/select-target.svg
new file mode 100644
index 0000000000..0cebe61c03
--- /dev/null
+++ b/docs/hop-user-manual/modules/ROOT/assets/images/icons/select-target.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024">
+ <path fill="#0E3A5A" d="M850.688 554.666667A341.504 341.504 0 0 1
554.666667 850.688V938.666667h-85.333334v-87.978667A341.504 341.504 0 0 1
173.312 554.666667H85.333333v-85.333334h87.978667A341.504 341.504 0 0 1
469.333333 173.312V85.333333h85.333334v87.978667A341.504 341.504 0 0 1 850.688
469.333333H938.666667v85.333334h-87.978667zM512 768a256 256 0 1 0 0-512 256 256
0 0 0 0 512z m0-128a128 128 0 1 0 0-256 128 128 0 0 0 0 256z" />
+</svg>
\ No newline at end of file
diff --git a/docs/hop-user-manual/modules/ROOT/nav.adoc
b/docs/hop-user-manual/modules/ROOT/nav.adoc
index 7839154912..d50773cee5 100644
--- a/docs/hop-user-manual/modules/ROOT/nav.adoc
+++ b/docs/hop-user-manual/modules/ROOT/nav.adoc
@@ -45,6 +45,8 @@ under the License.
** xref:hop-gui/perspective-ai-advisor.adoc[AI Assistant]
** xref:hop-gui/perspective-database.adoc[Database perspective]
** xref:hop-gui/perspective-search.adoc[Search]
+** xref:hop-gui/perspective-git-commit.adoc[Git commit perspective]
+** xref:hop-gui/perspective-git.adoc[Git perspective]
** xref:hop-gui/hop-gui-git.adoc[Working with git]
** xref:hop-gui/shortcuts.adoc[Keyboard Shortcuts]
** xref:hop-gui/canvas-mouse.adoc[Canvas Mouse Gestures]
diff --git a/docs/hop-user-manual/modules/ROOT/pages/hop-gui/hop-gui-git.adoc
b/docs/hop-user-manual/modules/ROOT/pages/hop-gui/hop-gui-git.adoc
index 82765d2d04..42a8c47704 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/hop-gui/hop-gui-git.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/hop-gui/hop-gui-git.adoc
@@ -15,16 +15,21 @@ specific language governing permissions and limitations
under the License.
////
:imagesdir: ../../assets/images
-:description: Version control is an important aspect of any serious data
orchestration project.. Hop's file explorer perspective offers the basic
functionality to manage your work in git: pull, push, visual diff, commit etc
are all available from a user friendly ui.
+:description: Version control is an important aspect of any serious data
orchestration project. Hop Gui lets you manage your work in git: commit, push,
pull, branches, history and visual diffs.
= Working with git
Version control is an important aspect of any serious data orchestration
project.
-Hop wants to make it as easy as possible to manage versions for your workflows
and pipelines through the integrated git options in the
xref:hop-gui/perspective-file-explorer.adoc[File Explorer perspective].
+Hop wants to make it as easy as possible to manage versions for your workflows
and pipelines.
+When your project folder is a git repository, Hop Gui adds git options in
three places:
+
+* the toolbar, right-click menu and file colors of the
xref:hop-gui/perspective-file-explorer.adoc[File Explorer perspective],
described on this page;
+* the branch menu in the status bar, described on this page;
+* two perspectives of their own: xref:hop-gui/perspective-git-commit.adoc[Git
commit] to review and commit your changes, and
xref:hop-gui/perspective-git.adoc[Git] for branches, tags and the commit
history.
== File Explorer Toolbar
-If you open the file explorer for a project that is not version controlled in
git, the git icons in the file explorer's main toolbar (top left) will be shown
as greyed-out and disabled.
+If you open the file explorer for a project that is not version controlled in
git, the git icons in the file explorer's toolbar will be shown as greyed-out
and disabled.
image::hop-gui/hop-gui-no-git.png[No git available,width="50%"]
@@ -37,7 +42,7 @@ The available options to work with files and the available
git operations in thi
[options="header", cols="1,2,5,1"]
|===
|icon|action|description|shortcut
-|image:icons/arrow-right.svg[width="24px"]|Open selected file|Opens the
selected file in the appropriate editor (pipeline or workflow editor for
workflows and pipelines, text editor for other file.|double-click
+|image:icons/arrow-right.svg[width="24px"]|Open selected file|Opens the
selected file in the appropriate editor (pipeline or workflow editor for
workflows and pipelines, text editor for other files).|F3, double-click
|image:icons/folder-add.svg[width="24px"]|Add folder|adds a new folder at the
selected location. A popup is shown for the folder name.|
|image:getting-started/icons/expand-all.svg[width="24px"]|Expand all
folders|Display all nested folders in the directory tree.|
|image:getting-started/icons/collapse-all.svg[width="24px"]|Collapse all
folders|Hide all nested folders in the directory tree.|
@@ -45,45 +50,55 @@ The available options to work with files and the available
git operations in thi
|image:icons/rename.svg[width="24px"]|Rename the selected file|Makes the
selected file name editable to allow renaming.|F2
|image:icons/refresh.svg[width="24px"]|Refresh|Refreshes the projects folder
and file structure.|F5
|image:getting-started/icons/hide.svg[width="24px"]|Show or hide files|Show or
hide files or directories.|
-|image:icons/git-info.svg[width="24px"]|Git info|Populates the file explorer's
git dialog with version information for the selected file.|
-|image:icons/git-add.svg[width="24px"]|Git Add|Add the selected file to
version control.|
-|image:icons/git-revert.svg[width="24px"]|Git Revert|Revert file to last
committed version (HEAD).|
-|image:icons/git-commit.svg[width="24px"]|Git commit|Commit the latest changes
for the selected file (providing a commit message).|
-|image:icons/push.svg[width="24px"]|Git push|Push the recent changes to the
remote repository.|
-|image:icons/pull.svg[width="24px"]|Git pull|Pull the latest changes from the
remote repository.|
+|image:icons/select-target.svg[width="24px"]|Select opened file|Selects the
file of the active editor tab in the tree.|ALT+F1
+|image:icons/git-info.svg[width="24px"]|Git info|Opens a tab with the git
information of the selected file or folder: status, branch, revisions and
changed files.|
+|image:icons/git-add.svg[width="24px"]|Git Add|Stage the unstaged changes in
the selection, including edits to files git already tracks.|
+|image:icons/git-revert.svg[width="24px"]|Git Revert|Restore modified files in
the selection from the last committed version (HEAD). A new staged file is only
unstaged and stays on disk; deleting it is Git Clean. A dialog lets you pick
the files.|
+|image:icons/git-delete.svg[width="24px"]|Git Clean|Delete files that git does
not track from disk. A dialog lets you pick the files.|
+|image:icons/git-commit.svg[width="24px"]|Git commit|Opens the
xref:hop-gui/perspective-git-commit.adoc[Git commit perspective] to review and
commit your changes. In Hop Web it opens a commit dialog instead.|
|===
-NOTE: Only the available options are availabe at a given time. E.g. `git add`
will not be available for files that already are in version control.
+NOTE: Only the options that apply are available at a given time. Git Add is
available when the selection still has unstaged changes, and it is disabled
once those changes are staged.
+The git options are also available in the right-click menu of the file
explorer tree.
== File Explorer Tree
In the folder and file structure tree below the toolbar, files use a color
coding scheme to indicate the git status of a file:
-* black: unchanged.
-This is the latest version of the file available in git, no changes detected.
+* black: unchanged, or a deleted path.
+An unchanged file is the latest version in git.
+A deletion stays black whether or not it is staged, so it is not red.
* grey: this file is ignored
-* blue: staged for commit.
+* green: a staged add, copy, or rename.
+* blue: a staged content change.
This file is ready to be committed ('Git Commit')
-* red: not staged for commit.
-Add this file to git before changes can be committed ('Git Add').
+* red: an unstaged add, copy, rename, or content change.
+Stage it with 'Git Add' before the changes can be committed.
+
+== Branches in the status bar
+
+The status bar at the bottom of the window shows the current branch next to
the active project and environment.
+Click it to open the branch menu:
+
+* Create branch, Merge branch, Rename branch and Delete branch.
+* Push and Pull.
+* The local and remote-tracking branches. The current local branch is marked;
click another name, including a remote-tracking name, to check that ref out.
== Working with files in git
Add a file::
Click on a file that is not yet staged for commit (red), click 'Git Add'.
-The color of the file changes to blue (staged for commit).
+The color of the file changes to green (staged add, copy, or rename) or blue
(staged content change).
Commit a file::
-Click on a file that is staged for commit (blue), click 'Git Commit'.
-A popup dialog will ask to confirm the file to commit, and will show a popup
for your commit message.
-Change the default 'Commit Message' to a commit message that describes the
changes you made to the file.
+Click 'Git Commit' to open the xref:hop-gui/perspective-git-commit.adoc[Git
commit perspective], check the files to commit, enter a commit message and
click 'Commit'.
The file color changes to black (no changes).
Show git info::
Click on a file that is under version control (black or blue).
The file explorer will show the git status for this file: the file or folder,
status, branch and a revisions table (list of previous commits).
-Select one of the available commits to show the changed files to show the
changed files for that revision.
+Select one of the available commits to show the changed files for that
revision.
Select any of the files in the revision from the 'Changed files' list to show
the git diff information on the right hand side.
For workflows and pipelines, click 'Visual diff' to open the before and after
versions of the file in new tabs.
Hop will show an additional icon in the upper right corner of the action or
transform icon to indicate the git change that was made (green for added or
yellow for changed)
@@ -95,35 +110,7 @@ Uncheck "Ignore position in the visual diff" in the
configuration options below
A transform or action that was renamed is marked as changed, rather than as
one that was removed and another that was added.
The hops around it are left alone.
-This is recognised as long as the rename is all that happened to it, a move
aside: renaming and editing in the same commit still shows up as a removal plus
an addition, because there is nothing left to recognise it by.
-
-== Git Commit Perspective
-
-The git commit perspective (`CTRL+SHIFT+O`, `CMD+SHIFT+O` on macOS) lists your
changes in the same three groups `git status` reports:
-
-Staged:: added to git's index with 'Add', part of the next commit.
-Unstaged:: changed files that git tracks, but the changes are not in the index.
-Untracked:: files git doesn't know about yet, because they were never added.
-
-The toolbar and right-click options act on the files whose checkbox is ticked,
not on the highlighted row.
-Staged and unstaged files are ticked for you, so a commit takes your work in
progress along: untick a file (or unstage it) to leave it out.
-Untracked files are listed but never ticked: committing a file for the first
time is something you decide, tick it yourself to include it.
-
-[options="header", cols="1,2,5,1"]
-|===
-|icon|action|description|shortcut
-|image:icons/refresh.svg[width="24px"]|Refresh|Reload the list of staged and
unstaged files.|F5
-|image:icons/git-add.svg[width="24px"]|Add|Stage the checked unstaged or
untracked files. They move to 'Staged' and become part of the next commit. For
an untracked file this is also what puts it under version control.|CTRL+ALT+A
-|image:icons/git-unstage.svg[width="24px"]|Unstage|Take the checked files out
of the next commit. They move back to 'Unstaged' (or to 'Untracked' if they
were never committed before), your changes are kept.|CTRL+ALT+U
-|image:icons/git-restore.svg[width="24px"]|Restore|Throw the changes in the
checked files away and restore the last committed version (HEAD). Asks for
confirmation.|CTRL+ALT+Z
-|image:icons/delete.svg[width="24px"]|Delete|Delete the checked files from
disk.|DEL
-|===
-
-WARNING: Unstage and Restore both act on staged files, but they do very
different things.
-Unstage only takes a file out of the next commit and keeps your work, Restore
throws your changes away.
-That is why Restore asks for confirmation and Unstage does not: nothing is
lost by unstaging, you can stage the file again with 'Add'.
-
-The same options are available in the right-click menu of the file list.
+This is recognised as long as the rename is all that happened to it, apart
from a move: renaming and editing in the same commit still shows up as a
removal plus an addition, because there is nothing left to recognise it by.
== Git Configuration options
diff --git
a/docs/hop-user-manual/modules/ROOT/pages/hop-gui/perspective-file-explorer.adoc
b/docs/hop-user-manual/modules/ROOT/pages/hop-gui/perspective-file-explorer.adoc
index dc9f5ac2a9..32c1eb4518 100644
---
a/docs/hop-user-manual/modules/ROOT/pages/hop-gui/perspective-file-explorer.adoc
+++
b/docs/hop-user-manual/modules/ROOT/pages/hop-gui/perspective-file-explorer.adoc
@@ -65,6 +65,7 @@ image::hop-gui/perspective-explorer-toolbar-items.png[File
explorer toolbar item
* Rename: Rename a file or folder. Only one file or folder at a time.
* Refresh: Refresh the file list.
* Show or hide files: Show or hide files or directories.
+* Select opened file (`ALT+F1`): Select the file of the active editor tab in
the tree.
New pipelines, workflows and files are created from the file explorer's
right-click menu rather than the toolbar; see the "Right-click menu options"
section below.
@@ -92,17 +93,21 @@
image::hop-gui/configuration-perspective-open-help-pages-in.png[Open help pages
=== Description
-If the git plugin (folder `plugins/misc/git`) is installed, the file explorer
will look for a `.git/config` file in the project home folder. It this exists
the explorer perspective will start to color code the files listed:
+If the git plugin (folder `plugins/misc/git`) is installed, the file explorer
will look for a `.git/config` file in the project home folder. If this exists
the explorer perspective will start to color code the files listed:
-* red: the file has not been added to git (un-staged).
-* blue: the file has been changed (staged).
+* red: an unstaged add, copy, rename, or content change.
+* green: a staged add, copy, or rename.
+* blue: a staged content change.
+* black: a deleted path, staged or not.
* gray: the file is ignored by git.
+See xref:hop-gui/hop-gui-git.adoc[Working with git] for all the git options in
Hop Gui.
+
=== Git
==== Git info
-The "Git Info" icon in the toolbar will be enabled if there is information
regarding the file or folder that is selected. If you click on it, you'll be
able to all sorts of information regarding the git history in a new tab:
+The "Git Info" icon in the toolbar will be enabled if there is information
regarding the file or folder that is selected. If you click on it, you'll be
able to see all sorts of information regarding the git history in a new tab:
image::hop-gui/perspective-explorer-git-info-panel.png[Git information shown
in a tab]
@@ -110,7 +115,7 @@ Below the revision history you can see the revisions of a
file. If you select a
image::hop-gui/perspective-explorer-git-visual-diff-example.png[Git visual
diff example]
-Small information icons will be added to the various transforms, actions and
hops to indicate if they were changes, deleted or added.
+Small information icons will be added to the various transforms, actions and
hops to indicate if they were changed, deleted or added.
=== Right-click menu options
The right-click menu in Apache Hop Git integration offers several useful
options to help manage your files and Git operations directly from the
interface. Here’s a breakdown of each option:
@@ -127,8 +132,9 @@ The right-click menu in Apache Hop Git integration offers
several useful options
* Copy path: Copies the full path of the selected file or folder to your
clipboard, useful for quick navigation or sharing the location with others.
* Git Info: Displays detailed information about the Git status of the selected
file, including any recent changes.
* Git Add: Stages the selected file(s) for commit, meaning the changes are
prepared for inclusion in your next Git commit.
-* Git Revert: Reverts any changes made to the selected file, restoring it to
the last committed state. This is helpful when you need to undo accidental
modifications.
-* Git Commit: Opens a dialog for committing staged changes to your local Git
repository. You can add a descriptive commit message summarizing your updates.
+* Git Revert: Restores modified files in the selection from the last committed
version (HEAD). A new staged file is only unstaged and stays on disk; deleting
it is Git Clean. A dialog lets you pick the files.
+* Git Clean: Deletes files that git does not track from disk, after you pick
them in a dialog.
+* Git Commit: Opens the xref:hop-gui/perspective-git-commit.adoc[Git commit
perspective], where you review your changes and commit them with a message. In
Hop Web it opens a commit dialog instead.
* Delete: Removes the selected file or folder from your project. Make sure to
use this carefully, as it permanently deletes the item from your directory.
image::hop-gui/hop-gui-file-explorer-right-menu.png[git right-click menu
options in the explorer perspective]
@@ -137,11 +143,13 @@ image::hop-gui/hop-gui-file-explorer-right-menu.png[git
right-click menu options
Here are the basic git operations that are supported:
+* Git Info: show the git status and history of the file or folder.
* Git Add: stage the file to include it in a commit.
-* Git Commit: commit changes to origin.
-* Git Revert: checkout file or folder to revert changes.
-* Git Push: push changes.
-* Git Pull: pull changes.
+* Git Revert: restore modified files from HEAD. A new staged file is only
unstaged and stays on disk.
+* Git Clean: delete files git does not track.
+* Git Commit: open the Git commit perspective to commit your changes. In Hop
Web it opens a commit dialog instead.
+
+Push, pull and the branch operations are in the branch menu of the status bar
and in the xref:hop-gui/perspective-git.adoc[Git perspective].
You can access these operations from the toolbar above the file explorer tree:
diff --git
a/docs/hop-user-manual/modules/ROOT/pages/hop-gui/perspective-git-commit.adoc
b/docs/hop-user-manual/modules/ROOT/pages/hop-gui/perspective-git-commit.adoc
new file mode 100644
index 0000000000..da6cdd76b1
--- /dev/null
+++
b/docs/hop-user-manual/modules/ROOT/pages/hop-gui/perspective-git-commit.adoc
@@ -0,0 +1,76 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+:imagesdir: ../../assets/images
+:description: The Git commit perspective lists your staged, unstaged and
untracked changes so you can review them and commit them, with or without a
push.
+
+= Git Commit Perspective
+
+Icon: image:icons/git-commit-perspective.svg[width="24px"]
+
+Keyboard shortcut: `CTRL+SHIFT+O` (`CMD+SHIFT+O` on macOS)
+
+== Description
+
+The Git commit perspective is where you review the changes in your project and
commit them.
+It is available when the project folder is a git repository.
+See xref:hop-gui/hop-gui-git.adoc[Working with git] for the other git options
in Hop Gui.
+
+== The list of changes
+
+The perspective lists your changes in the same three groups `git status`
reports:
+
+Staged:: added to git's index with 'Add', part of the next commit.
+Unstaged:: changed files that git tracks, but the changes are not in the index.
+Untracked:: files git doesn't know about yet, because they were never added.
+
+Add, Unstage, Restore, Delete and Add to .gitignore act on the files whose
checkbox is ticked, not on the highlighted row.
+Show text diff and Show visual diff follow the first highlighted file instead.
+Staged and unstaged files are ticked for you, so a commit takes your work in
progress along: untick a file (or unstage it) to leave it out.
+Untracked files are listed but never ticked: committing a file for the first
time is something you decide, tick it yourself to include it.
+
+[options="header", cols="1,2,5,1"]
+|===
+|icon|action|description|shortcut
+|image:icons/refresh.svg[width="24px"]|Refresh|Reload the list of staged and
unstaged files.|F5
+|image:icons/git-add.svg[width="24px"]|Add|Stage the checked unstaged or
untracked files. They move to 'Staged' and become part of the next commit. For
an untracked file this is also what puts it under version control.|CTRL+ALT+A
+|image:icons/git-unstage.svg[width="24px"]|Unstage|Take the checked files out
of the next commit. They move back to 'Unstaged' (or to 'Untracked' if they
were never committed before), your changes are kept.|CTRL+ALT+U
+|image:icons/git-restore.svg[width="24px"]|Restore|Discard staged edits to
files git already tracks and restore the last committed version (HEAD). A
staged new file is only unstaged and stays on disk, unless 'Delete local copies
of added files' is checked. That toggle is off by default. Asks for
confirmation.|CTRL+ALT+Z
+|image:icons/delete.svg[width="24px"]|Delete|Delete the checked files from
disk.|DEL
+|===
+
+WARNING: Unstage and Restore both act on staged files, but they do very
different things.
+Unstage only takes a file out of the next commit and keeps your work.
+Restore discards staged edits to files git already tracks.
+A staged new file is only unstaged unless you check 'Delete local copies of
added files'.
+That is why Restore asks for confirmation and Unstage does not: nothing is
lost by unstaging, you can stage the file again with 'Add'.
+
+The same options are available in the right-click menu of the file list,
together with:
+
+* Add to .gitignore: have git ignore the file from now on.
+* Show text diff (`CTRL+D`): the changes in the first highlighted file as
text. This follows the highlight, not the checkbox.
+* Show visual diff (`CTRL+SHIFT+D`): for a pipeline or workflow, open the
before and after versions of the first highlighted file side by side. This
follows the highlight, not the checkbox.
+
+== Committing
+
+Enter a commit message below the list of changes, then click:
+
+Commit:: commit the checked files.
+Commit and Push:: commit the checked files and push the commit to the remote.
+
+Tick 'Amend' first to put the checked files into your last commit instead of
creating a new one.
+
+`CTRL+K` (`CMD+K` on macOS) ticks all staged and unstaged files and moves the
cursor to the commit message, so committing all your work in progress is
`CTRL+K`, typing the message and 'Commit'.
diff --git
a/docs/hop-user-manual/modules/ROOT/pages/hop-gui/perspective-git.adoc
b/docs/hop-user-manual/modules/ROOT/pages/hop-gui/perspective-git.adoc
new file mode 100644
index 0000000000..00ccb05cdf
--- /dev/null
+++ b/docs/hop-user-manual/modules/ROOT/pages/hop-gui/perspective-git.adoc
@@ -0,0 +1,90 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+:imagesdir: ../../assets/images
+:description: The Git perspective shows the branches, tags and commit history
of your project, and lets you check out, merge, tag, revert and cherry-pick
from there.
+
+= Git Perspective
+
+Icon: image:icons/git-perspective.svg[width="24px"]
+
+Keyboard shortcut: `CTRL+SHIFT+G` (`CMD+SHIFT+G` on macOS)
+
+== Description
+
+The Git perspective shows the branches, tags and commit history of your
project.
+It is available when the project folder is a git repository.
+To commit your changes, use the xref:hop-gui/perspective-git-commit.adoc[Git
commit perspective].
+See xref:hop-gui/hop-gui-git.adoc[Working with git] for the other git options
in Hop Gui.
+
+The perspective has four parts:
+
+. On the left, the branches and tags: Local, Remote and Tags.
+A search field above Local, Remote and Tags filters the commit list by
message, author and abbreviated id.
+. In the middle, the commit history: a graph of the branches, with their names
next to the commits they point to, and the message, author, date and id of each
commit.
+When you have uncommitted changes, they are shown as the first line.
+. On the right, the files changed in the selected commit.
+. Below them, the differences in the selected file.
+
+== Branches and tags
+
+Right-click a branch or tag on the left:
+
+[options="header", cols="2,5,1"]
+|===
+|action|description|shortcut
+|Checkout|Check out the branch or tag.|
+|Create branch from|Create a new branch that starts at this branch or tag.|
+|Merge into|Merge this branch into the current branch.|
+|Fetch|Fetch from the remote. Available on any branch or tag.|
+|Pull|Pull the current branch from the remote. Offered only when a local
branch is selected.|
+|Push|Push the selected local branch or tag. Not available on a
remote-tracking branch.|
+|Rename|Rename a local branch, or a remote-tracking branch other than the
remote's default branch. Not available on a tag.|F2
+|Delete|Delete the branch or tag.|DEL
+|===
+
+== The commit history
+
+The toolbar above the history refreshes it, creates a branch or tag at the
selected commit, cherry-picks the selected commit, and fetches, pulls
(`CTRL+T`) and pushes.
+Its eye button shows or hides commits that are only reachable from other local
branches.
+
+Right-click a commit for more:
+
+[options="header", cols="2,5"]
+|===
+|action|description
+|Create branch, Create tag|Create a branch or a tag at this commit.
+|Checkout Revision|Check out this commit.
+|Copy Revision Id|Copy the id of the commit to the clipboard.
+|Reset current branch to here|Move the current branch to this commit. You
choose what happens to the changes made after it: keep them staged (soft), keep
them unstaged (mixed) or discard them (hard).
+|Revert commit|Create a new commit that undoes this one.
+|Cherry-pick commit|Apply this commit to the current branch.
+|===
+
+== The files of a commit
+
+Select a file in the changed files to see its differences below.
+The toolbar above the files and their right-click menu act on the selected
file:
+
+[options="header", cols="2,5,1"]
+|===
+|action|description|shortcut
+|Show text diff|Show the changes in the file as text.|CTRL+D
+|Show visual diff|For a pipeline or workflow, open the versions before and
after the commit side by side.|CTRL+SHIFT+D
+|Copy Path|Copy the path of the file to the clipboard.|
+|Revert file|Undo what this commit did to the file, and commit that.|
+|Cherry-pick file|Take the version of the file in this commit, and commit it.|
+|===
diff --git
a/docs/hop-user-manual/modules/ROOT/pages/snippets/hop-gui/perspectives-list.adoc
b/docs/hop-user-manual/modules/ROOT/pages/snippets/hop-gui/perspectives-list.adoc
index 50dc3ba619..09a9e9bd9b 100644
---
a/docs/hop-user-manual/modules/ROOT/pages/snippets/hop-gui/perspectives-list.adoc
+++
b/docs/hop-user-manual/modules/ROOT/pages/snippets/hop-gui/perspectives-list.adoc
@@ -26,6 +26,10 @@ under the License.
* image:icons/ai-provider.svg[width="24px"]
xref:hop-gui/perspective-ai-advisor.adoc[AI Assistant] (also as a floating
window or bottom-dock tab; off by default)
+* image:icons/git-commit-perspective.svg[width="24px"]
xref:hop-gui/perspective-git-commit.adoc[Git commit] (when the project is a git
repository)
+
+* image:icons/git-perspective.svg[width="24px"]
xref:hop-gui/perspective-git.adoc[Git] (when the project is a git repository)
+
* image:icons/plugin.svg[width="24px"]
xref:hop-gui/perspective-plugin.adoc[Plugins explorer]
* image:icons/graph_logging.svg[width="24px"]
xref:hop-gui/perspective-graph-logging.adoc[Graph logging]