From 69b10b640dc4a268962e35a251f221beb0218935 Mon Sep 17 00:00:00 2001
From: UNV
Date: Thu, 28 Aug 2025 22:41:57 +0300
Subject: [PATCH 1/2] Sorting GitLocalize.
---
.../en_US/consulo.git.GitLocalize.yaml | 1498 ++++++++---------
1 file changed, 749 insertions(+), 749 deletions(-)
diff --git a/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.git.GitLocalize.yaml b/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.git.GitLocalize.yaml
index e0965b3..e822222 100644
--- a/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.git.GitLocalize.yaml
+++ b/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.git.GitLocalize.yaml
@@ -1,1133 +1,1133 @@
-git4idea.vcs.name:
- text: Git
+action.Annotate.with.Blame.text:
+ text: A_nnotate with Git Blame
+action.Git.Branches.text:
+ text: _Branches...
+action.Git.Fetch.text:
+ text: Fetch
+action.Git.Merge.text:
+ text: Merge...
+action.Git.Pull.text:
+ text: Pull...
+action.Git.Rebase.Abort.text:
+ text: Abort Rebase
+action.Git.Rebase.Continue.text:
+ text: Continue Rebase
+action.Git.Rebase.Skip.text:
+ text: Skip Commit
+action.Git.Rebase.text:
+ text: Rebase...
+action.Git.Reset.text:
+ text: Reset HEAD...
+action.Git.ResolveConflicts.text:
+ text: Resolve Conflicts...
+action.Git.Stash.Silently.text:
+ text: Stash Silently
+action.Git.Stash.UnstashAs.description:
+ text: Pop or apply selected stash as new branch with or without index
+action.Git.Stash.UnstashAs.text:
+ text: Unstash...
+action.Git.Stash.text:
+ text: Stash Changes...
+action.Git.Tag.text:
+ text: New Tag...
+action.Git.Unstash.text:
+ text: Unstash Changes...
+action.selected.directory.text:
+ text: Selected {0,choice,1#Directory|2#Directories}
+action.selected.file.text:
+ text: Selected {0,choice,1#File|2#Files}
action.text.show.all.submitted:
- text: Show all files changed by this commit
+ text: Show all files changed by this commit
add.action.name:
- text: Add
+ text: Add
add.adding:
- text: Adding files...
+ text: Adding files...
addrefspec.button:
- text: Add
-addrefspec.get.references.tooltip:
- text: Get remote tag and branch references (depending on checkbox state).
+ text: Add
addrefspec.get.references:
- text: '&Get References'
+ text: '&Get References'
+addrefspec.get.references.tooltip:
+ text: Get remote tag and branch references (depending on checkbox state).
addrefspec.getting.references.title:
- text: Getting remote references for {0}
-addrefspec.include.branches.tooltip:
- text: The next update references wil retrieve remote branches.
+ text: Getting remote references for {0}
addrefspec.include.branches:
- text: Include &branches
-addrefspec.include.tags.tooltip:
- text: The next update references wil retrieve remote tags.
+ text: Include &branches
+addrefspec.include.branches.tooltip:
+ text: The next update references wil retrieve remote branches.
addrefspec.include.tags:
- text: Include &tags
+ text: Include &tags
+addrefspec.include.tags.tooltip:
+ text: The next update references wil retrieve remote tags.
addrefspec.node.branches:
- text: Branches
+ text: Branches
addrefspec.node.tags:
- text: Tags
+ text: Tags
addrefspec.reference.chooser.tooltip:
- text: Select remote branch and tag references
+ text: Select remote branch and tag references
addrefspec.title:
- text: Add Reference(s)
+ text: Add Reference(s)
annotate.action.name:
- text: Annotate
+ text: Annotate
annotation.tool.tip:
- text: |-
- commit {0}
- Author: {1}
- Date: {2}
+ text: |-
+ commit {0}
+ Author: {1}
+ Date: {2}
- {3}
+ {3}
+branch.delete.merged_to.many:
+ text: 'The branch {0} is however fully merged to the following branches: {1}.'
+branch.delete.merged_to.one:
+ text: The branch {0} is however fully merged to the branch {1}.
+branch.delete.not_fully_merged.description:
+ text: The branch {0} is not fully merged to the branch {1}.
Below is the list of unmerged commits.
+branch.delete.not_fully_merged.description.not_on_branch:
+ text: You are currently not on the branch ({1}).
The branch {0} is not fully merged to {2}.
Below is the list of unmerged commits.
+branch.delete.warning:
+ text: You may still delete the branch {0}, but beware that it cannot be undone.
+button.commit.all.files:
+ text: Commit All Files
changes.retrieving:
- text: Retrieving changes for revision {0}
+ text: Retrieving changes for revision {0}
checking.out:
- text: Checkout {0}
+ text: Checkout {0}
checkout.action.name:
- text: Checkout
+ text: Checkout
+checkout.branch:
+ text: Checkout
checkout.branch.label:
- text: '&Checkout'
+ text: '&Checkout'
checkout.branch.name.exists:
- text: Branch with the same name exists. Use override option to force branch creation.
-checkout.branch:
- text: Checkout
-checkout.create.ref.log.tooltip:
- text: If checked the reference log is created for the branch. It allows time based searches. (the option "-l")
+ text: Branch with the same name exists. Use override option to force branch creation.
checkout.create.ref.log:
- text: Create ref &log
-checkout.include.tags.tooltip:
- text: If checked, the combobox will include tags names as well as branches.
+ text: Create ref &log
+checkout.create.ref.log.tooltip:
+ text: If checked the reference log is created for the branch. It allows time based searches. (the option "-l")
checkout.include.tags:
- text: '&Include tags'
+ text: '&Include tags'
+checkout.include.tags.tooltip:
+ text: If checked, the combobox will include tags names as well as branches.
checkout.invalid.new.branch.name:
- text: Invalid new branch name
-checkout.new.branch.tooltip:
- text: Enter name of new branch here. Leave blank if you do not want to create a new branch.
+ text: Invalid new branch name
checkout.new.branch:
- text: As &new branch
+ text: As &new branch
+checkout.new.branch.tooltip:
+ text: Enter name of new branch here. Leave blank if you do not want to create a new branch.
checkout.override.branch:
- text: '&Override'
+ text: '&Override'
checkout.override.tooltip:
- text: If checked a branch will be created even if a branch with the same name already exists. The previous branch will be deleted.
+ text: If checked a branch will be created even if a branch with the same name already exists. The previous branch will be deleted.
checkout.ref.tooltip:
- text: Select branch, tag, or enter commit reference
+ text: Select branch, tag, or enter commit reference
checkout.retrieving.branches.and.tags:
- text: Retrieving branches and tags
+ text: Retrieving branches and tags
checkout.track.branch:
- text: '&Track branch'
+ text: '&Track branch'
checkout.track.tooltip:
- text: If checked, the newly created branch will track original branch during pull.
-checkout.validate.tooltip:
- text: Use this button to validate reference expression if entered manually.
+ text: If checked, the newly created branch will track original branch during pull.
checkout.validate:
- text: '&Validate'
+ text: '&Validate'
+checkout.validate.tooltip:
+ text: Use this button to validate reference expression if entered manually.
checkout.validation.failed:
- text: Source revision validation failed
+ text: Source revision validation failed
clone.button:
- text: Clone
+ text: Clone
clone.destination.directory.description:
- text: Select a parent directory destination directory for clone
+ text: Select a parent directory destination directory for clone
clone.destination.directory.title:
- text: Parent Directory
+ text: Parent Directory
clone.destination.exists.error:
- text: The path {0} exists. Git cannot clone to an existing directory.
+ text: The path {0} exists. Git cannot clone to an existing directory.
+clone.dialog.checking.git.version:
+ text: Checking Git version…
clone.dir.name:
- text: 'Directory &Name:'
+ text: 'Directory &Name:'
clone.invalid.origin:
- text: The origin name is in invalid format.
+ text: The origin name is in invalid format.
clone.invalid.url:
- text: Repository URL is a malformed URL or non-existent directory.
+ text: Repository URL is a malformed URL or non-existent directory.
clone.origin:
- text: '&Origin Name'
+ text: '&Origin Name'
clone.parent.dir:
- text: '&Parent Directory:'
+ text: '&Parent Directory:'
clone.parent.missing.error:
- text: The parent path {0} must exist.
-clone.repository.url:
- text: 'Git &Repository URL:'
+ text: The parent path {0} must exist.
clone.repository.putty.key:
- text: 'Putty Key:'
+ text: 'Putty Key:'
+clone.repository.url:
+ text: 'Git &Repository URL:'
+clone.test:
+ text: '&Test'
+clone.test.connection.title:
+ text: Test Connection
clone.test.failed.error:
- text: Repository test has failed.
+ text: Repository test has failed.
clone.test.success.message:
- text: Connection to repository {0} has been successful.
-clone.test.connection.title:
- text: Test Connection
-clone.test:
- text: '&Test'
+ text: Connection to repository {0} has been successful.
clone.testing:
- text: Testing repository {0}
+ text: Testing repository {0}
clone.title:
- text: Clone Repository
+ text: Clone Repository
clone.url.is.not.directory.error:
- text: Repository URL is not a directory.
+ text: Repository URL is not a directory.
cloning.repository:
- text: Cloning source repository {0}
+ text: Cloning source repository {0}
command.cancelled:
- text: The command was cancelled.
+ text: The command was cancelled.
commit.action.name:
- text: Comm&it
-commit.author.tooltip:
- text: 'Specify a commit author here if it is different from committer. The author should be in the format: Author Name <author@ema.il>'
-commit.author:
- text: '&Author:'
-commit.amend.tooltip:
- text: Merge this commit with the previous one
+ text: Comm&it
commit.amend:
- text: Amend commit
+ text: Amend commit
+commit.amend.tooltip:
+ text: Merge this commit with the previous one
+commit.author:
+ text: '&Author:'
+commit.author.tooltip:
+ text: 'Specify a commit author here if it is different from committer. The author should be in the format: Author Name <author@ema.il>'
commit.partial.merge.message:
- text: |-
- Partial commit during a {0} is not allowed.
- The following files are not included in commit.
- Perform commit with all files included?
+ text: |-
+ Partial commit during a {0} is not allowed.
+ The following files are not included in commit.
+ Perform commit with all files included?
commit.partial.merge.title:
- text: Partial Merge Commit
-commit.push.changes.tooltip:
- text: When this option is enabled, changes are pushed to the server after commit.
+ text: Partial Merge Commit
commit.push.changes:
- text: '&Push Changes'
-common.current.branch.tooltip:
- text: The currently checked out branch.
+ text: '&Push Changes'
+commit.push.changes.tooltip:
+ text: When this option is enabled, changes are pushed to the server after commit.
common.current.branch:
- text: 'Current Branch:'
-common.do.not.show.tooltip:
- text: If this option is selected, the choice will be remembered, and the dialog will not be shown again.
+ text: 'Current Branch:'
+common.current.branch.tooltip:
+ text: The currently checked out branch.
common.do.not.show:
- text: '&Do not show this dialog again'
-common.git.root.tooltip:
- text: Select Git VCS root
+ text: '&Do not show this dialog again'
+common.do.not.show.tooltip:
+ text: If this option is selected, the choice will be remembered, and the dialog will not be shown again.
common.git.root:
- text: 'Git &Root:'
+ text: 'Git &Root:'
+common.git.root.tooltip:
+ text: Select Git VCS root
common.no.active.branch:
- text:
+ text:
common.refreshing:
- text: Refreshing files
+ text: Refreshing files
computing.annotation:
- text: Computing annotation for {0}
+ text: Computing annotation for {0}
crlf.convert.convert:
- text: Convert Selected
+ text: Convert Selected
crlf.convert.label:
- text: &The following text files have line separator that do not match the project line separator.
Select files you wish to convert to project default line separators before commit.
+ text: &The following text files have line separator that do not match the project line separator.
Select files you wish to convert to project default line separators before commit.
crlf.convert.leave:
- text: Leave Unchanged
-crlf.convert.none.tooltip:
- text: If this option is selected, the file are not attempted to be converted before commit.
+ text: Leave Unchanged
crlf.convert.none:
- text: Do ¬ convert files
+ text: Do ¬ convert files
+crlf.convert.none.tooltip:
+ text: If this option is selected, the file are not attempted to be converted before commit.
crlf.convert.title:
- text: Invalid Line Separators
+ text: Invalid Line Separators
current.branch.action.name:
- text: CurrentBranch
+ text: CurrentBranch
current.branch.change.tracked:
- text: Change Tracked Branch
+ text: Change Tracked Branch
current.branch.message:
- text: 'Checked out branch: {0}'
+ text: 'Checked out branch: {0}'
current.branch.title:
- text: Configure Tracked Branch
+ text: Configure Tracked Branch
+current.branch.tracked.branch:
+ text: '&Branch:'
current.branch.tracked.branch.none:
- text:
+ text:
current.branch.tracked.branch.tooltip:
- text: Select the branch to track
-current.branch.tracked.branch:
- text: '&Branch:'
+ text: Select the branch to track
current.branch.tracked.remote.none:
- text:
+ text:
current.branch.tracked.remote.this:
- text:
-current.branch.tracked.repository.tooltip:
- text: Select repository to track
+ text:
current.branch.tracked.repository:
- text: 'Re&pository:'
+ text: 'Re&pository:'
+current.branch.tracked.repository.tooltip:
+ text: Select repository to track
current.branch.tracked.title:
- text: Tracked Branch
+ text: Tracked Branch
debug.git.exec:
- text: 'DEBUG: work-dir: [{0}] exec: [{1}]'
+ text: 'DEBUG: work-dir: [{0}] exec: [{1}]'
delete.action.name:
- text: Delete
+ text: Delete
diff.find.error:
- text: 'Finding revision for diff: {0}'
+ text: 'Finding revision for diff: {0}'
+error.commit.cant.create.message.file:
+ text: Creation of commit message file failed
error.dialog.title:
- text: Error
+ text: Error
error.list.title:
- text: '{0} Error:'
+ text: '{0} Error:'
error.occurred.during:
- text: Error occurred during ''{0}''
+ text: Error occurred during ''{0}''
+errors.message:
+ text: The Git operation ended with multiple errors:{0}
errors.message.item:
- text: |2-
+ text: |4-
- {0}
-errors.message:
- text: The Git operation ended with multiple errors:{0}
+ {0}
+executable.error.description:
+ text: Git couldn't be started. Probably the path to Git executable is not valid. Fix it.
+executable.error.title:
+ text: Git executable problem
fetch.action.name:
- text: Fetch
+ text: Fetch
fetch.button:
- text: Fetch
-fetch.force.references.update.tooltip:
- text: Forces update of branch references for which update is not forced in reference mapping.
+ text: Fetch
fetch.force.references.update:
- text: Force references &update
+ text: Force references &update
+fetch.force.references.update.tooltip:
+ text: Forces update of branch references for which update is not forced in reference mapping.
fetch.remote.label:
- text: 'Re&mote:'
+ text: 'Re&mote:'
fetch.remote.tooltip:
- text: Remote name or url for fetch
+ text: Remote name or url for fetch
fetch.tags.label:
- text: 'Fetch &tags:'
+ text: 'Fetch &tags:'
fetch.tags.policy.all:
- text: All
+ text: All
fetch.tags.policy.for.fetched.commits:
- text: For fetched commits
+ text: For fetched commits
fetch.tags.policy.none:
- text: None
+ text: None
fetch.tags.tooltip:
- text: Select fetched commits policy- For fetched commits means tags associated with commits on fetched branches are fetched.
- All means that all tags and reference commits are fetched
- None means that no tags are fetched.
+ text: Select fetched commits policy- For fetched commits means tags associated with commits on fetched branches are fetched.
- All means that all tags and reference commits are fetched
- None means that no tags are fetched.
fetch.title:
- text: Git Fetch
+ text: Git Fetch
fetching.tags.title:
- text: Updating tags from {0}
+ text: Updating tags from {0}
fetching.title:
- text: Fetching from {0}
+ text: Fetching from {0}
find.git.description:
- text: Select path to Git executable
+ text: Select path to Git executable
find.git.error.title:
- text: Error Running Git
+ text: Error Running Git
find.git.success.title:
- text: Git executed successfully
+ text: Git executed successfully
find.git.title:
- text: Git Configuration
+ text: Git Configuration
find.git.unsupported.message:
- text: {0}
This version is unsupported, and some plugin functionality could fail to work.
The minimal supported version is {1}.
+ text: {0}
This version is unsupported, and some plugin functionality could fail to work.
The minimal supported version is {1}.
fix.roots.button:
- text: Accept
+ text: Accept
fix.roots.list.tooltip:
- text: The suggested list of Git VCS roots, new roots are marked as bold, removed roots are marked as overstriked.
+ text: The suggested list of Git VCS roots, new roots are marked as bold, removed roots are marked as overstriked.
fix.roots.message:
- text: The following Git VCS roots will be used instead of the current Git VCS roots.
+ text: The following Git VCS roots will be used instead of the current Git VCS roots.
fix.roots.title:
- text: Fix Git VCS Roots
+ text: Fix Git VCS Roots
fix.roots.valid.message:
- text: The invalid Git roots have been fixed already.
+ text: The invalid Git roots have been fixed already.
fix.roots.valid.title:
- text: All Git Roots Are Valid
+ text: All Git Roots Are Valid
+gc.action.name:
+ text: Run Garbage Collector
+general.error:
+ text: Git error
getting.history:
- text: Getting history for {0}
+ text: Getting history for {0}
+git.commit.message.empty:
+ text: Please specify commit message
+git.commit.message.empty.title:
+ text: Commit Message Is Empty
git.default.commit.message:
- text: |2+
+ text: |4+
- # Brief commit description here
+ # Brief commit description here
- # Full commit description here (comment lines starting with '#' will not be included)
+ # Full commit description here (comment lines starting with '#' will not be included)
git.error.exit:
- text: The Git process exited with the code {0}
+ text: The Git process exited with the code {0}
+git.executable.dialog.description:
+ text: Specify the full path to Git executable
+git.executable.dialog.error:
+ text: It doesn't appear to be a valid Git executable
+git.executable.dialog.title:
+ text: Git executable
+git.executable.filechooser.description:
+ text: Specify the full path to Git executable
+git.executable.filechooser.title:
+ text: Git executable
+git.executable.notification.description:
+ text: Probably the path to Git executable is not valid.
+git.executable.notification.title:
+ text: Can't start Git
+git.executable.version.is:
+ text: Git version is {0}
+git.light.status.bar.display.name:
+ text: Git
+git.light.status.bar.text:
+ text: 'Git: {0}'
+git.light.status.bar.tooltip:
+ text: 'Current Git Branch: {0}'
+git.new.tag.dialog.tag.name.label:
+ text: Enter the name of new tag
+git.new.tag.dialog.title:
+ text: Create New Tag On {0}
+git.push.active.close:
+ text: Close
git.running:
- text: 'Running: {0}'
+ text: 'Running: {0}'
+git.status.bar.widget.name:
+ text: Git Branch
+git.status.bar.widget.text.cherry.pick:
+ text: Cherry-picking in {0}
+git.status.bar.widget.text.merge:
+ text: Merging {0}
+git.status.bar.widget.text.rebase:
+ text: Rebasing {0}
+git.status.bar.widget.text.revert:
+ text: Reverting in {0}
+git.unstash.clear.confirmation.message:
+ text: Remove all stashes? This cannot be undone.
+git.unstash.clear.confirmation.title:
+ text: Remove all stashes?
+git.unstash.drop.confirmation.message:
+ text: Do you want to remove {0}?
"{1}"
+git.unstash.drop.confirmation.title:
+ text: Remove stash {0}?
+git.vcs.config.convert.ask:
+ text: Ask before conversion
git.vcs.config.convert.crlf:
- text: '&Line Separators Conversion:'
+ text: '&Line Separators Conversion:'
git.vcs.config.convert.do.not.convert:
- text: Do not convert
+ text: Do not convert
git.vcs.config.convert.project:
- text: Convert to project line separators
-git.vcs.config.convert.ask:
- text: Ask before conversion
+ text: Convert to project line separators
git.vcs.config.convert.tooltip:
- text: Specify what to do if line separators in a file and in the project code style are different:- Do not convert - do nothing, commit as is.
- Convert to project line separators - before commit convert line separators to match project code style settings.
- Ask before conversion - show dialog and ask what to do.
Note that this setting has nothing common with Git autocrlf and other Git settings.
+ text: Specify what to do if line separators in a file and in the project code style are different:- Do not convert - do nothing, commit as is.
- Convert to project line separators - before commit convert line separators to match project code style settings.
- Ask before conversion - show dialog and ask what to do.
Note that this setting has nothing common with Git autocrlf and other Git settings.
git.vcs.config.path.label:
- text: 'Path to &Git executable:'
+ text: 'Path to &Git executable:'
+git.vcs.config.ssh.mode:
+ text: '&SSH executable:'
git.vcs.config.ssh.mode.idea:
- text: Built-in
+ text: Built-in
git.vcs.config.ssh.mode.native:
- text: Native
+ text: Native
git.vcs.config.ssh.mode.putty:
- text: Putty
+ text: Putty
git.vcs.config.ssh.mode.tooltip:
- text: Specify the version of SSH to be used with Git.- Native means that the native SSH will be used.
- Built-in means that the implementation provided by {0} will be used.
The native implementation might cause hangups on some platforms. In native case, you also might need to configure ssh-askpass for your platform to receive GUI prompts for passwords.
-git.vcs.config.ssh.mode:
- text: '&SSH executable:'
-git.vcs.config.test.label:
- text: 'Test '
+ text: Specify the version of SSH to be used with Git.- Native means that the native SSH will be used.
- Built-in means that the implementation provided by {0} will be used.
The native implementation might cause hangups on some platforms. In native case, you also might need to configure ssh-askpass for your platform to receive GUI prompts for passwords.
git.vcs.config.test:
- text: '&Test'
+ text: '&Test'
+git.vcs.config.test.label:
+ text: 'Test '
+git4idea.vcs.name:
+ text: Git
+group.Git.MainMenu.LocalChanges.text:
+ text: _Uncommitted Changes
+group.Git.MainMenu.MergeActions.text:
+ text: _Merge
+group.Git.MainMenu.RebaseActions.text:
+ text: _Rebase
+group.Patch.MainMenu.text:
+ text: Patch
+group.mainmenu.vcs.current.file.text:
+ text: Current File
index.file.error:
- text: Updating file in the index failed
+ text: Updating file in the index failed
init.add.root.message:
- text: Do you want to add this directory as a VCS root?
+ text: Do you want to add this directory as a VCS root?
init.add.root.title:
- text: Git Init
+ text: Git Init
init.destination.directory.description:
- text: Select directory where the new Git repository will be created.
+ text: Select directory where the new Git repository will be created.
init.destination.directory.title:
- text: Select directory for git init
+ text: Select directory for git init
init.warning.already.under.git:
- text: The selected directory {0} is already under Git.
Are you sure that you want to create a new VCS root?
+ text: The selected directory {0} is already under Git.
Are you sure that you want to create a new VCS root?
init.warning.title:
- text: Git Init
+ text: Git Init
initializing.title:
- text: Initializing repository...
+ text: Initializing repository...
merge.action.name:
- text: Merge
-merge.add.log.information.tooltip:
- text: Add log information to the commit message ("--log" option)
+ text: Merge
merge.add.log.information:
- text: Add &log information
+ text: Add &log information
+merge.add.log.information.tooltip:
+ text: Add log information to the commit message ("--log" option)
merge.branch.button:
- text: Merge
+ text: Merge
merge.branch.message:
- text: Select branch to merge into this one ({0})
+ text: Select branch to merge into this one ({0})
merge.branch.title:
- text: Merge Branches
-merge.branches.tooltip:
- text: The chooser for branches. Select one or more branches to merge (already merged branches are not shown).
+ text: Merge Branches
merge.branches:
- text: '&Branches to merge:'
-merge.commit.message.tooltip:
- text: The commit message to use in case if merge results in commit ("-m" option)
+ text: '&Branches to merge:'
+merge.branches.tooltip:
+ text: The chooser for branches. Select one or more branches to merge (already merged branches are not shown).
merge.commit.message:
- text: Commit &Message
+ text: Commit &Message
+merge.commit.message.tooltip:
+ text: The commit message to use in case if merge results in commit ("-m" option)
merge.default.strategy:
- text:
+ text:
merge.is.not.needed:
- text: Merge is not needed for the file {0}
+ text: Merge is not needed for the file {0}
merge.load.files:
- text: Loading files for merge
-merge.no.commit.tooltip:
- text: Force no commit for merge (the "--no-commit" option)
+ text: Loading files for merge
merge.no.commit:
- text: No &commit
-merge.no.fast.forward.tooltip:
- text: Disable fast forward ("--no-ff" option)
+ text: No &commit
+merge.no.commit.tooltip:
+ text: Force no commit for merge (the "--no-commit" option)
merge.no.fast.forward:
- text: No &fast forward
+ text: No &fast forward
+merge.no.fast.forward.tooltip:
+ text: Disable fast forward ("--no-ff" option)
merge.retrieving.branches:
- text: Retrieving unmerged branches
+ text: Retrieving unmerged branches
merge.squash.commit:
- text: S&quash commit
+ text: S&quash commit
merge.squash.tooltip:
- text: Squash all changes into the single commit ("--squash" option)
-merge.strategy.tooltip:
- text: The merge strategy to use ("-s" option)
+ text: Squash all changes into the single commit ("--squash" option)
merge.strategy:
- text: '&Strategy:'
+ text: '&Strategy:'
+merge.strategy.tooltip:
+ text: The merge strategy to use ("-s" option)
merge.tool.action.name:
- text: MergeTool
+ text: MergeTool
merge.tool.column.status.deleted:
- text: Deleted
+ text: Deleted
merge.tool.column.status.modified:
- text: Modified
+ text: Modified
merge.tool.column.theirs.status:
- text: Theirs
+ text: Theirs
merge.tool.column.yours.status:
- text: Yours
+ text: Yours
merging.branch:
- text: Merging branch {0}
+ text: Merging branch {0}
merging.title:
- text: Merging changes to {0}
+ text: Merging changes to {0}
paths.affected.title:
- text: Paths affected in commit {0}
+ text: Paths affected in commit {0}
+progress.title.moving.files:
+ text: Moving files…
pull.action.name:
- text: Pull
+ text: Pull
pull.button:
- text: Pull
+ text: Pull
pull.force.reference.update:
- text: Force reference &update
-pull.get.branches.tooltip:
- text: Get branch names from remote repository. Otherwise a locally cached information is used.
+ text: Force reference &update
pull.get.branches:
- text: '&Get Branches'
+ text: '&Get Branches'
+pull.get.branches.tooltip:
+ text: Get branch names from remote repository. Otherwise a locally cached information is used.
pull.getting.remote.branches:
- text: Getting remote branches
-pull.remote.tooltip:
- text: Registered remote name or URL.
+ text: Getting remote branches
pull.remote:
- text: 'Re&mote:'
+ text: 'Re&mote:'
+pull.remote.tooltip:
+ text: Registered remote name or URL.
pull.retrieving.remotes:
- text: Retrieving remotes
+ text: Retrieving remotes
pull.title:
- text: Pull Changes
+ text: Pull Changes
pull.url.message:
- text: 'Enter remote repository URL to pull/merge (empty for default):'
+ text: 'Enter remote repository URL to pull/merge (empty for default):'
pull.url.title:
- text: Pull URL
+ text: Pull URL
pulling.title:
- text: Pulling changes from {0}
+ text: Pulling changes from {0}
push.action.name:
- text: Push
+ text: Push
push.active.action.name:
- text: Push Active Branches
-push.active.autostash.tooltip:
- text: Auto-stash changes before rebase
+ text: Push Active Branches
push.active.autostash:
- text: '&Auto-stash'
-push.active.rebase.and.push:
- text: Rebase and Push
+ text: '&Auto-stash'
+push.active.autostash.tooltip:
+ text: Auto-stash changes before rebase
push.active.commit.node.merge:
- text: (merge commit)
+ text: (merge commit)
push.active.commits:
- text: '&Commits:'
+ text: '&Commits:'
push.active.error.behind:
- text: Some local branches are behind remote branches
+ text: Some local branches are behind remote branches
push.active.error.merges.unchecked:
- text: Roots with merge commits cannot be selectively pushed
+ text: Roots with merge commits cannot be selectively pushed
push.active.error.no.branch:
- text: Some roots are not on the branch
+ text: Some roots are not on the branch
push.active.error.reorder.merges:
- text: It is not possible to reorder commits if merges present
+ text: It is not possible to reorder commits if merges present
push.active.error.reorder.needed:
- text: The nodes should be reordered using rebase operation.
-push.active.fetch.failed.title:
- text: Fetch Failed
+ text: The nodes should be reordered using rebase operation.
+push.active.fetch:
+ text: '&Fetch'
push.active.fetch.failed:
- text: The fetch operation failed for some branches
+ text: The fetch operation failed for some branches
+push.active.fetch.failed.title:
+ text: Fetch Failed
push.active.fetch.tooltip:
- text: Fetch state of tracked branches from remote repository
-push.active.fetch:
- text: '&Fetch'
+ text: Fetch state of tracked branches from remote repository
push.active.fetching:
- text: Fetching changes for active branches
+ text: Fetching changes for active branches
push.active.pushing:
- text: Pushing branches...
-push.active.rebase.tooltip:
- text: Rebase branches in order to make push possible (might reorder commits)
+ text: Pushing branches...
push.active.rebase:
- text: '&Rebase'
+ text: '&Rebase'
+push.active.rebase.and.push:
+ text: Rebase and Push
+push.active.rebase.tooltip:
+ text: Rebase branches in order to make push possible (might reorder commits)
push.active.rebasing:
- text: Rebasing ...
+ text: Rebasing ...
push.active.save.before.rebase:
- text: 'Clean working tree before rebase:'
+ text: 'Clean working tree before rebase:'
push.active.status.behind:
- text: Unable to push. The current branch is behind tracked branch by {0,choice, 1#1 commit|2#{0,number} commits}.
+ text: Unable to push. The current branch is behind tracked branch by {0,choice, 1#1 commit|2#{0,number} commits}.
push.active.status.no.branch:
- text: The head is not on the branch.
-push.active.status.no.commits.behind:
- text: Nothing to push. The current branch is behind tracked branch by {0,choice, 1#1 commit|2#{0,number} commits}.
+ text: The head is not on the branch.
push.active.status.no.commits:
- text: Nothing to push.
+ text: Nothing to push.
+push.active.status.no.commits.behind:
+ text: Nothing to push. The current branch is behind tracked branch by {0,choice, 1#1 commit|2#{0,number} commits}.
push.active.status.no.tracked:
- text: No tracked branch is configured.
+ text: No tracked branch is configured.
push.active.status.push:
- text: '{0,choice, 1#1 commit|2#{0,number} commits} will be pushed.'
+ text: '{0,choice, 1#1 commit|2#{0,number} commits} will be pushed.'
push.active.status.status:
- text: 'Status: '
+ text: 'Status: '
push.active.title:
- text: Push Active Branches
+ text: Push Active Branches
push.active.view:
- text: '&View'
-push.branches.tooltip:
- text: Select branches to push
+ text: '&View'
push.branches:
- text: '&Branches:'
+ text: '&Branches:'
+push.branches.tooltip:
+ text: Select branches to push
push.button:
- text: Push
-push.force.update.tooltip:
- text: If selected remote ref is updated even if they are is not an ancestor of the local ref.
+ text: Push
push.force.update:
- text: '&Force update'
+ text: '&Force update'
+push.force.update.tooltip:
+ text: If selected remote ref is updated even if they are is not an ancestor of the local ref.
+push.policy:
+ text: '&Push:'
push.policy.all:
- text: All
+ text: All
push.policy.default:
- text: Default
+ text: Default
push.policy.mirror:
- text: Mirror
+ text: Mirror
push.policy.selected:
- text: Selected branches
+ text: Selected branches
push.policy.tooltip:
- text: Select push policy:- Default - the push is done according to the configuration of the remote.
- Selected branches - selected branches are pushed.
- All - all references under refs/heads are pushed.
- Mirror - all references under refs/ are pushed including tags and remotes.
-push.policy:
- text: '&Push:'
-push.remote.tooltip:
- text: Specify remote repository URL or remote name where to push changes.
+ text: Select push policy:- Default - the push is done according to the configuration of the remote.
- Selected branches - selected branches are pushed.
- All - all references under refs/heads are pushed.
- Mirror - all references under refs/ are pushed including tags and remotes.
push.remote:
- text: 'Re&mote:'
-push.show.tags.tooltip:
- text: If selected, the tags are shown in branch chooser as well.
+ text: 'Re&mote:'
+push.remote.tooltip:
+ text: Specify remote repository URL or remote name where to push changes.
push.show.tags:
- text: Show ta&gs
-push.tags.tooltip:
- text: All tag references are pushed in addition to references specified in references section.
+ text: Show ta&gs
+push.show.tags.tooltip:
+ text: If selected, the tags are shown in branch chooser as well.
push.tags:
- text: Push &tags
+ text: Push &tags
+push.tags.tooltip:
+ text: All tag references are pushed in addition to references specified in references section.
push.title:
- text: Push Changes
-push.use.thin.pack.tooltip:
- text: If this option is selected, the push will spend extra CPU cycles to minimize amount of data transferred (use it for slow connections)
+ text: Push Changes
push.use.thin.pack:
- text: '&Use thin pack'
+ text: '&Use thin pack'
+push.use.thin.pack.tooltip:
+ text: If this option is selected, the push will spend extra CPU cycles to minimize amount of data transferred (use it for slow connections)
pushing.all.changes:
- text: Pushing all committed changes, refs & tags to remote repositories
-gc.action.name:
- text: Run Garbage Collector
+ text: Pushing all committed changes, refs & tags to remote repositories
rebase.abort.action.name:
- text: Abort Rebasing
+ text: Abort Rebasing
rebase.action.error:
- text: Git Rebase Error
+ text: Git Rebase Error
rebase.action.message:
- text: Multiple Git roots have unfinished rebase process, please select root to perform action on.
+ text: Multiple Git roots have unfinished rebase process, please select root to perform action on.
rebase.action.name:
- text: Rebase
+ text: Rebase
rebase.action.no.root:
- text: There is no rebase operation in progress in the project
-rebase.branch.tooltip:
- text: Select branch to rebase (if branch is different from the current branch, it will be checked out first)
+ text: There is no rebase operation in progress in the project
rebase.branch:
- text: '&Branch:'
+ text: '&Branch:'
+rebase.branch.tooltip:
+ text: Select branch to rebase (if branch is different from the current branch, it will be checked out first)
rebase.button:
- text: Rebase
+ text: Rebase
rebase.continue.action.name:
- text: Continue Rebasing
+ text: Continue Rebasing
rebase.editor.action.column:
- text: Action
+ text: Action
rebase.editor.button:
- text: Start Rebasing
+ text: Start Rebasing
rebase.editor.comment.column:
- text: Comment
+ text: Comment
rebase.editor.commit.column:
- text: Commit
+ text: Commit
rebase.editor.invalid.entryset:
- text: No commits found to rebase
+ text: No commits found to rebase
rebase.editor.invalid.squash:
- text: The first non-skip commit cannot be marked as {0} since it merges commit with the previous commit.
+ text: The first non-skip commit cannot be marked as {0} since it merges commit with the previous commit.
rebase.editor.message:
- text: Reorder and edit &rebased commits
-rebase.editor.move.down.tooltip:
- text: Move commit down (commit will be applied later)
+ text: Reorder and edit &rebased commits
rebase.editor.move.down:
- text: Move &Down
-rebase.editor.move.up.tooltip:
- text: Move commit up in the list (commit will be applied earlier)
+ text: Move &Down
+rebase.editor.move.down.tooltip:
+ text: Move commit down (commit will be applied later)
rebase.editor.move.up:
- text: Move &Up
+ text: Move &Up
+rebase.editor.move.up.tooltip:
+ text: Move commit up in the list (commit will be applied earlier)
rebase.editor.title:
- text: Rebasing Commits
-rebase.editor.view.tooltip:
- text: View commit contents
+ text: Rebasing Commits
rebase.editor.view:
- text: '&View'
-rebase.from.tooltip:
- text: Specify actual base for the branch. Leave blank to onto.
+ text: '&View'
+rebase.editor.view.tooltip:
+ text: View commit contents
rebase.from:
- text: '&From:'
+ text: '&From:'
+rebase.from.tooltip:
+ text: Specify actual base for the branch. Leave blank to onto.
rebase.in.progress:
- text: Interactive rebase has been already started for this Git root.
-rebase.interactive.tooltip:
- text: If selected, the interactive rebase will be preformed.
+ text: Interactive rebase has been already started for this Git root.
rebase.interactive:
- text: '&Interactive'
+ text: '&Interactive'
+rebase.interactive.tooltip:
+ text: If selected, the interactive rebase will be preformed.
rebase.invalid.from:
- text: '"From" reference expression is invalid.'
+ text: '"From" reference expression is invalid.'
rebase.invalid.onto:
- text: '"Onto" reference expression is invalid.'
-rebase.merge.strategy.tooltip:
- text: Select merge strategy to use
+ text: '"Onto" reference expression is invalid.'
rebase.merge.strategy:
- text: 'Merge &Strategy:'
-rebase.no.merge.tooltip:
- text: If selected, no merge strategies will be applied during the rebase.
+ text: 'Merge &Strategy:'
+rebase.merge.strategy.tooltip:
+ text: Select merge strategy to use
rebase.no.merge:
- text: '&Do not use merge strategies'
+ text: '&Do not use merge strategies'
+rebase.no.merge.tooltip:
+ text: If selected, no merge strategies will be applied during the rebase.
+rebase.onto:
+ text: '&Onto:'
rebase.onto.tooltip:
- text: The reference that will become a new base for selected branch.
+ text: The reference that will become a new base for selected branch.
rebase.onto.validate:
- text: '&Validate'
-rebase.onto:
- text: '&Onto:'
-rebase.preserve.merges.tooltip:
- text: Preserve merges during rebase instead of squashing them.
+ text: '&Validate'
rebase.preserve.merges:
- text: '&Preserve Merges'
-rebase.result.amend.title:
- text: Rebase Suspended
+ text: '&Preserve Merges'
+rebase.preserve.merges.tooltip:
+ text: Preserve merges during rebase instead of squashing them.
rebase.result.amend:
- text: |-
- Stopped for amending commit while rebasing ({0}/{1}).
- Amend commit and continue the rebase process.
-rebase.result.cancelled.title:
- text: Rebase Cancelled
+ text: |-
+ Stopped for amending commit while rebasing ({0}/{1}).
+ Amend commit and continue the rebase process.
+rebase.result.amend.title:
+ text: Rebase Suspended
rebase.result.cancelled:
- text: The rebase process was cancelled.
-rebase.result.conflict.title:
- text: Rebase Suspended
+ text: The rebase process was cancelled.
+rebase.result.cancelled.title:
+ text: Rebase Cancelled
rebase.result.conflict:
- text: |-
- Stopped rebasing because of conflict ({0}/{1}).
- Resolve conflicts and continue the rebase process.
-rebase.result.error.title:
- text: Rebase Error
+ text: |-
+ Stopped rebasing because of conflict ({0}/{1}).
+ Resolve conflicts and continue the rebase process.
+rebase.result.conflict.title:
+ text: Rebase Suspended
rebase.result.error:
- text: |-
- Stopped rebasing because of error while rebasing ({0}/{1}).
- Check vcs console for details.
-rebase.show.remote.branches.tooltip:
- text: If selected, remote branches are shown in drop down as well.
+ text: |-
+ Stopped rebasing because of error while rebasing ({0}/{1}).
+ Check vcs console for details.
+rebase.result.error.title:
+ text: Rebase Error
rebase.show.remote.branches:
- text: Show Re&mote Branches
+ text: Show Re&mote Branches
+rebase.show.remote.branches.tooltip:
+ text: If selected, remote branches are shown in drop down as well.
rebase.show.tags.tooltip:
- text: Show tags in "from" and "onto" comboboxes.
+ text: Show tags in "from" and "onto" comboboxes.
rebase.skip.action.name:
- text: Skip Commit in Rebasing
+ text: Skip Commit in Rebasing
rebase.title:
- text: Rebase branch
+ text: Rebase branch
rebase.unstructured.editor.button:
- text: Resume Rebasing
+ text: Resume Rebasing
rebase.unstructured.editor.git.root:
- text: 'Git Root:'
+ text: 'Git Root:'
rebase.unstructured.editor.message:
- text: 'Git rebase operation requested additional &information through the editor:'
+ text: 'Git rebase operation requested additional &information through the editor:'
rebase.unstructured.editor.title:
- text: Additional Rebase Input
+ text: Additional Rebase Input
rebase.unstructured.editor.tooltip:
- text: Edit this text according to instructions provided inline
+ text: Edit this text according to instructions provided inline
+rebase.update.project.abort.task.title:
+ text: Aborting rebase…
+rebase.update.project.notification.abort.cancel.message:
+ text: Abort rebase cancelled
+rebase.update.project.notification.abort.error.message:
+ text: Error aborting rebase
+rebase.update.project.notification.abort.success.message:
+ text: Rebase aborted
rebase.valdate.onto.tooltip:
- text: Validate "onto" reference.
-rebase.validate.from.tooltip:
- text: Validate "from" reference
+ text: Validate "onto" reference.
rebase.validate.from:
- text: Va&lidate
+ text: Va&lidate
+rebase.validate.from.tooltip:
+ text: Validate "from" reference
rebasing.title:
- text: Rebasing...
-refspec.add.all.branches.tooltip:
- text: Add refspec that maps all remote branches by glob spec.
+ text: Rebasing...
refspec.add.all.branches:
- text: Add A&ll Branches
-refspec.add.all.tags.tooltip:
- text: Adds mapping entry for all tags
+ text: Add A&ll Branches
+refspec.add.all.branches.tooltip:
+ text: Add refspec that maps all remote branches by glob spec.
refspec.add.all.tags:
- text: Add All Ta&gs
-refspec.add.ref.tooltip:
- text: Add branch or tag by name
+ text: Add All Ta&gs
+refspec.add.all.tags.tooltip:
+ text: Adds mapping entry for all tags
refspec.add.ref:
- text: '&Add...'
-refspec.branch.prefix.tooltip:
- text: Specify default branch prefix for the mapping.
+ text: '&Add...'
+refspec.add.ref.tooltip:
+ text: Add branch or tag by name
refspec.branch.prefix:
- text: 'Remote &Name:'
+ text: 'Remote &Name:'
+refspec.branch.prefix.tooltip:
+ text: Specify default branch prefix for the mapping.
refspec.column.force:
- text: Force
+ text: Force
refspec.column.local:
- text: Local
+ text: Local
refspec.column.remote:
- text: Remote
-refspec.default.tooltip:
- text: Restore default reference mapping
+ text: Remote
refspec.default:
- text: '&Default'
-refspec.remove.tooltip:
- text: Delete refspec entry
+ text: '&Default'
+refspec.default.tooltip:
+ text: Restore default reference mapping
refspec.remove:
- text: Remo&ve
+ text: Remo&ve
+refspec.remove.tooltip:
+ text: Delete refspec entry
refspec.title:
- text: Reference mapping
+ text: Reference mapping
refspec.validation.remote.invalid:
- text: The invalid local name for remote
+ text: The invalid local name for remote
refspec.validation.remote.is.blank:
- text: The local name for remote is blank
+ text: The local name for remote is blank
regase.show.tags:
- text: Show &tags
+ text: Show &tags
remove.removing:
- text: Removing files...
+ text: Removing files...
repository.action.missing.roots.misconfigured:
- text: None of configured Git roots are under Git. The configured directory or some of its ancestors must have ".git" directory in it.
+ text: None of configured Git roots are under Git. The configured directory or some of its ancestors must have ".git" directory in it.
repository.action.missing.roots.title:
- text: No Git roots
+ text: No Git roots
repository.action.missing.roots.unconfigured.message:
- text: No Git roots are configured for the project.
+ text: No Git roots are configured for the project.
+repository.not.found.error:
+ text: Cannot find configured Git repository for {0}
reset.action.name:
- text: Reset Head ...
+ text: Reset Head ...
reset.button:
- text: Reset
+ text: Reset
reset.commit.invalid:
- text: The specified commit expression did not pass validation.
+ text: The specified commit expression did not pass validation.
reset.commit.label:
- text: 'To &Commit:'
+ text: 'To &Commit:'
reset.commit.tooltip:
- text: |-
- The commit that will become the current HEAD
- as result of reset operation.
+ text: |-
+ The commit that will become the current HEAD
+ as result of reset operation.
reset.title:
- text: Reset Head
+ text: Reset Head
+reset.type:
+ text: 'Reset &Type:'
reset.type.hard:
- text: Hard
+ text: Hard
reset.type.mixed:
- text: Mixed
+ text: Mixed
reset.type.soft:
- text: Soft
+ text: Soft
reset.type.tooltip:
- text: The reset type (see also git reset man page):- Mixed resets index but not working tree
- Soft leaves index and working tree, just moves head pointer
- Hard resets index and working tree.Changes in the working tree will be lost
-reset.type:
- text: 'Reset &Type:'
-reset.validate.tooltip:
- text: Validate the commit pointer and check the content of referenced commit.
+ text: The reset type (see also git reset man page):- Mixed resets index but not working tree
- Soft leaves index and working tree, just moves head pointer
- Hard resets index and working tree.Changes in the working tree will be lost
reset.validate:
- text: '&Validate'
+ text: '&Validate'
+reset.validate.tooltip:
+ text: Validate the commit pointer and check the content of referenced commit.
resetting.title:
- text: Resetting HEAD...
+ text: Resetting HEAD...
revert.action.name:
- text: '&Revert'
-revert.reverting.mulitple:
- text: Reverting {0} files
+ text: '&Revert'
revert.reverting:
- text: Reverting files...
+ text: Reverting files...
+revert.reverting.mulitple:
+ text: Reverting {0} files
revision.graph:
- text: RevisionGraph
-root.tracker.message.title:
- text: Invalid Git Roots
+ text: RevisionGraph
root.tracker.message:
- text: Some configured Git VCS roots are not under Git or have Git repositories in subdirectories without a configured VCS root. Configure.
+ text: Some configured Git VCS roots are not under Git or have Git repositories in subdirectories without a configured VCS root. Configure.
+root.tracker.message.title:
+ text: Invalid Git Roots
select.branch.to.checkout:
- text: Select branch to checkout
+ text: Select branch to checkout
+settings.auto.update.on.push.rejected:
+ text: Auto-update if &push of the current branch was rejected
+settings.commit.automatically.on.cherry.pick:
+ text: Commit automatically on cherry-pick
+settings.crlf:
+ text: Warn if &CRLF line separators are about to be committed
+settings.detached.head:
+ text: Warn when committing in detached HEAD or during rebase
+settings.protected.branched:
+ text: 'Protected branches:'
+settings.update.method:
+ text: 'Update method:'
show.all.paths.affected.action.name:
- text: Show All Affected Paths
+ text: Show All Affected Paths
ssh.ask.passphrase.title:
- text: SSH Key Passphrase
+ text: SSH Key Passphrase
ssh.askPassphrase.message:
- text: Please enter passphrase for the private key {0} (the user name is {1})
+ text: Please enter passphrase for the private key {0} (the user name is {1})
ssh.changed.host.key:
- text: |-
- The server host key for the host {0}:{1} has changed to {2} (type {3}).
- Do you want to accept the changed key?
+ text: |-
+ The server host key for the host {0}:{1} has changed to {2} (type {3}).
+ Do you want to accept the changed key?
ssh.confirm.key.titile:
- text: Confirm SSH Server Key
+ text: Confirm SSH Server Key
ssh.error.title:
- text: Authentication error
+ text: Authentication error
ssh.keyboard.interactive.title:
- text: 'SSH Keyboard Interactive: {0}'
+ text: 'SSH Keyboard Interactive: {0}'
ssh.keyboard.interactive.username:
- text: 'Username:'
+ text: 'Username:'
ssh.new.host.key:
- text: |-
- Connecting to a new host {0}:{1} that has the key {2} (type {3}).
- Do you want to add this host to known hosts database?
+ text: |-
+ Connecting to a new host {0}:{1} that has the key {2} (type {3}).
+ Do you want to add this host to known hosts database?
ssh.password.message:
- text: Please enter password for user {0}
+ text: Please enter password for user {0}
ssh.password.title:
- text: SSH Password Login
+ text: SSH Password Login
stash.action.name:
- text: Stash
+ text: Stash
stash.button:
- text: Create Stash
-stash.keep.index.tooltip:
- text: If this checkbox is selected, indexed changes are kept in the index.
+ text: Create Stash
stash.keep.index:
- text: Keep &index
-stash.message.tooltip:
- text: Enter stash message here.
+ text: Keep &index
+stash.keep.index.tooltip:
+ text: If this checkbox is selected, indexed changes are kept in the index.
stash.message:
- text: '&Message:'
+ text: '&Message:'
+stash.message.tooltip:
+ text: Enter stash message here.
stash.title:
- text: Stash
+ text: Stash
stashing.title:
- text: Stashing changes...
+ text: Stashing changes...
tag.action.name:
- text: Tag
+ text: Tag
tag.button:
- text: Create Tag
+ text: Create Tag
tag.commit.label:
- text: '&Commit:'
+ text: '&Commit:'
tag.commit.tooltip:
- text: Enter name of commit or object to tag or leave blank to use HEAD.
+ text: Enter name of commit or object to tag or leave blank to use HEAD.
tag.error.creating.message.file.message:
- text: 'Unable to create message file: {0}'
+ text: 'Unable to create message file: {0}'
tag.error.creating.message.file.title:
- text: Error creating message file
+ text: Error creating message file
tag.error.invalid.commit:
- text: The commit or object name is invalid.
+ text: The commit or object name is invalid.
tag.error.tag.exists:
- text: The tag with the same name exists.
-tag.force.tooltip:
- text: Force creation of the text even if tag with such name already exists.
+ text: The tag with the same name exists.
tag.force:
- text: '&Force'
+ text: '&Force'
+tag.force.tooltip:
+ text: Force creation of the text even if tag with such name already exists.
tag.getting.existing.tags:
- text: Getting existing tags...
+ text: Getting existing tags...
+tag.message:
+ text: 'Specify tag name:'
tag.message.label:
- text: '&Message:'
+ text: '&Message:'
tag.message.tooltip:
- text: If the message is not empty, an annotated tag is created.
-tag.message:
- text: 'Specify tag name:'
+ text: If the message is not empty, an annotated tag is created.
tag.name.label:
- text: 'Tag &Name:'
+ text: 'Tag &Name:'
tag.name.tooltip:
- text: Enter the new tag name here.
+ text: Enter the new tag name here.
tag.nonvcs.error.message:
- text: 'ERROR: Files not tagged, not all are under VCS root!'
+ text: 'ERROR: Files not tagged, not all are under VCS root!'
tag.nonvcs.error.title:
- text: Tag Result
+ text: Tag Result
tag.title:
- text: Tag
-tag.validate.tooltip:
- text: Click this button to the validate commit to be tagged.
+ text: Tag
tag.validate:
- text: '&Validate'
+ text: '&Validate'
+tag.validate.tooltip:
+ text: Click this button to the validate commit to be tagged.
tagging.title:
- text: Tagging files...
+ text: Tagging files...
task.queue.title:
- text: Git Operations
+ text: Git Operations
unindexed.files.changlelist.name:
- text: Unindexed Files
+ text: Unindexed Files
unstash.action.name:
- text: UnStash
+ text: UnStash
unstash.branch.label:
- text: 'As new &branch:'
+ text: 'As new &branch:'
unstash.branch.tooltip:
- text: If non-empty name is entered, the stash is checked out as a new branch.
+ text: If non-empty name is entered, the stash is checked out as a new branch.
unstash.button.apply:
- text: Apply Stash
+ text: Apply Stash
unstash.button.branch:
- text: Branch
+ text: Branch
unstash.button.pop:
- text: Pop Stash
-unstash.clear.tooltip:
- text: Delete all stashes in the repository.
+ text: Pop Stash
unstash.clear:
- text: '&Clear'
+ text: '&Clear'
+unstash.clear.tooltip:
+ text: Delete all stashes in the repository.
unstash.clearing.stashes:
- text: Clearing stashes...
-unstash.drop.tooltip:
- text: Delete selected stash
+ text: Clearing stashes...
unstash.drop:
- text: '&Drop'
+ text: '&Drop'
+unstash.drop.tooltip:
+ text: Delete selected stash
unstash.dropping.stash:
- text: Dropping stash {0}...
+ text: Dropping stash {0}...
unstash.error.branch.exists:
- text: The specified branch already exists
+ text: The specified branch already exists
unstash.error.invalid.branch.name:
- text: Invalid branch name
-unstash.pop.stash.tooltip:
- text: If selected the stash is dropped after it is applied.
+ text: Invalid branch name
unstash.pop.stash:
- text: '&Pop stash'
-unstash.reinstate.index.tooltip:
- text: Attempt to reinstate index as well as working tree changes.
+ text: '&Pop stash'
+unstash.pop.stash.tooltip:
+ text: If selected the stash is dropped after it is applied.
unstash.reinstate.index:
- text: Reinstate &index
+ text: Reinstate &index
+unstash.reinstate.index.tooltip:
+ text: Attempt to reinstate index as well as working tree changes.
+unstash.stashes:
+ text: '&Stashes:'
unstash.stashes.item:
- text: '{0}:{1}: {2}'
+ text: '{0}:{1}: {2}'
unstash.stashes.tooltip:
- text: Select a stash to operate for.
-unstash.stashes:
- text: '&Stashes:'
+ text: Select a stash to operate for.
unstash.title:
- text: UnStash Changes
+ text: UnStash Changes
unstash.unstashing:
- text: Unstashing...
-unstash.view.tooltip:
- text: View selected stash
+ text: Unstashing...
unstash.view:
- text: '&View'
+ text: '&View'
+unstash.view.tooltip:
+ text: View selected stash
unstashing.title:
- text: UnStashing changes...
-update.locally.modified.files.tooltip:
- text: Locally modified files.
+ text: UnStashing changes...
update.locally.modified.files:
- text: '&Files:'
+ text: '&Files:'
+update.locally.modified.files.tooltip:
+ text: Locally modified files.
update.locally.modified.git.root:
- text: 'Git Root:'
+ text: 'Git Root:'
update.locally.modified.message:
- text: 'The following files under this root are locally modified.
Possible reasons: uncommitted changes; a problem with crlf conversion; {0} configuration file auto-save.
- Press Revert Files to discard these local changes and continue the update process.
- Press Cancel to cancel the update process.
Use Auto-Stash option to stash local changes before update and restore them after it.
'
-update.locally.modified.rescan.tooltip:
- text: Rescan the repository to check for locally modified files again.
Use this button if you have resolved the problem manually.
+ text: 'The following files under this root are locally modified.
Possible reasons: uncommitted changes; a problem with crlf conversion; {0} configuration file auto-save.
- Press Revert Files to discard these local changes and continue the update process.
- Press Cancel to cancel the update process.
Use Auto-Stash option to stash local changes before update and restore them after it.
'
update.locally.modified.rescan:
- text: Re&scan
+ text: Re&scan
+update.locally.modified.rescan.tooltip:
+ text: Rescan the repository to check for locally modified files again.
Use this button if you have resolved the problem manually.
update.locally.modified.revert:
- text: Revert Files
+ text: Revert Files
update.locally.modified.title:
- text: Locally modified files are detected
+ text: Locally modified files are detected
update.options.display.name:
- text: Git Update Settings
+ text: Git Update Settings
update.options.no.commit:
- text: No &Commit
+ text: No &Commit
update.options.save.before.update:
- text: Clean working tree before update
-update.options.save.keep.tooltip:
- text: Leave changes on working tree
+ text: Clean working tree before update
update.options.save.keep:
- text: Do &Not Clean
-update.options.save.shelve.tooltip:
- text: Use {0}''s Shelve to save changes (the files will be restored after update)
+ text: Do &Not Clean
+update.options.save.keep.tooltip:
+ text: Leave changes on working tree
update.options.save.shelve:
- text: Using She&lve
-update.options.save.stash.tooltip:
- text: Use Git Stash to save changes (the files will be restored after update)
+ text: Using She&lve
+update.options.save.shelve.tooltip:
+ text: Use {0}''s Shelve to save changes (the files will be restored after update)
update.options.save.stash:
- text: Using S&tash
-update.options.type.default.tooltip:
- text: Use branch default update strategy for all updated Git VCS roots
+ text: Using S&tash
+update.options.save.stash.tooltip:
+ text: Use Git Stash to save changes (the files will be restored after update)
+update.options.type:
+ text: Update Type
update.options.type.default:
- text: Branch &Default
-update.options.type.merge.tooltip:
- text: Use merge update strategy for all Git VCS roots
+ text: Branch &Default
+update.options.type.default.tooltip:
+ text: Use branch default update strategy for all updated Git VCS roots
update.options.type.merge:
- text: '&Merge'
-update.options.type.rebase.tooltip:
- text: Use rebase update strategy for all Git VCS roots
+ text: '&Merge'
+update.options.type.merge.tooltip:
+ text: Use merge update strategy for all Git VCS roots
update.options.type.rebase:
- text: '&Rebase'
-update.options.type:
- text: Update Type
+ text: '&Rebase'
+update.options.type.rebase.tooltip:
+ text: Use rebase update strategy for all Git VCS roots
+update.rebase.no.change:
+ text: No changes detected {0}. - Skip Commit - skips current commit in the rebase process
- Retry Continue - do it after you add changes to commit manually
- Or cancel cancels update process for this root.
update.rebase.no.change.cancel:
- text: Cancel Update
+ text: Cancel Update
update.rebase.no.change.retry:
- text: Retry Continue
+ text: Retry Continue
update.rebase.no.change.skip:
- text: Skip Commit
+ text: Skip Commit
update.rebase.no.change.title:
- text: No Changes Staged
-update.rebase.no.change:
- text: No changes detected {0}. - Skip Commit - skips current commit in the rebase process
- Retry Continue - do it after you add changes to commit manually
- Or cancel cancels update process for this root.
-update.rebase.unmerged.title:
- text: Unresolved Rebase Conflicts
+ text: No Changes Staged
update.rebase.unmerged:
- text: 'Root: {0}
There still remain files to be merged. Do you want to merge them?- Yes - Merge.
- No - Cancel update for this root.
'
+ text: 'Root: {0}
There still remain files to be merged. Do you want to merge them?- Yes - Merge.
- No - Cancel update for this root.
'
+update.rebase.unmerged.title:
+ text: Unresolved Rebase Conflicts
update.restoring.change.lists:
- text: Restoring change lists...
+ text: Restoring change lists...
+update.root.rebasing:
+ text: The root {0} has unfinished rebase process.
update.root.rebasing.item:
- text: {0}
+ text: {0}
update.root.rebasing.message:
- text: The following roots have unfinished rebase process. Update is not possible.{0}
+ text: The following roots have unfinished rebase process. Update is not possible.{0}
update.root.rebasing.title:
- text: Unfinished Rebase Process
-update.root.rebasing:
- text: The root {0} has unfinished rebase process.
+ text: Unfinished Rebase Process
update.shelving.changes:
- text: Shelving changes...
+ text: Shelving changes...
update.unshelving.changes:
- text: Unshelving Changes...
+ text: Unshelving Changes...
util.remote.renderer.default:
- text: {0}({1})
+ text: {0}({1})
util.remote.renderer.none:
- text: None
+ text: None
util.remote.renderer.normal:
- text: {0}({1})
+ text: {0}({1})
util.remote.renderer.self:
- text: Current repository
+ text: Current repository
+vcs.name.with.mnemonic:
+ text: _Git
+vcs.popup.git.github.section:
+ text: GitHub
vcs.unable.to.run.git:
- text: 'Unable to run git: {0} ({1})'
+ text: 'Unable to run git: {0} ({1})'
vfs.listener.add.single.prompt:
- text: |-
- Do you want to add the following file to Git?
- {0}
+ text: |-
+ Do you want to add the following file to Git?
+ {0}
- If you say No, you can still add it later manually.
+ If you say No, you can still add it later manually.
vfs.listener.add.single.title:
- text: Add File to Git
+ text: Add File to Git
vfs.listener.add.title:
- text: Add Files to Git
+ text: Add Files to Git
vfs.listener.checking.ignored:
- text: Checking for ignored files
+ text: Checking for ignored files
vfs.listener.delete.single.prompt:
- text: |-
- Do you want to delete the following file from Git?
- {0}
+ text: |-
+ Do you want to delete the following file from Git?
+ {0}
- If you say No, you can still delete it later manually.
+ If you say No, you can still delete it later manually.
vfs.listener.delete.single.title:
- text: Delete File from Git
+ text: Delete File from Git
vfs.listener.delete.title:
- text: Delete Files from Git
-general.error:
- text: Git error
-executable.error.title:
- text: Git executable problem
-executable.error.description:
- text: Git couldn't be started. Probably the path to Git executable is not valid. Fix it.
-git.commit.message.empty:
- text: Please specify commit message
-git.commit.message.empty.title:
- text: Commit Message Is Empty
-git.executable.notification.title:
- text: Can't start Git
-git.executable.notification.description:
- text: Probably the path to Git executable is not valid.
-git.executable.dialog.title:
- text: Git executable
-git.executable.dialog.description:
- text: Specify the full path to Git executable
-git.executable.dialog.error:
- text: It doesn't appear to be a valid Git executable
-git.executable.filechooser.title:
- text: Git executable
-git.executable.filechooser.description:
- text: Specify the full path to Git executable
-git.push.active.close:
- text: Close
-git.unstash.clear.confirmation.message:
- text: Remove all stashes? This cannot be undone.
-git.unstash.clear.confirmation.title:
- text: Remove all stashes?
-git.unstash.drop.confirmation.message:
- text: Do you want to remove {0}?
"{1}"
-git.unstash.drop.confirmation.title:
- text: Remove stash {0}?
-branch.delete.not_fully_merged.description:
- text: The branch {0} is not fully merged to the branch {1}.
Below is the list of unmerged commits.
-branch.delete.not_fully_merged.description.not_on_branch:
- text: You are currently not on the branch ({1}).
The branch {0} is not fully merged to {2}.
Below is the list of unmerged commits.
-branch.delete.merged_to.many:
- text: 'The branch {0} is however fully merged to the following branches: {1}.'
-branch.delete.merged_to.one:
- text: The branch {0} is however fully merged to the branch {1}.
-branch.delete.warning:
- text: You may still delete the branch {0}, but beware that it cannot be undone.
-vcs.popup.git.github.section:
- text: GitHub
-git.status.bar.widget.name:
- text: Git Branch
-action.Annotate.with.Blame.text:
- text: A_nnotate with Git Blame
-git.status.bar.widget.text.cherry.pick:
- text: Cherry-picking in {0}
-git.status.bar.widget.text.revert:
- text: Reverting in {0}
-git.status.bar.widget.text.merge:
- text: Merging {0}
-git.status.bar.widget.text.rebase:
- text: Rebasing {0}
-git.light.status.bar.display.name:
- text: Git
-git.light.status.bar.tooltip:
- text: 'Current Git Branch: {0}'
-git.light.status.bar.text:
- text: 'Git: {0}'
-vcs.name.with.mnemonic:
- text: _Git
-group.mainmenu.vcs.current.file.text:
- text: Current File
-action.selected.file.text:
- text: Selected {0,choice,1#File|2#Files}
-action.selected.directory.text:
- text: Selected {0,choice,1#Directory|2#Directories}
-action.Git.Pull.text:
- text: Pull...
-action.Git.Fetch.text:
- text: Fetch
-action.Git.Rebase.text:
- text: Rebase...
-action.Git.Merge.text:
- text: Merge...
-action.Git.Branches.text:
- text: _Branches...
-action.Git.Tag.text:
- text: New Tag...
-action.Git.ResolveConflicts.text:
- text: Resolve Conflicts...
-action.Git.Reset.text:
- text: Reset HEAD...
-group.Git.MainMenu.RebaseActions.text:
- text: _Rebase
-group.Git.MainMenu.MergeActions.text:
- text: _Merge
-group.Git.MainMenu.LocalChanges.text:
- text: _Uncommitted Changes
-action.Git.Stash.text:
- text: Stash Changes...
-action.Git.Stash.Silently.text:
- text: Stash Silently
-group.Patch.MainMenu.text:
- text: Patch
-action.Git.Stash.UnstashAs.text:
- text: Unstash...
-action.Git.Stash.UnstashAs.description:
- text: Pop or apply selected stash as new branch with or without index
-action.Git.Unstash.text:
- text: Unstash Changes...
-action.Git.Rebase.Abort.text:
- text: Abort Rebase
-action.Git.Rebase.Continue.text:
- text: Continue Rebase
-action.Git.Rebase.Skip.text:
- text: Skip Commit
-repository.not.found.error:
- text: Cannot find configured Git repository for {0}
-git.new.tag.dialog.title:
- text: Create New Tag On {0}
-git.new.tag.dialog.tag.name.label:
- text: Enter the name of new tag
-error.commit.cant.create.message.file:
- text: Creation of commit message file failed
-rebase.update.project.abort.task.title:
- text: Aborting rebase…
-rebase.update.project.notification.abort.error.message:
- text: Error aborting rebase
-rebase.update.project.notification.abort.success.message:
- text: Rebase aborted
-rebase.update.project.notification.abort.cancel.message:
- text: Abort rebase cancelled
-settings.auto.update.on.push.rejected:
- text: Auto-update if &push of the current branch was rejected
-settings.crlf:
- text: Warn if &CRLF line separators are about to be committed
-settings.detached.head:
- text: Warn when committing in detached HEAD or during rebase
-settings.commit.automatically.on.cherry.pick:
- text: Commit automatically on cherry-pick
-settings.update.method:
- text: 'Update method:'
-settings.protected.branched:
- text: 'Protected branches:'
-clone.dialog.checking.git.version:
- text: Checking Git version…
-git.executable.version.is:
- text: Git version is {0}
-progress.title.moving.files:
- text: Moving files…
-button.commit.all.files:
- text: Commit All Files
\ No newline at end of file
+ text: Delete Files from Git
From 389eba0e374ee24d67cb820f48a94acf60f7fdba Mon Sep 17 00:00:00 2001
From: UNV
Date: Thu, 28 Aug 2025 23:28:12 +0300
Subject: [PATCH 2/2] Adding @ActionImpl annotations to VCS Log menu actions.
Refactoring and localizing.
---
.../actions/GitCheckoutRevisionAction.java | 14 +-
.../actions/GitCreateNewBranchAction.java | 19 +-
.../git4idea/actions/GitCreateTagAction.java | 10 +
.../actions/GitLogSingleCommitAction.java | 1 -
.../git4idea/actions/LogContextMenuGroup.java | 47 +++++
.../git4idea/actions/LogToolbarGroup.java | 39 ++++
.../git4idea/branch/DeepCompareAction.java | 197 ++++++++++--------
.../java/git4idea/reset/GitResetAction.java | 51 +++--
.../en_US/consulo.git.GitLocalize.yaml | 24 +++
plugin/src/main/resources/META-INF/plugin.xml | 24 ---
10 files changed, 280 insertions(+), 146 deletions(-)
create mode 100644 plugin/src/main/java/git4idea/actions/LogContextMenuGroup.java
create mode 100644 plugin/src/main/java/git4idea/actions/LogToolbarGroup.java
diff --git a/plugin/src/main/java/git4idea/actions/GitCheckoutRevisionAction.java b/plugin/src/main/java/git4idea/actions/GitCheckoutRevisionAction.java
index bb64ff6..3707ac1 100644
--- a/plugin/src/main/java/git4idea/actions/GitCheckoutRevisionAction.java
+++ b/plugin/src/main/java/git4idea/actions/GitCheckoutRevisionAction.java
@@ -15,18 +15,24 @@
*/
package git4idea.actions;
-import consulo.ide.ServiceManager;
+import consulo.annotation.component.ActionImpl;
+import consulo.git.localize.GitLocalize;
import consulo.versionControlSystem.log.Hash;
import git4idea.branch.GitBrancher;
import git4idea.repo.GitRepository;
import jakarta.annotation.Nonnull;
-import java.util.Collections;
+import java.util.List;
+@ActionImpl(id = "Git.CheckoutRevision")
public class GitCheckoutRevisionAction extends GitLogSingleCommitAction {
+ public GitCheckoutRevisionAction() {
+ getTemplatePresentation().setTextValue(GitLocalize.actionCheckoutRevisionText());
+ }
+
@Override
protected void actionPerformed(@Nonnull GitRepository repository, @Nonnull Hash commit) {
- GitBrancher brancher = ServiceManager.getService(repository.getProject(), GitBrancher.class);
- brancher.checkout(commit.asString(), false, Collections.singletonList(repository), null);
+ GitBrancher brancher = repository.getProject().getInstance(GitBrancher.class);
+ brancher.checkout(commit.asString(), false, List.of(repository), null);
}
}
diff --git a/plugin/src/main/java/git4idea/actions/GitCreateNewBranchAction.java b/plugin/src/main/java/git4idea/actions/GitCreateNewBranchAction.java
index ea47618..ec141fc 100644
--- a/plugin/src/main/java/git4idea/actions/GitCreateNewBranchAction.java
+++ b/plugin/src/main/java/git4idea/actions/GitCreateNewBranchAction.java
@@ -17,23 +17,34 @@
import java.util.Collections;
+import consulo.annotation.component.ActionImpl;
+import consulo.component.ComponentManager;
+import consulo.git.localize.GitLocalize;
import consulo.project.Project;
import consulo.versionControlSystem.log.Hash;
-import consulo.ide.ServiceManager;
import git4idea.branch.GitBranchUtil;
import git4idea.branch.GitBrancher;
import git4idea.repo.GitRepository;
import jakarta.annotation.Nonnull;
+@ActionImpl(id = "Git.CreateNewBranch")
public class GitCreateNewBranchAction extends GitLogSingleCommitAction {
+ public GitCreateNewBranchAction() {
+ getTemplatePresentation().setTextValue(GitLocalize.actionCreateNewBranchText());
+ getTemplatePresentation().setDescriptionValue(GitLocalize.actionCreateNewBranchDescription());
+ }
+
@Override
protected void actionPerformed(@Nonnull GitRepository repository, @Nonnull Hash commit) {
Project project = repository.getProject();
String reference = commit.asString();
- final String name =
- GitBranchUtil.getNewBranchNameFromUser(project, Collections.singleton(repository), "Checkout New Branch From " + reference);
+ String name = GitBranchUtil.getNewBranchNameFromUser(
+ project,
+ Collections.singleton(repository),
+ GitLocalize.dialogCheckoutNewBranchFrom0Title(reference).get()
+ );
if (name != null) {
- GitBrancher brancher = ServiceManager.getService(project, GitBrancher.class);
+ GitBrancher brancher = project.getInstance(GitBrancher.class);
brancher.checkoutNewBranchStartingFrom(name, reference, Collections.singletonList(repository), null);
}
}
diff --git a/plugin/src/main/java/git4idea/actions/GitCreateTagAction.java b/plugin/src/main/java/git4idea/actions/GitCreateTagAction.java
index 3d70589..3205bb8 100644
--- a/plugin/src/main/java/git4idea/actions/GitCreateTagAction.java
+++ b/plugin/src/main/java/git4idea/actions/GitCreateTagAction.java
@@ -15,13 +15,23 @@
*/
package git4idea.actions;
+import consulo.annotation.component.ActionImpl;
+import consulo.git.localize.GitLocalize;
+import consulo.ui.annotation.RequiredUIAccess;
import jakarta.annotation.Nonnull;
import consulo.versionControlSystem.log.Hash;
import git4idea.history.wholeTree.GitCreateNewTag;
import git4idea.repo.GitRepository;
+@ActionImpl(id = "Git.CreateNewTag")
public class GitCreateTagAction extends GitLogSingleCommitAction {
+ public GitCreateTagAction() {
+ getTemplatePresentation().setTextValue(GitLocalize.actionCreateNewTagText());
+ getTemplatePresentation().setDescriptionValue(GitLocalize.actionCreateNewTagDescription());
+ }
+
@Override
+ @RequiredUIAccess
protected void actionPerformed(@Nonnull GitRepository repository, @Nonnull Hash commit) {
String reference = commit.asString();
new GitCreateNewTag(repository.getProject(), repository, reference, null).execute();
diff --git a/plugin/src/main/java/git4idea/actions/GitLogSingleCommitAction.java b/plugin/src/main/java/git4idea/actions/GitLogSingleCommitAction.java
index 6746ba6..b669b52 100644
--- a/plugin/src/main/java/git4idea/actions/GitLogSingleCommitAction.java
+++ b/plugin/src/main/java/git4idea/actions/GitLogSingleCommitAction.java
@@ -15,7 +15,6 @@
*/
package git4idea.actions;
-import consulo.ide.ServiceManager;
import consulo.project.Project;
import consulo.versionControlSystem.distributed.action.VcsLogSingleCommitAction;
import consulo.versionControlSystem.distributed.repository.AbstractRepositoryManager;
diff --git a/plugin/src/main/java/git4idea/actions/LogContextMenuGroup.java b/plugin/src/main/java/git4idea/actions/LogContextMenuGroup.java
new file mode 100644
index 0000000..2b7f601
--- /dev/null
+++ b/plugin/src/main/java/git4idea/actions/LogContextMenuGroup.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2013-2025 consulo.io
+ *
+ * Licensed 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.
+ */
+package git4idea.actions;
+
+import consulo.annotation.component.ActionImpl;
+import consulo.annotation.component.ActionParentRef;
+import consulo.annotation.component.ActionRef;
+import consulo.application.dumb.DumbAware;
+import consulo.git.localize.GitLocalize;
+import consulo.ui.ex.action.AnSeparator;
+import consulo.ui.ex.action.DefaultActionGroup;
+import git4idea.reset.GitResetAction;
+
+/**
+ * @author UNV
+ * @since 2025-08-28
+ */
+@ActionImpl(
+ id = "Git.Log.ContextMenu",
+ children = {
+ @ActionRef(type = AnSeparator.class),
+ @ActionRef(type = GitCheckoutRevisionAction.class),
+ @ActionRef(type = GitCreateNewBranchAction.class),
+ @ActionRef(type = GitCreateTagAction.class),
+ @ActionRef(type = AnSeparator.class),
+ @ActionRef(type = GitResetAction.class)
+ },
+ parents = @ActionParentRef(@ActionRef(id = "Vcs.Log.ContextMenu"))
+)
+public class LogContextMenuGroup extends DefaultActionGroup implements DumbAware {
+ public LogContextMenuGroup() {
+ super(GitLocalize.groupLogContextMenuText(), false);
+ }
+}
diff --git a/plugin/src/main/java/git4idea/actions/LogToolbarGroup.java b/plugin/src/main/java/git4idea/actions/LogToolbarGroup.java
new file mode 100644
index 0000000..f8fd8c1
--- /dev/null
+++ b/plugin/src/main/java/git4idea/actions/LogToolbarGroup.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2013-2025 consulo.io
+ *
+ * Licensed 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.
+ */
+package git4idea.actions;
+
+import consulo.annotation.component.ActionImpl;
+import consulo.annotation.component.ActionParentRef;
+import consulo.annotation.component.ActionRef;
+import consulo.application.dumb.DumbAware;
+import consulo.git.localize.GitLocalize;
+import consulo.ui.ex.action.DefaultActionGroup;
+import git4idea.branch.DeepCompareAction;
+
+/**
+ * @author UNV
+ * @since 2025-08-28
+ */
+@ActionImpl(
+ id = "Git.Log.Toolbar",
+ children = @ActionRef(type = DeepCompareAction.class),
+ parents = @ActionParentRef(@ActionRef(id = "Vcs.Log.Toolbar"))
+)
+public class LogToolbarGroup extends DefaultActionGroup implements DumbAware {
+ public LogToolbarGroup() {
+ super(GitLocalize.groupLogToolbarText(), false);
+ }
+}
diff --git a/plugin/src/main/java/git4idea/branch/DeepCompareAction.java b/plugin/src/main/java/git4idea/branch/DeepCompareAction.java
index 544be05..69590c9 100644
--- a/plugin/src/main/java/git4idea/branch/DeepCompareAction.java
+++ b/plugin/src/main/java/git4idea/branch/DeepCompareAction.java
@@ -15,7 +15,10 @@
*/
package git4idea.branch;
+import consulo.annotation.component.ActionImpl;
import consulo.application.dumb.DumbAware;
+import consulo.git.icon.GitIconGroup;
+import consulo.git.localize.GitLocalize;
import consulo.ide.impl.idea.vcs.log.data.VcsLogBranchFilterImpl;
import consulo.ide.impl.idea.vcs.log.ui.filter.BranchPopupBuilder;
import consulo.localize.LocalizeValue;
@@ -38,106 +41,120 @@
import java.util.Set;
import java.util.function.Consumer;
+@ActionImpl(id = "Git.Log.DeepCompare")
public class DeepCompareAction extends ToggleAction implements DumbAware {
- @Override
- public boolean isSelected(AnActionEvent e) {
- Project project = e.getData(Project.KEY);
- VcsLogUi ui = e.getData(VcsLogUi.KEY);
- if (project == null || ui == null) {
- return false;
+ public DeepCompareAction() {
+ super(GitLocalize.actionLogDeepCompareText(), GitLocalize.actionLogDeepCompareDescription(), GitIconGroup.deepcompare());
}
- return DeepComparator.getInstance(project, ui).hasHighlightingOrInProgress();
- }
- @Nonnull
- @Override
- public ActionUpdateThread getActionUpdateThread() {
- return ActionUpdateThread.EDT;
- }
-
- @RequiredUIAccess
- @Override
- public void setSelected(AnActionEvent e, boolean selected) {
- Project project = e.getData(Project.KEY);
- final VcsLogUi ui = e.getData(VcsLogUi.KEY);
- final VcsLogDataProvider dataProvider = e.getData(VcsLogDataProvider.KEY);
- if (project == null || ui == null || dataProvider == null) {
- return;
+ @Override
+ public boolean isSelected(AnActionEvent e) {
+ Project project = e.getData(Project.KEY);
+ VcsLogUi ui = e.getData(VcsLogUi.KEY);
+ return project != null && ui != null && DeepComparator.getInstance(project, ui).hasHighlightingOrInProgress();
}
- final DeepComparator dc = DeepComparator.getInstance(project, ui);
- if (selected) {
- VcsLogUtil.triggerUsage(e);
- VcsLogBranchFilter branchFilter = ui.getFilterUi().getFilters().getBranchFilter();
- String singleBranchName = branchFilter != null ? VcsLogUtil.getSingleFilteredBranch(branchFilter, ui.getDataPack().getRefs()) : null;
- if (singleBranchName == null) {
- selectBranchAndPerformAction(ui.getDataPack(), e, selectedBranch -> {
- ui.getFilterUi().setFilter(VcsLogBranchFilterImpl.fromBranch(selectedBranch));
- dc.highlightInBackground(selectedBranch, dataProvider);
- }, getAllVisibleRoots(ui));
- return;
- }
- dc.highlightInBackground(singleBranchName, dataProvider);
- }
- else {
- dc.stopAndUnhighlight();
+ @Nonnull
+ @Override
+ public ActionUpdateThread getActionUpdateThread() {
+ return ActionUpdateThread.EDT;
}
- }
- private static void selectBranchAndPerformAction(@Nonnull VcsLogDataPack dataPack,
- @Nonnull AnActionEvent event,
- @Nonnull final Consumer consumer,
- @Nonnull Collection visibleRoots) {
- ActionGroup actionGroup = new BranchPopupBuilder(dataPack, visibleRoots, null) {
- @Nonnull
- @Override
- protected AnAction createAction(@Nonnull String name) {
- return new DumbAwareAction(LocalizeValue.of(name)) {
- @RequiredUIAccess
- @Override
- public void actionPerformed(@Nonnull AnActionEvent e) {
- consumer.accept(name);
- }
- };
- }
- }.build();
- ListPopup popup = JBPopupFactory.getInstance()
- .createActionGroupPopup("Select branch to compare",
- actionGroup,
- event.getDataContext(),
- false,
- false,
- false,
- null,
- -1,
- null);
- InputEvent inputEvent = event.getInputEvent();
- if (inputEvent instanceof MouseEvent) {
- popup.show(new RelativePoint((MouseEvent)inputEvent));
+ @Override
+ @RequiredUIAccess
+ public void setSelected(AnActionEvent e, boolean selected) {
+ Project project = e.getData(Project.KEY);
+ final VcsLogUi ui = e.getData(VcsLogUi.KEY);
+ final VcsLogDataProvider dataProvider = e.getData(VcsLogDataProvider.KEY);
+ if (project == null || ui == null || dataProvider == null) {
+ return;
+ }
+ final DeepComparator dc = DeepComparator.getInstance(project, ui);
+ if (selected) {
+ VcsLogUtil.triggerUsage(e);
+
+ VcsLogBranchFilter branchFilter = ui.getFilterUi().getFilters().getBranchFilter();
+ String singleBranchName =
+ branchFilter != null ? VcsLogUtil.getSingleFilteredBranch(branchFilter, ui.getDataPack().getRefs()) : null;
+ if (singleBranchName == null) {
+ selectBranchAndPerformAction(
+ ui.getDataPack(),
+ e,
+ selectedBranch -> {
+ ui.getFilterUi().setFilter(VcsLogBranchFilterImpl.fromBranch(selectedBranch));
+ dc.highlightInBackground(selectedBranch, dataProvider);
+ },
+ getAllVisibleRoots(ui)
+ );
+ return;
+ }
+ dc.highlightInBackground(singleBranchName, dataProvider);
+ }
+ else {
+ dc.stopAndUnhighlight();
+ }
}
- else {
- popup.showInBestPositionFor(event.getDataContext());
+
+ private static void selectBranchAndPerformAction(
+ @Nonnull VcsLogDataPack dataPack,
+ @Nonnull AnActionEvent event,
+ @Nonnull final Consumer consumer,
+ @Nonnull Collection visibleRoots
+ ) {
+ ActionGroup actionGroup = new BranchPopupBuilder(dataPack, visibleRoots, null) {
+ @Nonnull
+ @Override
+ protected AnAction createAction(@Nonnull String name) {
+ return new DumbAwareAction(LocalizeValue.of(name)) {
+ @RequiredUIAccess
+ @Override
+ public void actionPerformed(@Nonnull AnActionEvent e) {
+ consumer.accept(name);
+ }
+ };
+ }
+ }.build();
+ ListPopup popup = JBPopupFactory.getInstance().createActionGroupPopup(
+ "Select branch to compare",
+ actionGroup,
+ event.getDataContext(),
+ false,
+ false,
+ false,
+ null,
+ -1,
+ null
+ );
+ InputEvent inputEvent = event.getInputEvent();
+ if (inputEvent instanceof MouseEvent) {
+ popup.show(new RelativePoint((MouseEvent) inputEvent));
+ }
+ else {
+ popup.showInBestPositionFor(event.getDataContext());
+ }
}
- }
- @Override
- public void update(@Nonnull AnActionEvent e) {
- super.update(e);
- Project project = e.getData(Project.KEY);
- VcsLogUi ui = e.getData(VcsLogUi.KEY);
- e.getPresentation().setEnabledAndVisible(project != null && ui != null &&
- hasGitRoots(project, getAllVisibleRoots(ui)));
- }
+ @Override
+ public void update(@Nonnull AnActionEvent e) {
+ super.update(e);
+ Project project = e.getData(Project.KEY);
+ VcsLogUi ui = e.getData(VcsLogUi.KEY);
+ e.getPresentation().setEnabledAndVisible(
+ project != null && ui != null && hasGitRoots(project, getAllVisibleRoots(ui))
+ );
+ }
- private static boolean hasGitRoots(@Nonnull Project project, @Nonnull Set roots) {
- final GitRepositoryManager manager = project.getInstance(GitRepositoryManager.class);
- return ContainerUtil.exists(roots, root -> manager.getRepositoryForRoot(root) != null);
- }
+ private static boolean hasGitRoots(@Nonnull Project project, @Nonnull Set roots) {
+ final GitRepositoryManager manager = project.getInstance(GitRepositoryManager.class);
+ return ContainerUtil.exists(roots, root -> manager.getRepositoryForRoot(root) != null);
+ }
- @Nonnull
- private static Set getAllVisibleRoots(@Nonnull VcsLogUi ui) {
- return VcsLogUtil.getAllVisibleRoots(ui.getDataPack().getLogProviders().keySet(),
- ui.getFilterUi().getFilters().getRootFilter(),
- ui.getFilterUi().getFilters().getStructureFilter());
- }
+ @Nonnull
+ private static Set getAllVisibleRoots(@Nonnull VcsLogUi ui) {
+ return VcsLogUtil.getAllVisibleRoots(
+ ui.getDataPack().getLogProviders().keySet(),
+ ui.getFilterUi().getFilters().getRootFilter(),
+ ui.getFilterUi().getFilters().getStructureFilter()
+ );
+ }
}
diff --git a/plugin/src/main/java/git4idea/reset/GitResetAction.java b/plugin/src/main/java/git4idea/reset/GitResetAction.java
index 39938d6..b4d91da 100644
--- a/plugin/src/main/java/git4idea/reset/GitResetAction.java
+++ b/plugin/src/main/java/git4idea/reset/GitResetAction.java
@@ -15,9 +15,12 @@
*/
package git4idea.reset;
+import consulo.annotation.component.ActionImpl;
import consulo.application.progress.ProgressIndicator;
import consulo.application.progress.Task;
+import consulo.git.localize.GitLocalize;
import consulo.project.Project;
+import consulo.ui.annotation.RequiredUIAccess;
import consulo.util.lang.ObjectUtil;
import consulo.versionControlSystem.log.Hash;
import consulo.versionControlSystem.log.VcsFullCommitDetails;
@@ -25,32 +28,34 @@
import git4idea.repo.GitRepository;
import jakarta.annotation.Nonnull;
+
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
-public class GitResetAction extends GitOneCommitPerRepoLogAction
-{
- @Override
- protected void actionPerformed(@Nonnull final Project project, @Nonnull final Map commits)
- {
- GitVcsSettings settings = GitVcsSettings.getInstance(project);
- GitResetMode defaultMode = ObjectUtil.notNull(settings.getResetMode(), GitResetMode.getDefault());
- GitNewResetDialog dialog = new GitNewResetDialog(project, commits, defaultMode);
- if(dialog.showAndGet())
- {
- final GitResetMode selectedMode = dialog.getResetMode();
- settings.setResetMode(selectedMode);
- new Task.Backgroundable(project, "Git reset", true)
- {
- @Override
- public void run(@Nonnull ProgressIndicator indicator)
- {
- Map hashes = commits.keySet().stream().collect(Collectors.toMap(Function.identity(), repo -> commits.get(repo).getId()));
- new GitResetOperation(project, hashes, selectedMode, indicator).execute();
- }
- }.queue();
- }
- }
+@ActionImpl(id = "Git.Reset.In.Log")
+public class GitResetAction extends GitOneCommitPerRepoLogAction {
+ public GitResetAction() {
+ getTemplatePresentation().setTextValue(GitLocalize.actionLogResetText());
+ }
+ @RequiredUIAccess
+ @Override
+ protected void actionPerformed(@Nonnull final Project project, @Nonnull final Map commits) {
+ GitVcsSettings settings = GitVcsSettings.getInstance(project);
+ GitResetMode defaultMode = ObjectUtil.notNull(settings.getResetMode(), GitResetMode.getDefault());
+ GitNewResetDialog dialog = new GitNewResetDialog(project, commits, defaultMode);
+ if (dialog.showAndGet()) {
+ final GitResetMode selectedMode = dialog.getResetMode();
+ settings.setResetMode(selectedMode);
+ new Task.Backgroundable(project, GitLocalize.dialogResetTitle(), true) {
+ @Override
+ public void run(@Nonnull ProgressIndicator indicator) {
+ Map hashes = commits.keySet().stream()
+ .collect(Collectors.toMap(Function.identity(), repo -> commits.get(repo).getId()));
+ new GitResetOperation(project, hashes, selectedMode, indicator).execute();
+ }
+ }.queue();
+ }
+ }
}
diff --git a/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.git.GitLocalize.yaml b/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.git.GitLocalize.yaml
index e822222..ad9432a 100644
--- a/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.git.GitLocalize.yaml
+++ b/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.git.GitLocalize.yaml
@@ -32,6 +32,22 @@ action.Git.Tag.text:
text: New Tag...
action.Git.Unstash.text:
text: Unstash Changes...
+action.checkout.revision.text:
+ text: Checkout Revision
+action.create.new.branch.description:
+ text: Create new branch starting from the selected commit
+action.create.new.branch.text:
+ text: New Branch...
+action.create.new.tag.description:
+ text: Create new tag pointing to this commit
+action.create.new.tag.text:
+ text: New Tag...
+action.log.deep.compare.description:
+ text: Dims those commits which have equivalent changes in the current branch
+action.log.deep.compare.text:
+ text: Highlight Non-picked Commits
+action.log.reset.text:
+ text: Reset Current Branch to Here...
action.selected.directory.text:
text: Selected {0,choice,1#Directory|2#Directories}
action.selected.file.text:
@@ -254,6 +270,10 @@ debug.git.exec:
text: 'DEBUG: work-dir: [{0}] exec: [{1}]'
delete.action.name:
text: Delete
+dialog.checkout.new.branch.from.0.title:
+ text: Checkout New Branch From {0}
+dialog.reset.title:
+ text: Git Reset
diff.find.error:
text: 'Finding revision for diff: {0}'
error.commit.cant.create.message.file:
@@ -427,6 +447,10 @@ group.Git.MainMenu.RebaseActions.text:
text: _Rebase
group.Patch.MainMenu.text:
text: Patch
+group.log.context.menu.text:
+ text: Git Log Context Menu
+group.log.toolbar.text:
+ text: Git Log Toolbar
group.mainmenu.vcs.current.file.text:
text: Current File
index.file.error:
diff --git a/plugin/src/main/resources/META-INF/plugin.xml b/plugin/src/main/resources/META-INF/plugin.xml
index 08d2f6e..5e668ce 100644
--- a/plugin/src/main/resources/META-INF/plugin.xml
+++ b/plugin/src/main/resources/META-INF/plugin.xml
@@ -80,36 +80,12 @@
-
-
-
-
-
-
-
-
-
-
-
-