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

* tag 'v2.4.1': (71 commits)
  manifest_xml: skip config lookup during first init
  project: replace GetHeadPath with new git helper
  project: fix rebase check with worktrees
  manifest: support optional --manifest-name
  repo/init: improve basic progress messages
  repo/init: add --verbose flags
  repo: show redirects when tracing commands
  docs: update Windows info
  init: hide summary output when using --quiet
  project: fix worktree init under Windows
  manifest_xml: change .repo/manifest.xml to a plain file
  project: fallback to hardlinks with git hooks
  release: import some helper scripts for managing official releases
  manifest/tests: get them passing under Windows
  project: unify StartBranch flows behind git-update-ref
  repo: fix up license text
  tests: add git_require coverage
  abandon: add support for --quiet
  sync: Fix flake8 E125 and E129 warnings
  main/repo: add support for subcommand aliases
  git_config: add support for repo-specific settings
  project/sync: move DeleteProject helper to Project
  project: set core.repositoryFormatVersion=1 when using extensions
  git_config: add GetInt helper
  docs: improve project-objects & worktrees layout info
  upload: add a --hashtag-branch option akin to -t
  repo: reexec into Python 3 under Windows
  add experimental git worktree support
  assume environment always accepts strings
  upload: add support for --yes
  upload: add support for standard --dry-run
  upload: add support for setting hashtags
  command: add a `repo help` tip to --help output
  project: handle verbose with initial clone bundle
  main: fix pager logic after negation cleanup
  upload: improve no pending CL error handling
  docs: add per-project review/remote/branch settings
  avoid negative variables
  Open temporary cookie file as writable in sync.py
  platform_utils: have Windows select stream return "" at EOF
  main: add python version checking
  resort a few module imports to follow PEP8
  project: Fix E125 continuation line with same indent as next logical line
  project: move successful fetch output behind verbose
  diff: delete unused nested func
  sync: introduce --verbose option
  project: disable stat output when fast forwarding merges
  Update commit-msg hook to version from Gerrit 3.1.3
  github: enable github actions for postsubmit testing
  tox: get tests passing a bit on Windows
  README: add <> around links
  Reword the documentation regarding coding style
  repo: handle bad programs a bit better
  flake8: Suppress "F821 undefined name" inline for Python 2 names
  repo: rework gpg import for Windows
  flake8: Suppress "E731 do not assign a lambda expression, use a def"
  repo: rework parser setup to handle `init -c`
  repo: add some newer RSA/ECC signing keys
  repo: Fix warnings reported by flake8
  repo: add trace support to the launcher
  repo: add some helpers akin to subprocess.run
  pyflakes: Fix remaining "E501 line too long" warnings
  Update .mailmap
  project: Don't emit locally modified hook warning in quiet mode
  Mention exceptions to Google Style Guide in SUBMITTING_PATCHES.md
  Don't format version to 5 characters in new version message
  Replace 'A new repo command' with 'A new version of repo'
  repo: Remove duplicate import of 'os'
  repo: Remove another usage of bare 'except'
  repo: Remove unused variable in 'except'
  repo: Fix blank line issues reported by flake8

Change-Id: I141524190118feb69a6ef5dae6ae299d0ba0e5af
tree: eaf86ad552b533b4e8356f176bb2335587e14129
  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. editor.py
  16. error.py
  17. event_log.py
  18. git_command.py
  19. git_config.py
  20. git_refs.py
  21. git_ssh
  22. gitc_utils.py
  23. LICENSE
  24. main.py
  25. MANIFEST.in
  26. manifest_xml.py
  27. pager.py
  28. platform_utils.py
  29. platform_utils_win32.py
  30. progress.py
  31. project.py
  32. pyversion.py
  33. README.md
  34. repo
  35. repo_trace.py
  36. run_tests
  37. setup.py
  38. SUBMITTING_PATCHES.md
  39. tox.ini
  40. 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.

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