Swift update-checkout-config.json

Swift uses the update-checkout-config.json file to track various branch schemes. The swift-clowder repo contains equivalent clowder.yaml files

Default Configuration

The default branch setup is represented in update-checkout-config.json

{
    "ssh-clone-pattern": "git@github.com:%s.git",
    "https-clone-pattern": "https://github.com/%s.git",
    "repos" : {
        "llvm": {
            "remote": { "id": "apple/swift-llvm" } },
        "clang": {
            "remote": { "id": "apple/swift-clang" } },
        "swift": {
            "remote": { "id": "apple/swift" } },
        "lldb": {
            "remote": { "id": "apple/swift-lldb" } },
        "cmark": {
            "remote": { "id": "apple/swift-cmark" } },
        "llbuild": {
            "remote": { "id": "apple/swift-llbuild" } },
        "swiftpm": {
            "remote": { "id": "apple/swift-package-manager" } },
        "compiler-rt": {
            "remote": { "id": "apple/swift-compiler-rt" } },
        "swift-corelibs-xctest": {
            "remote": { "id": "apple/swift-corelibs-xctest" } },
        "swift-corelibs-foundation": {
            "remote": { "id": "apple/swift-corelibs-foundation" } },
        "swift-corelibs-libdispatch": {
            "remote": { "id": "apple/swift-corelibs-libdispatch" } },
        "swift-integration-tests": {
            "remote": { "id": "apple/swift-integration-tests" } },
        "swift-xcode-playground-support": {
            "remote": { "id": "apple/swift-xcode-playground-support" } },
        "ninja": {
            "remote": { "id": "ninja-build/ninja" } }
    },
    "default-branch-scheme": "master",
    "branch-schemes": {
        "master": {
            "aliases": ["master", "stable"],
            "repos": {
                "llvm": "stable",
                "clang": "stable",
                "swift": "master",
                "lldb": "stable",
                "cmark": "master",
                "llbuild": "master",
                "swiftpm": "master",
                "compiler-rt": "stable",
                "swift-corelibs-xctest": "master",
                "swift-corelibs-foundation": "master",
                "swift-corelibs-libdispatch": "master",
                "swift-integration-tests": "master",
                "swift-xcode-playground-support": "master",
                "ninja": "release"
            }
        }
    }
}

An equivalent default clowder.yaml

defaults:
    ref: refs/heads/master
    remote: origin
    source: github
    recursive: true
    protocol: https

sources:
    - name: github
      url: github.com

groups:
    - name: swift
      projects:
        - name: apple/swift
          path: swift
    - 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
    - name: swift-package-manager
      projects:
        - name: apple/swift-package-manager
          path: swiftpm
        - name: apple/swift-llbuild
          path: llbuild
    - name: third-party
      projects:
        - name: apple/swift-cmark
          path: cmark
        - name: ninja-build/ninja
          path: ninja
          ref: refs/heads/release

Versions

The swift-4.0-branch version is represented in update-checkout-config.json

"swift-4.1-branch" : {
    "aliases": ["swift-4.1-branch"],
    "repos": {
        "llvm": "swift-4.1-branch",
        "clang": "swift-4.1-branch",
        "swift": "swift-4.1-branch",
        "lldb": "swift-4.1-branch",
        "cmark": "swift-4.1-branch",
        "llbuild": "swift-4.1-branch",
        "swiftpm": "swift-4.1-branch",
        "compiler-rt": "swift-4.1-branch",
        "swift-corelibs-xctest": "swift-4.1-branch",
        "swift-corelibs-foundation": "swift-4.1-branch",
        "swift-corelibs-libdispatch": "swift-4.1-branch",
        "swift-integration-tests": "swift-4.1-branch",
        "swift-xcode-playground-support": "swift-4.1-branch",
        "ninja": "release"
    }
},

An equivalent swift-4.1-branch clowder.yaml

import default

defaults:
    ref: refs/heads/swift-4.1-branch

groups:
    - name: llvm
      ref: refs/heads/swift-4.1-branch

By utilizing the import ability of clowder, the version file only needs to override necessary values, and inherits all the remaining defaults