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

[submodule ".github/actions/latest-tag"]
	path = .github/actions/latest-tag
	url = https://github.com/EndBug/latest-tag
[submodule ".github/actions/pr-lint-action"]
	path = .github/actions/pr-lint-action
	url = https://github.com/morrisoncole/pr-lint-action
[submodule ".github/actions/file-changes-action"]
	path = .github/actions/file-changes-action
	url = https://github.com/trilom/file-changes-action
[submodule ".github/actions/cached-dependencies"]
	path = .github/actions/cached-dependencies
	url = https://github.com/apache-superset/cached-dependencies
[submodule ".github/actions/comment-on-pr"]
	path = .github/actions/comment-on-pr
	url = https://github.com/unsplash/comment-on-pr
[submodule ".github/actions/chart-testing-action"]
	path = .github/actions/chart-testing-action
	url = https://github.com/helm/chart-testing-action
[submodule ".github/actions/chart-releaser-action"]
	path = .github/actions/chart-releaser-action
	url = https://github.com/helm/chart-releaser-action
[submodule ".github/actions/github-action-push-to-another-repository"]
	path = .github/actions/github-action-push-to-another-repository
	url = https://github.com/cpina/github-action-push-to-another-repository
