text: public virtual void Execute(BaseReceivePack rp){try{RefUpdate ru = rp.GetRepository().UpdateRef(GetRefName());ru.SetRefLogIdent(rp.GetRefLogIdent());switch (GetType()){case ReceiveCommand.Type.DELETE:{if (!ObjectId.ZeroId.Equals(GetOldId())){ru.SetExpectedOldObjectId(GetOldId());}ru.SetForceUpdate(true);SetResult(ru.Delete(rp.GetRevWalk()));break;}case ReceiveCommand.Type.CREATE:case ReceiveCommand.Type.UPDATE:case ReceiveCommand.Type.UPDATE_NONFASTFORWARD:{ru.SetForceUpdate(rp.IsAllowNonFastForwards());ru.SetExpectedOldObjectId(GetOldId());ru.SetNewObjectId(GetNewId());ru.SetRefLogMessage("push", true);SetResult(ru.Update(rp.GetRevWalk()));break;}}}catch (IOException err){Reject(err);}}