utils/update_checkout/README.md
update-checkout is Swift's multi repository management tool. It allows to clone and update all the required repositories to build the Swift toolchain based on the update-checkout-config.json configuration file.
update-checkout does not have any dependencies apart from Python 3.7 or more recent. To run it, clone the swift repository and run the following command to print the help output:
./swift/utils/update-checkout -h
The following commands assume you have a working Python 3 installation and that you have already cloned the swift repository.
To clone the repositories for the release/6.2 scheme, run the following command:
./swift/utils/update-checkout --clone --scheme release/6.2
The command above will use HTTPS to clone the repositories. Use --clone-with-ssh to clone with SSH instead:
./swift/utils/update-checkout --clone-with-ssh --scheme release/6.2
You can skip repositories by adding the --skip-repository argument:
./swift/utils/update-checkout --clone-with-ssh --scheme release/6.2 --skip-repository llvm-project --skip-repository swift
To update all the repositories after they have been cloned or to switch to another scheme, run:
./swift/utils/update-checkout --scheme main
If you have changes in any of the repositories, you can stash or clean them before updating. Please refer to the help for the details as to how --clean and --stash differ.
./swift/utils/update-checkout --scheme main --clean
To reset the branches from each repositories to the state of the matching remote branch, run the following command:
./swift/utils/update-checkout --reset-to-remote --scheme release/6.2
To reset the branches to a tag rather than a scheme, run:
./swift/utils/update-checkout --reset-to-remote --tag swift-6.2.1-RELEASE
You can skip repositories by adding the --skip-repository argument:
./swift/utils/update-checkout --reset-to-remote --scheme release/6.2 --skip-repository llvm-project --skip-repository swift
To checkout the commits that most closely match the timestamp of the checked out commit of the Swift repository, run:
./swift/utils/update-checkout --scheme release/6.2 --match-timestamp
update-checkout has both unit and end to end tests located in the tests directory. You can run them with the following command:
python3 ./swift/utils/update_checkout/run_tests.py
The tests are also part of the check-swift target, which means they run on CI along the other Swift tests.
Before contributing, please read our main guide
See LICENSE for license information.
See Swift.org Code of Conduct for Code of Conduct information.