Browse Source

Reject non-fast-forwards earlier in BaseReceivePack

If BaseReceivePack has setAllowNonFastForwards(false) configured
(such as by receive.denynonfastforwards), automatically reject
any command that attempts a non-fast-forward update before it goes
further in processing.

This matches with other checks in validateCommands(), such as the
early failure of delete attempts when isAllowDeletes() is false.

Change-Id: I3bb28e4dd6d17cb31ede09eb84ceb67cdb17ea5d
stable-2.1
Shawn O. Pearce 13 years ago
parent
commit
04fa307a70
  1. 12
      org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java

12
org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java

@ -1100,6 +1100,12 @@ public abstract class BaseReceivePack {
} else { } else {
cmd.setType(ReceiveCommand.Type.UPDATE_NONFASTFORWARD); cmd.setType(ReceiveCommand.Type.UPDATE_NONFASTFORWARD);
} }
if (cmd.getType() == ReceiveCommand.Type.UPDATE_NONFASTFORWARD
&& !isAllowNonFastForwards()) {
cmd.setResult(Result.REJECTED_NONFASTFORWARD);
continue;
}
} }
if (!cmd.getRefName().startsWith(Constants.R_REFS) if (!cmd.getRefName().startsWith(Constants.R_REFS)
@ -1123,8 +1129,10 @@ public abstract class BaseReceivePack {
/** Execute commands to update references. */ /** Execute commands to update references. */
protected void executeCommands() { protected void executeCommands() {
List<ReceiveCommand> toApply = ReceiveCommand.filter(commands, List<ReceiveCommand> toApply = filterCommands(Result.NOT_ATTEMPTED);
Result.NOT_ATTEMPTED); if (toApply.isEmpty())
return;
ProgressMonitor updating = NullProgressMonitor.INSTANCE; ProgressMonitor updating = NullProgressMonitor.INSTANCE;
if (sideBand) { if (sideBand) {
SideBandProgressMonitor pm = new SideBandProgressMonitor(msgOut); SideBandProgressMonitor pm = new SideBandProgressMonitor(msgOut);

Loading…
Cancel
Save