Merge "When issuing a 'Rebase' the committer will now be the logged in user"
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Rebase.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Rebase.java
index ec6b122..358e5fc 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Rebase.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Rebase.java
@@ -39,11 +39,11 @@
public static class Input {
}
- private final RebaseChange rebaseChange;
+ private final Provider<RebaseChange> rebaseChange;
private final ChangeJson json;
@Inject
- public Rebase(RebaseChange rebaseChange, ChangeJson json) {
+ public Rebase(Provider<RebaseChange> rebaseChange, ChangeJson json) {
this.rebaseChange = rebaseChange;
this.json = json;
}
@@ -62,7 +62,7 @@
}
try {
- rebaseChange.rebase(rsrc.getPatchSet().getId(), rsrc.getUser());
+ rebaseChange.get().rebase(rsrc.getPatchSet().getId(), rsrc.getUser());
} catch (InvalidChangeOperationException e) {
throw new ResourceConflictException(e.getMessage());
} catch (IOException e) {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/RebaseChange.java b/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/RebaseChange.java
index cb4c2c3..37cbdf7 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/RebaseChange.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/RebaseChange.java
@@ -75,6 +75,7 @@
private final ChangeHookRunner hooks;
private final MergeUtil.Factory mergeUtilFactory;
private final ProjectCache projectCache;
+ private final IdentifiedUser currentUser;
@Inject
RebaseChange(final ChangeControl.GenericFactory changeControlFactory,
@@ -85,7 +86,8 @@
final RebasedPatchSetSender.Factory rebasedPatchSetSenderFactory,
final ChangeHookRunner hooks,
final MergeUtil.Factory mergeUtilFactory,
- final ProjectCache projectCache) {
+ final ProjectCache projectCache,
+ final IdentifiedUser currentUser) {
this.changeControlFactory = changeControlFactory;
this.patchSetInfoFactory = patchSetInfoFactory;
this.db = db;
@@ -96,6 +98,7 @@
this.hooks = hooks;
this.mergeUtilFactory = mergeUtilFactory;
this.projectCache = projectCache;
+ this.currentUser = currentUser;
}
/**
@@ -152,10 +155,14 @@
final RevCommit baseCommit =
rw.parseCommit(ObjectId.fromString(baseRev));
+ PersonIdent committerIdent =
+ currentUser.newCommitterIdent(myIdent.getWhen(),
+ myIdent.getTimeZone());
+
final PatchSet newPatchSet =
rebase(git, rw, inserter, patchSetId, change, uploader.getAccountId(), baseCommit,
mergeUtilFactory.create(
- changeControl.getProjectControl().getProjectState(), true));
+ changeControl.getProjectControl().getProjectState(), true), committerIdent);
final Set<Account.Id> oldReviewers = Sets.newHashSet();
final Set<Account.Id> oldCC = Sets.newHashSet();
@@ -307,7 +314,7 @@
public PatchSet rebase(final Repository git, final RevWalk revWalk,
final ObjectInserter inserter, final PatchSet.Id patchSetId,
final Change chg, final Account.Id uploader, final RevCommit baseCommit,
- final MergeUtil mergeUtil) throws NoSuchChangeException,
+ final MergeUtil mergeUtil, PersonIdent committerIdent) throws NoSuchChangeException,
OrmException, IOException, InvalidChangeOperationException,
PathConflictException {
Change change = chg;
@@ -316,7 +323,7 @@
final RevCommit rebasedCommit;
ObjectId oldId = ObjectId.fromString(originalPatchSet.getRevision().get());
ObjectId newId = rebaseCommit(git, inserter, revWalk.parseCommit(oldId),
- baseCommit, mergeUtil, myIdent);
+ baseCommit, mergeUtil, committerIdent);
rebasedCommit = revWalk.parseCommit(newId);
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/RebaseIfNecessary.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/RebaseIfNecessary.java
index 8490ea1..77c4863 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/RebaseIfNecessary.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/RebaseIfNecessary.java
@@ -25,6 +25,7 @@
import com.google.gwtorm.server.OrmException;
import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.PersonIdent;
import java.io.IOException;
import java.util.HashMap;
@@ -35,12 +36,14 @@
private final RebaseChange rebaseChange;
private final Map<Change.Id, CodeReviewCommit> newCommits;
+ private final PersonIdent committerIdent;
RebaseIfNecessary(final SubmitStrategy.Arguments args,
- final RebaseChange rebaseChange) {
+ final RebaseChange rebaseChange, PersonIdent committerIdent) {
super(args);
this.rebaseChange = rebaseChange;
this.newCommits = new HashMap<Change.Id, CodeReviewCommit>();
+ this.committerIdent = committerIdent;
}
@Override
@@ -77,7 +80,7 @@
rebaseChange.rebase(args.repo, args.rw, args.inserter,
n.patchsetId, n.change,
args.mergeUtil.getSubmitter(n.patchsetId).getAccountId(),
- newMergeTip, args.mergeUtil);
+ newMergeTip, args.mergeUtil, committerIdent);
List<PatchSetApproval> approvals = Lists.newArrayList();
for (PatchSetApproval a : args.mergeUtil.getApprovalsForCommit(n)) {
approvals.add(new PatchSetApproval(newPatchSet.getId(), a));
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmitStrategyFactory.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmitStrategyFactory.java
index 8bf831c..d43a756 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmitStrategyFactory.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmitStrategyFactory.java
@@ -93,7 +93,7 @@
case MERGE_IF_NECESSARY:
return new MergeIfNecessary(args);
case REBASE_IF_NECESSARY:
- return new RebaseIfNecessary(args, rebaseChange);
+ return new RebaseIfNecessary(args, rebaseChange, myIdent);
default:
final String errorMsg = "No submit strategy for: " + submitType;
log.error(errorMsg);