Merge tag 'v2.54'

repo v2.54

* tag 'v2.54':
  project: use --netrc-optional instead of --netrc
  launcher: switch command quoting to shlex.quote
  sync: Warn about excessive job counts
  run_tests: fix running when cwd is not the root
  run_tests: enable Python 3.8 CI coverage
  Fix EROFS error when root fs is mounted read-only
  pager: drop unused global vars
  launcher: change RunError to subprocess.CalledProcessError
  launcher: change collections.namedtuple to typing.NamedTuple
  tox: sync black settings with run_tests
  black: update to v25
  run_tests: move test filtering to pytest markers
  run_tests: move CQ test skips here
  run_tests: run all tests all the time
  launcher: change RunResult to subprocess.CompletedProcess
  Sync: Fix full submodule sync while shallow specified
  sync: Refresh index before updating repo
  gc: Add tags to remote pack list
  Activate submodules
  Use 'gitfile' in submodule checkouts
  Update internal filesystem layout for submodules
  Revert "sync: skip network half on repo upgrade"
  docs: smart-sync: split out & expand details
  run_tests: update to python 3.11 & pytest 8.3.4
  git_config: prefer XDG config location
tree: 8f05eb7660ae70d2413213744306f7ccb8920a8e
  1. .github/
  2. docs/
  3. hooks/
  4. man/
  5. release/
  6. subcmds/
  7. tests/
  8. .flake8
  9. .gitattributes
  10. .gitignore
  11. .gitreview
  12. .isort.cfg
  13. .mailmap
  14. .project
  15. .pydevproject
  16. color.py
  17. command.py
  18. completion.bash
  19. constraints.txt
  20. editor.py
  21. error.py
  22. event_log.py
  23. fetch.py
  24. git_command.py
  25. git_config.py
  26. git_refs.py
  27. git_ssh
  28. git_superproject.py
  29. git_trace2_event_log.py
  30. git_trace2_event_log_base.py
  31. hooks.py
  32. LICENSE
  33. main.py
  34. MANIFEST.in
  35. manifest_xml.py
  36. pager.py
  37. platform_utils.py
  38. platform_utils_win32.py
  39. progress.py
  40. project.py
  41. pyproject.toml
  42. README.md
  43. repo
  44. repo_logging.py
  45. repo_trace.py
  46. requirements.json
  47. run_tests
  48. run_tests.vpython3
  49. run_tests.vpython3.8
  50. setup.py
  51. ssh.py
  52. SUBMITTING_PATCHES.md
  53. tox.ini
  54. wrapper.py
README.md

repo

Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workflow. Repo is not meant to replace Git, only to make it easier to work with Git. The repo command is an executable Python script that you can put anywhere in your path.

Contact

Please use the repo-discuss mailing list or issue tracker for questions.

You can file a new bug report under the “repo” component.

Please do not e-mail individual developers for support. They do not have the bandwidth for it, and often times questions have already been asked on repo-discuss or bugs posted to the issue tracker. So please search those sites first.

Install

Many distros include repo, so you might be able to install from there.

# Debian/Ubuntu.
$ sudo apt-get install repo

# Gentoo.
$ sudo emerge dev-vcs/repo

You can install it manually as well as it's a single script.

$ mkdir -p ~/.bin
$ PATH="${HOME}/.bin:${PATH}"
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
$ chmod a+rx ~/.bin/repo