Go to file
Mike Frysinger ed4f2113d2 project: make syncing a little more self-healing
We have a few files that we optionally symlink from the work tree
.git/ to the .repo/projects/ path.  If they don't exist when we
first initialize, then we skip creating symlinks.  If the files
are created later on under the work tree .git/, repo gets upset.

This can happen with the packed-refs file: if we don't have any
packed refs initially, we don't symlink it.  But if git tries to
pack refs later on and creates the file, the project gets wedged.

We could create an empty file initially and then symlink it, but
for some files, it's not clear we want to always do that (e.g.
the .git/shallow setting).  Instead, lets make handling of these
paths more dynamic.  If they show up later on in the work tree
.git/ only, we'll take care of relocating & symlinking.  This
also makes repo a little more robust and autorecovers incase a
path goes missing in one of the dirs.

Ideally we wouldn't monkey around at all here, but considering
the only option we give to users currently is to blow things
away with --force-sync, this seems a bit better.

Bug: https://crbug.com/gerrit/12324
Change-Id: Ia6960f1896ac6d890c762d7d053684a1c6ab2c87
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254632
Reviewed-by: David Pursehouse <dpursehouse@collab.net>
Tested-by: Mike Frysinger <vapier@google.com>
2020-02-12 04:48:36 +00:00
docs docs: document git/python/Ubuntu/Debian release schedules 2020-02-12 00:27:59 +00:00
hooks hooks/pre-auto-gc-battery: allow gc to run on non-laptops 2018-07-11 13:45:58 -07:00
subcmds info: Fix formatting of block comment 2020-02-12 04:31:40 +00:00
tests test_project.py: Remove unused variable in 'with' statement 2020-02-12 02:56:32 +00:00
.flake8 Replace pylint with pyflakes/flake8 2016-09-14 09:49:02 +02:00
.gitattributes Adds additional crlf clobber avoidance. 2016-06-22 08:36:45 +00:00
.gitignore Add PyCharm project directory into the .gitignore 2020-01-24 23:09:49 +00:00
.mailmap Update .mailmap 2017-05-26 21:44:57 +09: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 set default file encoding to utf-8 2019-06-13 14:30:52 +00:00
command.py command: filter projects by active manifest groups 2019-10-08 20:15:08 +00:00
editor.py upload/editor: fix bytes/string confusion 2019-11-16 23:55:30 +00:00
error.py manifest: add basic path checks for <copyfile> & <linkfile> 2020-02-04 20:34:01 +00:00
event_log.py set default file encoding to utf-8 2019-06-13 14:30:52 +00:00
git_command.py repo: lower min version of git a bit 2020-02-12 00:28:03 +00:00
git_config.py git_config: fix encoding handling in GetUrlCookieFile 2020-02-08 06:26:36 +00:00
git_refs.py use open context managers in more places 2019-11-12 03:44:39 +00:00
git_ssh add license header to a few more files 2019-06-13 13:23:19 -04:00
gitc_utils.py set default file encoding to utf-8 2019-06-13 14:30:52 +00:00
LICENSE setup.py: add basic packaging files 2019-12-02 04:23:31 +00:00
main.py main: rework launcher version checking 2020-02-10 23:20:55 +00:00
manifest_xml.py Remove trailing blank lines 2020-02-12 02:58:17 +00:00
MANIFEST.in setup.py: add basic packaging files 2019-12-02 04:23:31 +00:00
pager.py remove spurious +x bits 2020-02-09 23:24:03 +00:00
platform_utils_win32.py [Win32] Make platform_utils compatible for Python3 2020-02-06 14:29:15 +00:00
platform_utils.py Revert "Port _FileDescriptorStreamsNonBlocking to use poll()" 2020-02-03 23:01:07 +00:00
progress.py sync: merge project updates with status bar 2019-11-12 23:33:51 +00:00
project.py project: make syncing a little more self-healing 2020-02-12 04:48:36 +00:00
pyversion.py set default file encoding to utf-8 2019-06-13 14:30:52 +00:00
README.md docs: add Windows support info 2019-12-05 01:02:08 +00:00
repo repo: lower min version of git a bit 2020-02-12 00:28:03 +00:00
repo_trace.py rename local trace module 2019-08-27 07:08:52 +00:00
run_tests find python via env 2020-02-09 04:02:45 +00:00
setup.py find python via env 2020-02-09 04:02:45 +00:00
SUBMITTING_PATCHES.md tox: add & document tox usage 2019-12-02 04:24:23 +00:00
tox.ini tox: add & document tox usage 2019-12-02 04:24:23 +00:00
wrapper.py wrapper: Fix indentation level 2019-07-31 08:38:19 +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.

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