diff options
author | Shawn O. Pearce <sop@google.com> | 2009-02-06 17:51:56 -0800 |
---|---|---|
committer | Shawn O. Pearce <sop@google.com> | 2009-02-06 17:51:56 -0800 |
commit | 6761470fbf888e33a4ea5dee020fcf39732a013a (patch) | |
tree | 4f19f66b4da0b0d4b3451926bd8e93d89976a7c8 | |
parent | ec90be6a557b1e87522a2da70542940f6ccb3a6e (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.java | 21 |
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); |