The clowder.yaml
File¶
The examples are based on the swift projects clowder.yaml files
Defaults¶
The defaults
specify the default ref
, source
, remote
, and protocol
for projects. Optionally, a default depth
can be specified
defaults:
ref: refs/heads/master
remote: origin
source: github
protocol: ssh
Sources¶
Multiple sources
can be specified. A name
and url
are required
sources:
- name: github
url: github.com
- name: bitbucket
url: bitbucket.org
Groups and Projects¶
The groups
each require a name
and associated projects
At a minimum, projects
require the name
from the project’s url, and the path
to clone relative to the base directory. The default remote
, source
, ref
, depth
, and timestamp_author
(most recent commit by author) values can be overridden on a per-project basis. It’s also possible to add a reference to a fork by adding fork
to a project, with a required name
and remote
. When a fork
is present the clowder start -t
, clowder prune -r
, and clowder prune -a
commands will apply to the fork’s remote
groups:
- name: swift
projects:
- name: apple/swift
path: swift
remote: upstream
fork:
name: JrGoodle/swift
remote: origin
- name: llvm
ref: refs/heads/stable
projects:
- name: apple/swift-llvm
path: llvm
timestamp_author: swift-ci
- name: apple/swift-clang
path: clang
timestamp_author: swift-ci
- name: apple/swift-compiler-rt
path: compiler-rt
- name: apple/swift-lldb
path: lldb
timestamp_author: swift-ci
- name: swift-corelibs
projects:
- name: apple/swift-corelibs-foundation
path: swift-corelibs-foundation
- name: apple/swift-corelibs-libdispatch
path: swift-corelibs-libdispatch
- name: apple/swift-corelibs-xctest
path: swift-corelibs-xctest
- name: apple/swift-integration-tests
path: swift-integration-tests
- name: apple/swift-xcode-playground-support
path: swift-xcode-playground-support
Refs¶
The ref
can specify a branch, tag, or commit hash with the following patterns
# branch
ref: refs/heads/stable # track branch 'stable'
# tag
ref: refs/tags/swift-4.0-RELEASE # point to commit with tag 'swift-4.0-RELEASE'
# commit
ref: 3416108abd0df3997a533a14c5ad06de20ba8a60 # point to commit hash
Imports¶
A clowder.yaml
file can import
another clowder.yaml
file and override values from the other file, add new groups
, and add new projects
. If a file contains an import
, then the normal requirements for a base clowder.yaml
are relaxed. There must be at least one additional customization specified for a clowder.yaml
with an import
to be considered valid. To import the primary clowder.yaml
specify default
, otherwise specify the version name
The swift-4.1-branch-import clowder.yaml file demonstrates import
usage. This version will import the primary clowder.yaml
and override the default ref
with refs/heads/swift-4.1-branch
. The llvm
group ref
also requires an override since it was specified to be refs/heads/stable
in the default clowder.yaml
import default
defaults:
ref: refs/heads/swift-4.1-branch
source: github-https
groups:
- name: llvm
ref: refs/heads/swift-4.1-branch
An example that might be located at versions/v0.1-depth-1/clowder.yaml
. This will override the default depth
option
Note: If v0.1
was previously saved by the clowder save
command, the depth
value will be explicitly specified for all projects, so that would need to be removed in order for this customization to have an effect
import: v0.1
defaults:
depth: 1