aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java
diff options
context:
space:
mode:
authorDave Borowitz <dborowitz@google.com>2012-02-07 15:16:40 -0800
committerShawn O. Pearce <spearce@spearce.org>2012-02-29 19:09:22 -0800
commit4bf22ff6e840b190e0a019e86cce19001dc587f4 (patch)
tree4873d77308b48f929e4f0007ce0b986074c115f0 /org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java
parent4de8a84671a16a3d70ed074b6f02326fb85af1d1 (diff)
downloadjgit-4bf22ff6e840b190e0a019e86cce19001dc587f4.tar.gz
jgit-4bf22ff6e840b190e0a019e86cce19001dc587f4.zip
Execute ReceiveCommands via a method rather than in ReceivePack
This allows a PreReceiveHook to easily "take over" all of the ReceiveCommands passed to it, preventing any of them from being handled within the ReceivePack core. Change-Id: I2a8c1fc44e8dcadf22cd97a8ec4ee79d4d9d08f1
Diffstat (limited to 'org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java68
1 files changed, 1 insertions, 67 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java
index 04f8946b2a..0bf84efd47 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java
@@ -77,7 +77,6 @@ import org.eclipse.jgit.lib.ObjectInserter;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.ProgressMonitor;
import org.eclipse.jgit.lib.Ref;
-import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.Config.SectionParser;
import org.eclipse.jgit.revwalk.ObjectWalk;
@@ -1056,76 +1055,11 @@ public class ReceivePack {
updating.beginTask(JGitText.get().updatingReferences, toApply.size());
for (ReceiveCommand cmd : toApply) {
updating.update(1);
- execute(cmd);
+ cmd.execute(this);
}
updating.endTask();
}
- private void execute(final ReceiveCommand cmd) {
- try {
- final RefUpdate ru = db.updateRef(cmd.getRefName());
- ru.setRefLogIdent(getRefLogIdent());
- switch (cmd.getType()) {
- case DELETE:
- if (!ObjectId.zeroId().equals(cmd.getOldId())) {
- // We can only do a CAS style delete if the client
- // didn't bork its delete request by sending the
- // wrong zero id rather than the advertised one.
- //
- ru.setExpectedOldObjectId(cmd.getOldId());
- }
- ru.setForceUpdate(true);
- status(cmd, ru.delete(walk));
- break;
-
- case CREATE:
- case UPDATE:
- case UPDATE_NONFASTFORWARD:
- ru.setForceUpdate(isAllowNonFastForwards());
- ru.setExpectedOldObjectId(cmd.getOldId());
- ru.setNewObjectId(cmd.getNewId());
- ru.setRefLogMessage("push", true);
- status(cmd, ru.update(walk));
- break;
- }
- } catch (IOException err) {
- cmd.setResult(Result.REJECTED_OTHER_REASON, MessageFormat.format(
- JGitText.get().lockError, err.getMessage()));
- }
- }
-
- private void status(final ReceiveCommand cmd, final RefUpdate.Result result) {
- switch (result) {
- case NOT_ATTEMPTED:
- cmd.setResult(Result.NOT_ATTEMPTED);
- break;
-
- case LOCK_FAILURE:
- case IO_FAILURE:
- cmd.setResult(Result.LOCK_FAILURE);
- break;
-
- case NO_CHANGE:
- case NEW:
- case FORCED:
- case FAST_FORWARD:
- cmd.setResult(Result.OK);
- break;
-
- case REJECTED:
- cmd.setResult(Result.REJECTED_NONFASTFORWARD);
- break;
-
- case REJECTED_CURRENT_BRANCH:
- cmd.setResult(Result.REJECTED_CURRENT_BRANCH);
- break;
-
- default:
- cmd.setResult(Result.REJECTED_OTHER_REASON, result.name());
- break;
- }
- }
-
private List<ReceiveCommand> filterCommands(final Result want) {
final List<ReceiveCommand> r = new ArrayList<ReceiveCommand>(commands
.size());