repo v2.15-cr1
Merge commits up to v2.15

* tag 'v2.15':
  ssh: rewrite proxy management for multiprocessing usage
  ssh: move proxy usage to the sync subcommand
  launcher: bump version for new release
  Handle 400 error code when attempting to fetch clone bundle.
  sync: added --no-use-superproject to disable superproject.
  sync: Recommend using --no-use-superproject if sync fails.
  sync: refactor main fetch loop
  ssh: move all ssh logic to a common place
  git_command: switch version caches to functools
  manifest_xml: cleanup of contactinfo test for readability with f-strings.
  sync: fix recursive fetching
  git_config: hoist Windows ssh check earlier
  manifest_xml: initial support for <contactinfo>
  sync: use manifest_name passed in
  sync: switch to multiprocessing.Event
  sync: fix logic error with linkfile errors
  release-process: document the rate limiting in automatic updates
  subcmds: force consistent help text format
  sync: fix print error when handling server error
  superproject: skip updating commit ids if remote's fetchUrl don't match.
  init/sync: add --no-tags to match --tags
  add --no-current-branch option to invert --current-branch
  harmonize --current-branch short option across subcommands
  superproject: Don't update the commit ids of projects if remote is different.
  upload: search local projects in parallel
  project: fix m/ generation when switching manifest branches
  upload: include the project in error messages
  Update copyfile and linkfile if manifest updated
  manifest_xml: ban use of newlines in paths
  sync: Fix a corner case when both superproject and depth used.
  help/version: sprinkle bug report URL around

Change-Id: I3902b777578c71bf28b9d908da873edc06ead8c0
tree: da0c99110a852c6ccf2be89bb1a42e9e4078807a
  1. .github/
  2. docs/
  3. hooks/
  4. release/
  5. subcmds/
  6. tests/
  7. .flake8
  8. .gitattributes
  9. .gitignore
  10. .mailmap
  11. .project
  12. .pydevproject
  13. color.py
  14. command.py
  15. completion.bash
  16. editor.py
  17. error.py
  18. event_log.py
  19. git_command.py
  20. git_config.py
  21. git_refs.py
  22. git_ssh
  23. git_superproject.py
  24. git_trace2_event_log.py
  25. gitc_utils.py
  26. hooks.py
  27. LICENSE
  28. main.py
  29. MANIFEST.in
  30. manifest_xml.py
  31. pager.py
  32. platform_utils.py
  33. platform_utils_win32.py
  34. progress.py
  35. project.py
  36. README.md
  37. repo
  38. repo_trace.py
  39. requirements.json
  40. run_tests
  41. setup.py
  42. ssh.py
  43. SUBMITTING_PATCHES.md
  44. tox.ini
  45. 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