diff options
author | Shawn O. Pearce <sop@google.com> | 2010-05-04 16:54:02 -0700 |
---|---|---|
committer | Shawn O. Pearce <sop@google.com> | 2010-05-04 17:36:52 -0700 |
commit | c59e5eed68d8549d03fae417cc3876242216495e (patch) | |
tree | 42e038bb610247d036ec6181fa0f843ba07a572b | |
parent | 3803582f624a6af6e7f6dbbc3ededf9e4bff65e9 (diff) |
Fix recognition of reviewers in commit message tagsv2.1.2.4
A bug in JGit's footer match method caused "Sample-Bug-Id: 42"
to be treated identical to the footer line "Signed-off-by: 42".
Since Signed-off-by tags are converted into reviewers, we were adding
account number 42 as a reviewer anytime we saw "Sample-Bug-Id: 42".
This happened for any footer line key, so long as its length matched
the length of "Signed-off-by".
This was fixed in a newer version of JGit, so upgrade.
Also prevent "Signed-off-by: 42" from being treated as an account.
Within a commit message, we only want to match to a reviewer by
their full name or their email address. Matching on their internal
database id number isn't useful.
Bug: issue 553
Change-Id: Ie26974240f26d29fb55cd95dc6b6c72c89903f37
Signed-off-by: Shawn O. Pearce <sop@google.com>
4 files changed, 26 insertions, 5 deletions
diff --git a/ReleaseNotes/ReleaseNotes-2.1.2.4.txt b/ReleaseNotes/ReleaseNotes-2.1.2.4.txt index c651b69fd4..f96c74a0c1 100644 --- a/ReleaseNotes/ReleaseNotes-2.1.2.4.txt +++ b/ReleaseNotes/ReleaseNotes-2.1.2.4.txt @@ -25,7 +25,13 @@ might not even be supported by the local JRE. In such cases the ISO-8859-1 character set is used as a fallback, so the file content is still visible. -* Update JGit to 0.7.1.34-gf36df5d to fix empty tree bug +* issue 553 Bugs sometimes added as change reviewers ++ +Bug references were sometimes added as an 'Anonymous Coward' change +reviewer when the line used to mention the bug in the commit message +was the same length as 'Signed-off-by'. Fixed. + +* Update JGit to 0.7.1.46-gdd63f5c to fix empty tree bug + Repositories which contained an empty tree object (very uncommon, its technically a bug to produce a repository like this) wouldn't clone diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountResolver.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountResolver.java index 8367885ca1..7bfd58570c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountResolver.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/AccountResolver.java @@ -45,8 +45,9 @@ public class AccountResolver { * Locate exactly one account matching the name or name/email string. * * @param nameOrEmail a string of the format - * "Full Name <email@example>", or just the email address - * ("email@example"), or a full name, or an account id. + * "Full Name <email@example>", just the email address + * ("email@example"), a full name ("Full Name"), or an account id + * ("18419"). * @return the single account that matches; null if no account matches or * there are multiple candidates. */ @@ -60,6 +61,20 @@ public class AccountResolver { return byId.get(Account.Id.parse(nameOrEmail)).getAccount(); } + return findByNameOrEmail(nameOrEmail); + } + + /** + * Locate exactly one account matching the name or name/email string. + * + * @param nameOrEmail a string of the format + * "Full Name <email@example>", just the email address + * ("email@example"), a full name ("Full Name"). + * @return the single account that matches; null if no account matches or + * there are multiple candidates. + */ + public Account findByNameOrEmail(final String nameOrEmail) + throws OrmException { final int lt = nameOrEmail.indexOf('<'); final int gt = nameOrEmail.indexOf('>'); if (lt >= 0 && gt > lt && nameOrEmail.contains("@")) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java index cbc0c0cecd..cba20ee524 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java @@ -388,7 +388,7 @@ public class ReceiveCommits implements PreReceiveHook, PostReceiveHook { private Account.Id toAccountId(final String nameOrEmail) throws OrmException, NoSuchAccountException { - final Account a = accountResolver.find(nameOrEmail); + final Account a = accountResolver.findByNameOrEmail(nameOrEmail); if (a == null) { throw new NoSuchAccountException("\"" + nameOrEmail + "\" is not registered"); @@ -46,7 +46,7 @@ limitations under the License. </issueManagement> <properties> - <jgitVersion>0.7.1.34-gf36df5d</jgitVersion> + <jgitVersion>0.7.1.46-gdd63f5c</jgitVersion> <gwtormVersion>1.1.4</gwtormVersion> <gwtjsonrpcVersion>1.2.2</gwtjsonrpcVersion> <gwtexpuiVersion>1.2.1</gwtexpuiVersion> |