diff options
author | Dave Borowitz <dborowitz@google.com> | 2012-02-07 15:16:40 -0800 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2012-02-29 19:09:22 -0800 |
commit | 4bf22ff6e840b190e0a019e86cce19001dc587f4 (patch) | |
tree | 4873d77308b48f929e4f0007ce0b986074c115f0 /org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java | |
parent | 4de8a84671a16a3d70ed074b6f02326fb85af1d1 (diff) | |
download | jgit-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.java | 68 |
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()); |