#-------------------------------------------------------------
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
#-------------------------------------------------------------

# Document for .asf.yml file is available at
# https://s.apache.org/asfyaml

github:
  description: "Apache SystemDS Website"
  homepage: https://systemds.apache.org/
  labels:
    - systemds
    - jekyll
    - gulp
    
  features:
    # Enable issues management
    issues: false
    # Enable projects for project management boards
    projects: false
    # Enable wiki for documentation
    wiki: false
    
  # Choose the type of commit merge in the PR UI
  enabled_merge_buttons:
    # Enable squash button
    squash: true
    # Enable merge button
    merge: false
    # Enable rebase button
    rebase: true
    

  protected_branches:
    master:
      # Do not allow merge commits
      # by allowing linear history
      required_linear_history: true
    asf-staging:
      # This ensures that accident
      # Force `push`es won't happen.
      required_linear_history: true
    asf-site:
      # This ensures that accident
      # Force `push`es won't happen.
      required_linear_history: true
  
# Web hosting
staging:
  profile: ~
  whoami:  asf-staging
  # top level directory for serving index.html
  # Refer: https://github.com/apache/struts-site
  # Default directories are 
  #   content/
  # or output/
  # outputdir: site
  
jekyll:
  whoami: master
  target: asf-staging-jekyll
