Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulian Ruppel2021-11-22 22:41:58 +0000
committerMatthias Sohn2021-12-06 13:57:38 +0000
commite26e9ac05152b910822a1ea7da964813aa20a474 (patch)
tree77339dcc2e5521d304dcdbbde8543c9874eede09
parentf86740c9c5f4db9b4338e75b1fa960d195885b69 (diff)
downloadegit-e26e9ac05152b910822a1ea7da964813aa20a474.tar.gz
egit-e26e9ac05152b910822a1ea7da964813aa20a474.tar.xz
egit-e26e9ac05152b910822a1ea7da964813aa20a474.zip
Support commit.template config property
* Prefill empty commit message with the commit template specified via commit.template (if configured) * Refresh commit message template if message is empty and user stages/unstages files * Affects staging view and commit dialog Bug: 446355 Change-Id: Ic9ea86dafdcc00cbf7846f0b1bbeb49782f03fa3
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java3
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitHelper.java35
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitUI.java6
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/CommitMessageComponent.java2
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingView.java6
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties1
6 files changed, 49 insertions, 4 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java
index 2a3d68871e..6c77b349a5 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java
@@ -2445,6 +2445,9 @@ public class UIText extends NLS {
public static String CommitAction_CommittingFailed;
/** */
+ public static String CommitAction_CommitTemplateFailed;
+
+ /** */
public static String CommitAction_errorComputingDiffs;
/** */
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitHelper.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitHelper.java
index f17c52f464..fcaf68da4d 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitHelper.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitHelper.java
@@ -20,6 +20,8 @@ import java.io.IOException;
import org.eclipse.egit.ui.Activator;
import org.eclipse.egit.ui.internal.UIText;
+import org.eclipse.jgit.errors.ConfigInvalidException;
+import org.eclipse.jgit.lib.CommitConfig;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.PersonIdent;
@@ -28,6 +30,7 @@ import org.eclipse.jgit.lib.RepositoryState;
import org.eclipse.jgit.lib.UserConfig;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
+import org.eclipse.jgit.util.StringUtils;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.widgets.Text;
@@ -37,7 +40,7 @@ import org.eclipse.swt.widgets.Text;
*/
public class CommitHelper {
- private Repository repository;
+ final private Repository repository;
boolean canCommit;
@@ -55,6 +58,8 @@ public class CommitHelper {
private String commitMessage;
+ private String commitTemplate;
+
/**
* @param repository
*/
@@ -98,6 +103,34 @@ public class CommitHelper {
if (isCherryPickResolved) {
author = getCherryPickOriginalAuthor(mergeRepository);
}
+
+ }
+
+ /**
+ * @return true if there is no commit message but a commit template
+ */
+ public boolean shouldUseCommitTemplate() {
+ return StringUtils.isEmptyOrNull(getCommitMessage())
+ && getCommitTemplate() != null;
+ }
+
+ /**
+ * @return commit message template
+ */
+ public String getCommitTemplate() {
+ if (commitTemplate == null && repository != null) {
+ CommitConfig commitConfig = repository.getConfig()
+ .get(CommitConfig.KEY);
+ try {
+ commitTemplate = commitConfig
+ .getCommitTemplateContent(repository);
+ } catch (IOException | ConfigInvalidException e) {
+ Activator.handleError(UIText.CommitAction_CommitTemplateFailed,
+ e, true);
+ }
+ }
+
+ return commitTemplate;
}
private static RevCommit getHeadCommit(Repository repository) {
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitUI.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitUI.java
index 44f6cd9b8e..7693cf9770 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitUI.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitUI.java
@@ -184,7 +184,11 @@ public class CommitUI {
commitDialog.setAuthor(commitHelper.getAuthor());
commitDialog.setCommitter(commitHelper.getCommitter());
commitDialog.setAllowToChangeSelection(!commitHelper.isMergedResolved && !commitHelper.isCherryPickResolved);
- commitDialog.setCommitMessage(commitHelper.getCommitMessage());
+ if (commitHelper.shouldUseCommitTemplate()) {
+ commitDialog.setCommitMessage(commitHelper.getCommitTemplate());
+ } else {
+ commitDialog.setCommitMessage(commitHelper.getCommitMessage());
+ }
if (commitDialog.open() != IDialogConstants.OK_ID)
return false;
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/CommitMessageComponent.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/CommitMessageComponent.java
index f6eee65811..3c6cd9e0c8 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/CommitMessageComponent.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/CommitMessageComponent.java
@@ -800,7 +800,7 @@ public class CommitMessageComponent {
String calculateCommitMessage(
CommitMessageWithCaretPosition messageWithCaretPosition) {
if (commitMessage != null) {
- // special case for merge / cherry-pick
+ // special case for merge / cherry-pick / existing message template
return commitMessage;
}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingView.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingView.java
index 0d7911fa64..cf14782a5a 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingView.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingView.java
@@ -4368,7 +4368,11 @@ public class StagingView extends ViewPart
commitMessageComponent.enableListeners(false);
commitMessageComponent.resetState();
commitMessageComponent.setAuthor(helper.getAuthor());
- commitMessageComponent.setCommitMessage(helper.getCommitMessage());
+ if (helper.shouldUseCommitTemplate()) {
+ commitMessageComponent.setCommitMessage(helper.getCommitTemplate());
+ } else {
+ commitMessageComponent.setCommitMessage(helper.getCommitMessage());
+ }
commitMessageComponent.setCommitter(helper.getCommitter());
commitMessageComponent.setHeadCommit(getCommitId(helper
.getPreviousCommit()));
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties
index 01e2678774..b5bde2cef5 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties
@@ -856,6 +856,7 @@ CommitAction_amendNotPossible=Commit/amend not possible. Possible causes\:\n\n-
CommitAction_cannotCommit=Cannot commit now
CommitAction_CommittingChanges=Committing changes
CommitAction_CommittingFailed=Committing failed
+CommitAction_CommitTemplateFailed=Evaluation of commit template failed
CommitAction_errorComputingDiffs=Error occurred computing Git commit diffs
CommitAction_errorRetrievingCommit=Error occurred retrieving last commit
CommitAction_noFilesToCommit=No files to commit

Back to the top