#
# 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.
#

github:
  description: Kafka Connector for Apache Doris
  homepage: https://doris.apache.org
  labels:
    - olap
    - mpp
    - apache
    - doris
    - kafka
    - kafka-connect
    - etl
    - data-streaming

  enabled_merge_buttons:
    squash:  true
    merge:   false
    rebase:  false
  protected_branches:
    master:
      required_pull_request_reviews:
        dismiss_stale_reviews: true
        required_approving_review_count: 1
  features:
    issues: true
    projects: true

notifications:
    issues: commits@doris.apache.org
    commits: commits@doris.apache.org
    pullrequests_status:  commits@doris.apache.org

