From: Yann Simon <yann.simon.fr@gmail.com>
To: Robin Rosenberg <robin.rosenberg.lists@dewire.com>,
"Shawn O. Pearce" <spearce@spearce.org>
Cc: git <git@vger.kernel.org>
Subject: [PATCH JGIT] Add the signed-off in the commit text dialog
Date: Mon, 09 Feb 2009 16:17:17 +0100 [thread overview]
Message-ID: <499048FD.7050803@gmail.com> (raw)
The user can see and edit the signed-off in the commit dialog
before committing.
For new lines in the commit dialog, use Text.DELIMITER for
plateform neutrality.
Signed-off-by: Yann Simon <yann.simon.fr@gmail.com>
---
This patch only applies after the 2 previous patches.
If you want to, I could probably modify this patch so that it would
apply on the current origin.
.../egit/ui/internal/actions/CommitAction.java | 10 +-----
.../egit/ui/internal/dialogs/CommitDialog.java | 29 +++++++++++++++++++-
2 files changed, 30 insertions(+), 9 deletions(-)
diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/CommitAction.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/CommitAction.java
index 97aa60f..6aff07e 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/CommitAction.java
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/CommitAction.java
@@ -172,7 +172,7 @@ private void performCommit(CommitDialog commitDialog, String commitMessage)
}
try {
- commitMessage = doCommits(commitDialog, commitMessage, treeMap);
+ doCommits(commitDialog, commitMessage, treeMap);
} catch (IOException e) {
throw new TeamException("Committing changes", e);
}
@@ -181,7 +181,7 @@ private void performCommit(CommitDialog commitDialog, String commitMessage)
}
}
- private String doCommits(CommitDialog commitDialog, String commitMessage,
+ private void doCommits(CommitDialog commitDialog, String commitMessage,
HashMap<Repository, Tree> treeMap) throws IOException, TeamException {
String author = commitDialog.getAuthor();
@@ -209,11 +209,6 @@ private String doCommits(CommitDialog commitDialog, String commitMessage,
}
Commit commit = new Commit(repo, parentIds);
commit.setTree(tree);
- commitMessage = commitMessage.replaceAll("\r", "\n");
- if (commitDialog.isSignedOff())
- commitMessage += "\n\nSigned-off-by: " + committerIdent.getName() + " <"
- + committerIdent.getEmailAddress() + ">";
-
commit.setMessage(commitMessage);
commit.setAuthor(new PersonIdent(authorIdent, commitDate, timeZone));
commit.setCommitter(new PersonIdent(committerIdent, commitDate, timeZone));
@@ -229,7 +224,6 @@ private String doCommits(CommitDialog commitDialog, String commitMessage,
+ " to commit " + commit.getCommitId() + ".");
}
}
- return commitMessage;
}
private void prepareTrees(IFile[] selectedItems,
diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/dialogs/CommitDialog.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/dialogs/CommitDialog.java
index 9d062cc..8f85c08 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/dialogs/CommitDialog.java
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/dialogs/CommitDialog.java
@@ -17,6 +17,7 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
+import java.util.regex.Pattern;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
@@ -67,6 +68,8 @@
*/
public class CommitDialog extends Dialog {
+ private static Pattern signedOffPattern = Pattern.compile("(.|\r|\n)*Signed-off-by: .*(\r|\n)*"); //$NON-NLS-1$
+
class CommitContentProvider implements IStructuredContentProvider {
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
@@ -214,6 +217,30 @@ public void widgetDefaultSelected(SelectionEvent arg0) {
signedOffButton.setText(UIText.CommitDialog_AddSOB);
signedOffButton.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).span(2, 1).create());
+ signedOffButton.addSelectionListener(new SelectionListener() {
+ boolean alreadySigned = false;
+ public void widgetSelected(SelectionEvent arg0) {
+ if (alreadySigned)
+ return;
+ if (signedOffButton.getSelection()) {
+ alreadySigned = true;
+ String curText = commitText.getText();
+
+ // add new lines if necessary
+ if (!curText.endsWith(Text.DELIMITER))
+ curText += Text.DELIMITER;
+
+ // if the last line is not a signed off (amend a commit), add a line break
+ if (!signedOffPattern.matcher(new StringBuilder(curText)).matches())
+ curText += Text.DELIMITER;
+ commitText.setText(curText + "Signed-off-by: " + committerText.getText()); //$NON-NLS-1$
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent arg0) {
+ // Empty
+ }
+ });
Table resourcesTable = new Table(container, SWT.H_SCROLL | SWT.V_SCROLL
| SWT.FULL_SELECTION | SWT.MULTI | SWT.CHECK | SWT.BORDER);
resourcesTable.setLayoutData(GridDataFactory.fillDefaults().hint(600,
@@ -330,7 +357,7 @@ private static String getFileStatus(IFile file) {
* @return The message the user entered
*/
public String getCommitMessage() {
- return commitMessage;
+ return commitMessage.replaceAll(Text.DELIMITER, "\n"); //$NON-NLS-1$;
}
/**
--
1.6.0.4
next reply other threads:[~2009-02-09 15:19 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-09 15:17 Yann Simon [this message]
2009-02-09 15:46 ` [PATCH JGIT] Add the signed-off in the commit text dialog Shawn O. Pearce
2009-02-09 15:50 ` Yann Simon
2009-02-09 15:58 ` Shawn O. Pearce
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=499048FD.7050803@gmail.com \
--to=yann.simon.fr@gmail.com \
--cc=git@vger.kernel.org \
--cc=robin.rosenberg.lists@dewire.com \
--cc=spearce@spearce.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox