Browse Source

Correct PersonIdent hashCode() and equals() to ignore milliseconds

Git doesn't store millisecond accuracy in person identity lines,
so a line that we create in Java and round-trip through a Git object
wouldn't compare as being equal.  Truncate to seconds when comparing
values to ensure the same identity is equal.

Change-Id: Ie4ebde64061f52c612714e89ad34de8ac2694b07
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
stable-0.9
Shawn O. Pearce 14 years ago
parent
commit
cf9537c8ce
  1. 7
      org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java

7
org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java

@ -268,7 +268,10 @@ public class PersonIdent {
} }
public int hashCode() { public int hashCode() {
return getEmailAddress().hashCode() ^ (int) when; int hc = getEmailAddress().hashCode();
hc *= 31;
hc += (int) (when / 1000L);
return hc;
} }
public boolean equals(final Object o) { public boolean equals(final Object o) {
@ -276,7 +279,7 @@ public class PersonIdent {
final PersonIdent p = (PersonIdent) o; final PersonIdent p = (PersonIdent) o;
return getName().equals(p.getName()) return getName().equals(p.getName())
&& getEmailAddress().equals(p.getEmailAddress()) && getEmailAddress().equals(p.getEmailAddress())
&& when == p.when; && when / 1000L == p.when / 1000L;
} }
return false; return false;
} }

Loading…
Cancel
Save