Go to file
Mike Frysinger 07d21e6bde project: initialize new manifests in temp dirs
If initializing the manifest fails for any reason, don't leave it in
a half complete state.  This can cause problems if/when the user tries
to reinit because different codepaths will be taken.  For example, if
we initialize manifests.git and don't finish probing the remote to see
what default branch it uses, we end up always using "master" even if
that isn't what the remote uses.

To avoid all of this, use .tmp dirs when initializing, and rename to
the final path only after we complete all the right steps.

We should roll this out to all projects we clone, but start with the
manifest project for now.

Bug: https://crbug.com/gerrit/13526
Bug: https://crbug.com/gerrit/15805
Change-Id: I0214338de69ee11e090285c6b0b211052804af06
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/343539
Reviewed-by: LaMont Jones <lamontjones@google.com>
Tested-by: Mike Frysinger <vapier@google.com>
2022-08-22 19:34:46 +00:00
.github/workflows Drop support for Python 3.5 2021-06-03 11:34:17 +00:00
docs manifest: add submanifest.default_groups attribute 2022-04-29 18:42:23 +00:00
hooks commit-msg: Sync commit-msg from gerrit 3.6.1 2022-07-29 01:29:19 +00:00
man init: change --depth default to 1 for manifest repo 2022-08-18 19:12:21 +00:00
release sign-launcher: make the help text more automatic 2021-10-06 17:02:56 +00:00
subcmds init: change --depth default to 1 for manifest repo 2022-08-18 19:12:21 +00:00
tests Omit local_manifest groups from superproject override. 2022-07-15 23:32:24 +00:00
.flake8 flake8: Suppress "E731 do not assign a lambda expression, use a def" 2020-02-15 03:41:17 +00:00
.gitattributes Adds additional crlf clobber avoidance. 2016-06-22 08:36:45 +00:00
.gitignore Add parallelism to 'branches' command 2020-12-14 23:35:12 +00:00
.gitreview git-review: add config file 2021-11-15 01:39:36 +00:00
.mailmap Update .mailmap 2020-02-13 04:49:55 +00:00
.project Set correct name in PyDev and Eclipse project config 2013-04-19 09:35:43 +09:00
.pydevproject Leverage the next keyword from python 2.7 2018-12-19 11:06:35 -08:00
color.py strip python2-only coding:utf-8 & print_function settings 2021-01-06 18:53:05 +00:00
command.py Only sync superproject if it will be used. 2022-06-08 16:49:08 +00:00
completion.bash bash-completion: complete projects with repo forall 2021-07-27 06:20:52 +00:00
editor.py strip python2-only coding:utf-8 & print_function settings 2021-01-06 18:53:05 +00:00
error.py help/version: sprinkle bug report URL around 2021-04-26 21:43:43 +00:00
event_log.py strip python2-only coding:utf-8 & print_function settings 2021-01-06 18:53:05 +00:00
fetch.py Support more url schemes for getting standalone manifest 2021-10-27 13:20:35 +00:00
git_command.py add a few more docs to existing funcs 2022-08-18 17:31:01 +00:00
git_config.py Fix typo for ValueError 2021-11-07 02:32:08 +00:00
git_refs.py git_refs: fix crash with binary . files in .git/refs/ 2021-02-28 16:07:24 +00:00
git_ssh add license header to a few more files 2019-06-13 13:23:19 -04:00
git_superproject.py Omit local_manifest groups from superproject override. 2022-07-15 23:32:24 +00:00
git_trace2_event_log.py trace: allow writing traces to a socket 2022-03-16 17:33:07 +00:00
gitc_utils.py superproject: pass groups to ToXml method. 2021-03-11 01:24:52 +00:00
hooks.py drop pyversion & is_python3 checking 2021-01-06 18:53:58 +00:00
LICENSE setup.py: add basic packaging files 2019-12-02 04:23:31 +00:00
main.py sync: add multi-manifest support 2022-05-26 00:03:37 +00:00
manifest_xml.py project: simplify GetRemote a bit 2022-08-17 16:54:21 +00:00
MANIFEST.in setup.py: add basic packaging files 2019-12-02 04:23:31 +00:00
pager.py pager: catch startup failures on Windows 2022-08-18 16:43:16 +00:00
platform_utils_win32.py drop pyversion & is_python3 checking 2021-01-06 18:53:58 +00:00
platform_utils.py make file removal a bit more robust 2021-09-28 16:06:50 +00:00
progress.py progress: optimize progress bar updates a bit 2022-04-19 23:50:48 +00:00
project.py project: initialize new manifests in temp dirs 2022-08-22 19:34:46 +00:00
README.md README: use new bug template 2020-02-26 23:20:43 +00:00
repo init: change --depth default to 1 for manifest repo 2022-08-18 19:12:21 +00:00
repo_trace.py strip python2-only coding:utf-8 & print_function settings 2021-01-06 18:53:05 +00:00
requirements.json Drop support for Python 3.5 2021-06-03 11:34:17 +00:00
run_tests run_tests: fix pytest selection inside tox venv 2021-06-03 15:27:51 +00:00
setup.py Drop support for Python 3.5 2021-06-03 11:34:17 +00:00
ssh.py ssh: handle FileNotFoundError errors 2021-10-26 16:18:45 +00:00
SUBMITTING_PATCHES.md SUBMITTING_PATCHES: link to commit message style docs 2021-11-15 01:39:16 +00:00
tox.ini Drop support for Python 3.5 2021-06-03 11:34:17 +00:00
wrapper.py strip python2-only coding:utf-8 & print_function settings 2021-01-06 18:53:05 +00:00

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