summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2009-02-06 17:51:56 -0800
committerShawn O. Pearce <sop@google.com>2009-02-06 17:51:56 -0800
commit6761470fbf888e33a4ea5dee020fcf39732a013a (patch)
tree4f19f66b4da0b0d4b3451926bd8e93d89976a7c8
parentec90be6a557b1e87522a2da70542940f6ccb3a6e (diff)
Record the account identity in all reflogs
When receiving changes from push we record the user who has authenticated to us in the reflog, rather than our own user identity. This makes the reflog much more useful, especially on real branches. Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r--src/main/java/com/google/gerrit/server/ssh/Receive.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main/java/com/google/gerrit/server/ssh/Receive.java b/src/main/java/com/google/gerrit/server/ssh/Receive.java
index f2ed0e14f1..417cb46740 100644
--- a/src/main/java/com/google/gerrit/server/ssh/Receive.java
+++ b/src/main/java/com/google/gerrit/server/ssh/Receive.java
@@ -97,6 +97,7 @@ class Receive extends AbstractGitCommand {
private GerritServer server;
private ReceivePack rp;
+ private PersonIdent refLogIdent;
private ReceiveCommand newChange;
private Branch destBranch;
@@ -120,12 +121,14 @@ class Receive extends AbstractGitCommand {
loadMyEmails();
lookup(reviewerId, "reviewer", reviewerEmail);
lookup(ccId, "cc", ccEmail);
+ refLogIdent = createRefLogIdent();
rp = new ReceivePack(repo);
rp.setAllowCreates(true);
rp.setAllowDeletes(true);
rp.setAllowNonFastForwards(true);
rp.setCheckReceivedObjects(true);
+ rp.setRefLogIdent(refLogIdent);
rp.setPreReceiveHook(new PreReceiveHook() {
public void onPreReceive(final ReceivePack arg0,
final Collection<ReceiveCommand> commands) {
@@ -182,6 +185,20 @@ class Receive extends AbstractGitCommand {
}
}
+ private PersonIdent createRefLogIdent() {
+ String name = userAccount.getFullName();
+ if (name == null) {
+ name = userAccount.getPreferredEmail();
+ }
+ if (name == null) {
+ name = "Anonymous Coward";
+ }
+
+ String user = "account-" + userAccount.getId().toString();
+ String host = "unknown";
+ return new PersonIdent(name, user + "@" + host);
+ }
+
private void verifyActiveContributorAgreement() throws Failure {
AccountAgreement bestAgreement = null;
ContributorAgreement bestCla = null;
@@ -645,6 +662,8 @@ class Receive extends AbstractGitCommand {
final RefUpdate ru = repo.updateRef(ps.getRefName());
ru.setForceUpdate(true);
ru.setNewObjectId(c);
+ ru.setRefLogIdent(refLogIdent);
+ ru.setRefLogMessage("uploaded", false);
ru.update(walk);
PushQueue.scheduleUpdate(proj.getNameKey(), ru.getName());
@@ -816,6 +835,8 @@ class Receive extends AbstractGitCommand {
final RefUpdate ru = repo.updateRef(ps.getRefName());
ru.setForceUpdate(true);
ru.setNewObjectId(c);
+ ru.setRefLogIdent(refLogIdent);
+ ru.setRefLogMessage("uploaded", false);
ru.update(rp.getRevWalk());
PushQueue.scheduleUpdate(proj.getNameKey(), ru.getName());
cmd.setResult(ReceiveCommand.Result.OK);