#-------------------------------------------------------------
#
# 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:
    main:
      # 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: main
  target: asf-staging-jekyll
