Go to file
Mike Frysinger 56ce3468b4 assume environment always accepts strings
Different Python & OS versions have different environ behavior wrt
accepted types & encoding.  Since we're migrating to be Python 3 only,
lets change our code to assume strings always work as that's what the
newer Python 3 does.  This will fail under Python 2 for some env vars,
mostly on Windows, but the effort of maintaining shim layers that can
handle these edge cases isn't worth it when we're dropping that code.

We leave the logic in the `repo` launcher for now as it is simple, and
we want it to be able to switch versions a bit longer than the rest of
the tree.

Here's the support table:
          |    *NIX      |         Windows           |
 Python 2 | ASCII string | str or bytes, not unicode |
 Python 3 | str or bytes | str only                  |

Windows uses strings natively in its environment all the time.  But it
doesn't allow unicode strings under Python 2, so we have to encode.

Python 2 on *NIX is funky in that it always lowers to ASCII, so we had
to manually encode to avoid errors regardless of unicode or str.

Python 3 on Windows & *NIX will accept strings.  *NIX will also accept
bytes but Windows will not.

Bug: https://crbug.com/gerrit/12145
Change-Id: I3cf8f95a06902754ea1f08ad4b28503f7063531b
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/248972
Tested-by: Mike Frysinger <vapier@google.com>
Reviewed-by: Michael Mortensen <mmortensen@google.com>
Reviewed-by: Mike Frysinger <vapier@google.com>
2020-02-19 18:03:46 +00:00
.github/workflows github: enable github actions for postsubmit testing 2020-02-16 05:12:33 +00:00
docs upload: add support for setting hashtags 2020-02-19 08:31:18 +00:00
hooks Update commit-msg hook to version from Gerrit 3.1.3 2020-02-17 03:57:19 +00:00
subcmds assume environment always accepts strings 2020-02-19 18:03:46 +00:00
tests repo: rework parser setup to handle init -c 2020-02-14 05:52:17 +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 PyCharm project directory into the .gitignore 2020-01-24 23:09:49 +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 Fix blank line issues reported by flake8 2020-02-12 06:36:40 +00:00
command.py command: add a repo help tip to --help output 2020-02-19 08:23:04 +00:00
editor.py Fix blank line issues reported by flake8 2020-02-12 06:36:40 +00:00
error.py Fix blank line issues reported by flake8 2020-02-12 06:36:40 +00:00
event_log.py Fix blank line issues reported by flake8 2020-02-12 06:36:40 +00:00
git_command.py assume environment always accepts strings 2020-02-19 18:03:46 +00:00
git_config.py resort a few module imports to follow PEP8 2020-02-18 06:28:12 +00:00
git_refs.py Fix various whitespace issues reported by pyflakes 2020-02-12 06:00:16 +00:00
git_ssh add license header to a few more files 2019-06-13 13:23:19 -04:00
gitc_utils.py Fix blank line issues reported by flake8 2020-02-12 06:36:40 +00:00
LICENSE setup.py: add basic packaging files 2019-12-02 04:23:31 +00:00
main.py main: fix pager logic after negation cleanup 2020-02-19 08:00:11 +00:00
manifest_xml.py Fix blank line issues reported by flake8 2020-02-12 06:36:40 +00:00
MANIFEST.in setup.py: add basic packaging files 2019-12-02 04:23:31 +00:00
pager.py pyflakes: Fix remaining "E501 line too long" warnings 2020-02-13 04:54:10 +00:00
platform_utils_win32.py flake8: Suppress "F821 undefined name" inline for Python 2 names 2020-02-15 04:45:16 +00:00
platform_utils.py platform_utils: have Windows select stream return "" at EOF 2020-02-18 19:06:02 +00:00
progress.py Fix blank line issues reported by flake8 2020-02-12 06:36:40 +00:00
project.py upload: add support for standard --dry-run 2020-02-19 08:32:12 +00:00
pyversion.py Fix blank line issues reported by flake8 2020-02-12 06:36:40 +00:00
README.md github: enable github actions for postsubmit testing 2020-02-16 05:12:33 +00:00
repo avoid negative variables 2020-02-19 00:24:43 +00:00
repo_trace.py Fix blank line issues reported by flake8 2020-02-12 06:36:40 +00:00
run_tests tox: get tests passing a bit on Windows 2020-02-15 23:25:25 +00:00
setup.py find python via env 2020-02-09 04:02:45 +00:00
SUBMITTING_PATCHES.md Reword the documentation regarding coding style 2020-02-15 23:18:50 +00:00
tox.ini github: enable github actions for postsubmit testing 2020-02-16 05:12:33 +00:00
wrapper.py Fix blank line issues reported by flake8 2020-02-12 06:36:40 +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