From 69d9c94b35169cd039da61c6f68667687be0f642 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Tue, 20 Jan 2009 12:19:51 -0800 Subject: [PATCH] Add uploader's Account.Id and upload timestamp to PatchSet This is the user that put the PatchSet into the change, and the date and time it was received in by Gerrit. We track all of this data in Gerrit1 so we might as well continue to do so in Gerrit2. Signed-off-by: Shawn O. Pearce --- .../gerrit/client/reviewdb/ChangeMessage.java | 7 +++++- .../gerrit/client/reviewdb/PatchSet.java | 25 +++++++++++++++++++ .../com/google/gerrit/server/ssh/Receive.java | 7 +++++- devutil/import_gerrit1.sql | 9 +++++-- 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeMessage.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeMessage.java index d33b4de5ec..dd0be0ca59 100644 --- a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeMessage.java +++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeMessage.java @@ -72,9 +72,14 @@ public final class ChangeMessage { } public ChangeMessage(final ChangeMessage.Key k, final Account.Id a) { + this(k, a, new Timestamp(System.currentTimeMillis())); + } + + public ChangeMessage(final ChangeMessage.Key k, final Account.Id a, + final Timestamp wo) { key = k; author = a; - writtenOn = new Timestamp(System.currentTimeMillis()); + writtenOn = wo; } public ChangeMessage.Key getKey() { diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSet.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSet.java index 5878f89309..cc15cc28cd 100644 --- a/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSet.java +++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSet.java @@ -17,6 +17,8 @@ package com.google.gerrit.client.reviewdb; import com.google.gwtorm.client.Column; import com.google.gwtorm.client.IntKey; +import java.sql.Timestamp; + /** A single revision of a {@link Change}. */ public final class PatchSet { public static class Id extends IntKey { @@ -64,6 +66,13 @@ public final class PatchSet { @Column(notNull = false) protected RevId revision; + @Column(name = "uploader_account_id") + protected Account.Id uploader; + + /** When this patch set was first introduced onto the change. */ + @Column + protected Timestamp createdOn; + protected PatchSet() { } @@ -87,6 +96,22 @@ public final class PatchSet { revision = i; } + public Account.Id getUploader() { + return uploader; + } + + public void setUploader(final Account.Id who) { + uploader = who; + } + + public Timestamp getCreatedOn() { + return createdOn; + } + + public void setCreatedOn(final Timestamp ts) { + createdOn = ts; + } + public String getRefName() { final StringBuilder r = new StringBuilder(); r.append("refs/changes/"); diff --git a/appjar/src/main/java/com/google/gerrit/server/ssh/Receive.java b/appjar/src/main/java/com/google/gerrit/server/ssh/Receive.java index cb23517f95..5b6740bc5d 100644 --- a/appjar/src/main/java/com/google/gerrit/server/ssh/Receive.java +++ b/appjar/src/main/java/com/google/gerrit/server/ssh/Receive.java @@ -52,6 +52,7 @@ import org.spearce.jgit.transport.ReceiveCommand.Result; import java.io.IOException; import java.io.OutputStreamWriter; +import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -468,6 +469,8 @@ class Receive extends AbstractGitCommand { new Change(new Change.Id(db.nextChangeId()), userAccount.getId(), destBranch.getNameKey()); final PatchSet ps = new PatchSet(change.newPatchSetId()); + ps.setCreatedOn(change.getCreatedOn()); + ps.setUploader(userAccount.getId()); final PatchSetImporter imp = new PatchSetImporter(db, repo, c, ps, true); imp.setTransaction(txn); imp.run(); @@ -538,6 +541,8 @@ class Receive extends AbstractGitCommand { } final PatchSet ps = new PatchSet(change.newPatchSetId()); + ps.setCreatedOn(new Timestamp(System.currentTimeMillis())); + ps.setUploader(userAccount.getId()); PatchSetImporter imp = new PatchSetImporter(db, repo, c, ps, true); imp.setTransaction(txn); try { @@ -575,7 +580,7 @@ class Receive extends AbstractGitCommand { final ChangeMessage msg = new ChangeMessage(new ChangeMessage.Key(change.getId(), ChangeUtil - .messageUUID(db)), me); + .messageUUID(db)), me, ps.getCreatedOn()); msg.setMessage("Uploaded patch set " + ps.getPatchSetId() + "."); db.changeMessages().insert(Collections.singleton(msg), txn); diff --git a/devutil/import_gerrit1.sql b/devutil/import_gerrit1.sql index 88348ceca8..f7146b8134 100644 --- a/devutil/import_gerrit1.sql +++ b/devutil/import_gerrit1.sql @@ -436,11 +436,16 @@ DELETE FROM patch_sets; INSERT INTO patch_sets (revision, change_id, - patch_set_id) SELECT + patch_set_id, + created_on, + uploader_account_id) SELECT r.revision_id, c.change_id, - p.patchset_id + p.patchset_id, + p.created, + a.account_id FROM gerrit1.patch_sets p + JOIN accounts a ON a.preferred_email = p.owner JOIN gerrit1.changes c ON p.change_key = c.gae_key LEFT OUTER JOIN gerrit1.revisions r ON r.gae_key = p.revision_key;