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
} else {
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)
/** Execute commands to update references. */
protected void executeCommands() {
- List<ReceiveCommand> toApply = ReceiveCommand.filter(commands,
- Result.NOT_ATTEMPTED);
+ List<ReceiveCommand> toApply = filterCommands(Result.NOT_ATTEMPTED);
+ if (toApply.isEmpty())
+ return;
+
ProgressMonitor updating = NullProgressMonitor.INSTANCE;
if (sideBand) {
SideBandProgressMonitor pm = new SideBandProgressMonitor(msgOut);