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
This commit is contained in:
Shawn O. Pearce 2012-05-22 15:59:53 -07:00
parent 3da4c6fc58
commit 04fa307a70
1 changed files with 10 additions and 2 deletions

View File

@ -1100,6 +1100,12 @@ protected void validateCommands() {
} 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)
@ -1123,8 +1129,10 @@ protected List<ReceiveCommand> filterCommands(final Result want) {
/** 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);