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 @@ - - - - - - - - - - - - - - - - - - - -