8a6d1724d9
The superproject is initialized as a bare repo in Superproject:_Init(). That means that later operations must treat it as a bare repository, specifying the gitdir and setting 'bare' appropriately when launching GitCommand()s. It's also OK not to specify cwd here because GitCommand() will drop cwd if bare == True anyways. With this change, it's possible to run `repo init` and `repo sync` with the Git config 'safe.bareRepository' set to 'explicit'. This config strengthens Git's security posture against embedded bare repository attacks like https://github.com/justinsteven/advisories/blob/main/2022_git_buried_bare_repos_and_fsmonitor_various_abuses.md. Bug: b/227257481 Change-Id: I954a64c6883d2ca2af9c603e7076fd83b52584e9 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/389794 Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: Jason R. Coombs <jaraco@google.com> Tested-by: Emily Shaffer <emilyshaffer@google.com> Reviewed-by: Emily Shaffer <emilyshaffer@google.com> Commit-Queue: Jason R. Coombs <jaraco@google.com> |
||
---|---|---|
.github/workflows | ||
docs | ||
hooks | ||
man | ||
release | ||
subcmds | ||
tests | ||
.flake8 | ||
.gitattributes | ||
.gitignore | ||
.gitreview | ||
.isort.cfg | ||
.mailmap | ||
.project | ||
.pydevproject | ||
color.py | ||
command.py | ||
completion.bash | ||
editor.py | ||
error.py | ||
event_log.py | ||
fetch.py | ||
git_command.py | ||
git_config.py | ||
git_refs.py | ||
git_ssh | ||
git_superproject.py | ||
git_trace2_event_log_base.py | ||
git_trace2_event_log.py | ||
hooks.py | ||
LICENSE | ||
main.py | ||
manifest_xml.py | ||
MANIFEST.in | ||
pager.py | ||
platform_utils_win32.py | ||
platform_utils.py | ||
progress.py | ||
project.py | ||
pyproject.toml | ||
README.md | ||
repo | ||
repo_logging.py | ||
repo_trace.py | ||
requirements.json | ||
run_tests | ||
run_tests.vpython3 | ||
setup.py | ||
ssh.py | ||
SUBMITTING_PATCHES.md | ||
tox.ini | ||
wrapper.py |
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.
- Homepage: https://gerrit.googlesource.com/git-repo/
- Mailing list: repo-discuss on Google Groups
- Bug reports: https://issues.gerritcodereview.com/issues?q=is:open%20componentid:1370071
- Source: https://gerrit.googlesource.com/git-repo/
- Overview: https://source.android.com/source/developing.html
- Docs: https://source.android.com/source/using-repo.html
- repo Manifest Format
- repo Hooks
- Submitting patches
- Running Repo in Microsoft Windows
- GitHub mirror: https://github.com/GerritCodeReview/git-repo
- Postsubmit tests: https://github.com/GerritCodeReview/git-repo/actions
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