Repo (Script)
Repo is a tool that Google built on top of Git to manage the many Git repositories, do the uploads to revision control system, and automate parts of the Android development workflow. Repo is not meant to replace Git, only to make it easier to work with Git in the context of Android. The repo command is an executable Python script can be put anywhere in the development system 1.
Why is it created?
According to Google OpenSource Blog the reason to create this tool is that with approximately 8.5 million lines of code (not including things like the Linux Kernel!), keeping this all in one Git tree would've been problematic for a few reasons:
- Delineate access control based on location in the tree.
- Ablity to make some components replaceable at a later date.
- Trivial overlays for OEMs and other projects who either aren't ready or aren't able to embrace open source.
- No need for technical people to spend their time as patch monkeys.
A tool on top of Git
Git is an open-source version control system designed to handle very large projects that are distributed over multiple repositories. In the context of Android, Git is used for local operations such as local branching, commits, diffs, and edits. Repo is a tool built on top of Git. Repo helps managing the many Git repositories, does the uploads to the revision control system, and automates parts of the Android development workflow. Repo is not meant to replace Git, only to make it easier to work with Git in the context of Android. The repo command is an executable Python script that can be put anywhere in the development machine. In working with the Android source files, Repo is used for across-network operations. For example, with a single Repo command it is possible to download files from multiple repositories into your local working directory.
Automated Installation
The google-repo-setup.sh shell script will automatically perform the operations described in the various Command Line Configuration and installation instructions, and will work with any of the package managers described therein.