summaryrefslogtreecommitdiffstats
path: root/repo
Commit message (Collapse)AuthorAgeFilesLines
...
* repo: add trace support to the launcherMike Frysinger2020-02-131-0/+24
| | | | | | | | | | Now that we have a central run_command point, we can easily add tracing support to the launcher script. Change-Id: I9e0335c196cafd6263ff501925abfe835f036c5e Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254755 Tested-by: Mike Frysinger <vapier@google.com> Reviewed-by: David Pursehouse <dpursehouse@collab.net>
* repo: add some helpers akin to subprocess.runMike Frysinger2020-02-131-138/+104
| | | | | | | | | | | We can't rely on subprocess.run yet as that requires Python 3.6, but we can clean up the code we have with some ad-hoc replacement. This unifies all the inconsistent subprocess.Popen usage we have. Change-Id: I56af40a3df988ee47b299105d692ff419d07ad6b Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254754 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
* repo: Remove duplicate import of 'os'David Pursehouse2020-02-131-1/+0
| | | | | | | Change-Id: I9874a5deacdb6a8ce98a8a383326a5b41b1518df Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254697 Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: David Pursehouse <dpursehouse@collab.net>
* repo: Remove another usage of bare 'except'David Pursehouse2020-02-131-1/+1
| | | | | | | Change-Id: I9195b40f5af7cbf74b47376a4708de82495f8fba Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254696 Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: David Pursehouse <dpursehouse@collab.net>
* repo: Remove unused variable in 'except'David Pursehouse2020-02-131-1/+1
| | | | | | | Change-Id: I90f89ed6638a3d2a9e665ebbedef5dd7902f5429 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254695 Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: David Pursehouse <dpursehouse@collab.net>
* repo: Fix blank line issues reported by flake8David Pursehouse2020-02-131-0/+3
| | | | | | | Change-Id: I62633e71a36b2acbd09e205447a02159dd334896 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254694 Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: David Pursehouse <dpursehouse@collab.net>
* repo: bump launcher version for accumulated fixesv2.3Mike Frysinger2020-02-121-1/+1
| | | | | | | Change-Id: I5d9b866cc53d3824a01f5f0af127cf0c3ff97366 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254757 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
* repo: avoid bare excepts to allow SystemExit to bubbleMike Frysinger2020-02-121-1/+1
| | | | | | | | Bug: https://crbug.com/gerrit/12327 Change-Id: I4ce1142379b111f9ba3a2e5a437026e5c0378a9e Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254756 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
* repo: add --version support to the launcherMike Frysinger2020-02-121-1/+15
| | | | | | | | | | | We can get version info when in a checkout, but it'd be helpful to show that info at all times. Change-Id: Ieeb44a503c9d7d8c487db4810bdcf3d5f6656c82 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254712 Reviewed-by: Michael Mortensen <mmortensen@google.com> Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: Mike Frysinger <vapier@google.com>
* repo: export GIT_TRACE2_PARENT_SIDMike Frysinger2020-02-121-8/+39
| | | | | | | | | | | | | This helps with people tracing repo/git execution. We use a similar format to git, but a little simpler since we always initialize the env var setting, and we want to avoid too much overhead. Bug: https://crbug.com/gerrit/12314 Change-Id: I75675b6cc4c6f7c4f5e09f54128eba9456364d04 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254331 Reviewed-by: Josh Steadmon <steadmon@google.com> Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: Mike Frysinger <vapier@google.com>
* repo: move parser init out of module scopeMike Frysinger2020-02-121-82/+68
| | | | | | | | | | | We import the wrapper on the fly, so minimize how much code we run in module scope. It's pointless/wasted when importing. Change-Id: I4a71c2030325d0a639585671cd7ebe8f22687ecd Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254072 Tested-by: Mike Frysinger <vapier@google.com> Reviewed-by: David Pursehouse <dpursehouse@collab.net> Reviewed-by: Mike Frysinger <vapier@google.com>
* repo: lower min version of git a bitMike Frysinger2020-02-121-1/+6
| | | | | | | | | | | | | | | | | | | | | | We were perhaps a bit too hasty to jump to git-2.10. Existing LTS releases of Ubuntu are quite old still: Trusty has 1.9 while Xenial has 2.5. While we plan on dropping support for those eventually as we migrate to Python 3.6, we don't need to be so strict just yet on the git versions. We also want to disconnect the version the repo launcher requires from the version the rest of the source tree requires. The repo launcher doesn't need as many features, and being flexible there allows us more freedom to upgrade & rollback as needed. So we'll allow git-1.7 again, but start warning on any users older than git-1.9. This aligns better with existing LTS releases, and gives users a chance to start upgrading before we cut them off. Change-Id: I140305dd8e42c9719c84e2aee0dc6a5c5b18da25 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254573 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
* repo: allow REPO_REV to be an env varMike Frysinger2020-02-091-3/+5
| | | | | | | | | | We do this for REPO_URL already. Bug: https://crbug.com/gerrit/10233 Change-Id: I53410645474b00d900467c96fa5d8446f3a607d3 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/253552 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
* repo: try to reexec self with Python 3 as neededMike Frysinger2020-02-051-24/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We want to start warning about Python 2 usage, but we can't do it simply because the shebang is /usr/bin/python which might be an old version like python2.7. We can't change the shebang because program name usage is spotty at best: on some platforms (like macOS), it's not uncommon to not have a `python3` wrapper, only a major.minor one like `python3.6`. Using python3 wouldn't guarantee a new enough version of Python 3 anyways, and we don't want to require Python 3.6 exactly, just that minimum. So we check the current Python version. If it's older than the ver of Python 3 we want, we search for a `python3.X` version to run. If those don't work, we see if `python3` exists and is a new enough ver. If it's not, we die if the current Python 3 is too old, and we start issuing warnings if the current Python version is 2.7. This should allow the user to take a bit more action by installing Python 3 on their system without having to worry about changing /usr/bin/python. Once we require Python 3 completely, we can simplify this logic a bit by always bootstrapping up to Python 3 and failing with Python 2. We have a few KI with Windows atm though, so keep it disabled there until the fixes are merged. Bug: https://crbug.com/gerrit/10418 Change-Id: I5e157defc788e31efb3e21e93f53fabdc7d75a3c Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/253136 Tested-by: Mike Frysinger <vapier@google.com> Reviewed-by: Mike Frysinger <vapier@google.com>
* repo: raise min version of gitMike Frysinger2020-02-051-1/+1
| | | | | | | | | | | | The git-2.10 series was released in 2016. Since we're moving to require Python 3.6 which was also released in 2016, bumping up the git version seems reasonable. Also we don't really test any git versions close to as old as 1.7.2 which was released in 2010. Change-Id: Ib71b714de6cd0b7dd50d0b300b108a560ee27331 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/253134 Tested-by: Mike Frysinger <vapier@google.com> Reviewed-by: David Pursehouse <dpursehouse@collab.net>
* repo: drop old signing keyMike Frysinger2020-02-041-33/+1
| | | | | | | | | | | This hasn't been used in many years to sign a release, so drop it from the keyring to avoid confusing people. Bug: https://crbug.com/gerrit/12229 Change-Id: Ifca7eee713d167c11f32252975724e5858e4c007 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/253133 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
* repo: bump launcher version to 2.0Mike Frysinger2020-02-041-1/+1
| | | | | | | | | | | This reflects the transition to the new 2.x series which will be migrating to Python 3-only. Bug: https://crbug.com/gerrit/10418 Change-Id: I6355ac955d26b930f8a3721d3526eec5bed92400 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/253132 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
* repo: Do not even try to set up GPG with opt.no_repo_verifySebastian Schuberth2020-01-241-4/+7
| | | | | | | | | | | | | | In order to be able to use "--no-repo-verify" to work around an issue with gpg-agent and long socket paths (see e.g. [1]), this change avoids GPG being set up at all if that option is passed. [1] https://github.com/elastic/elasticsearch/issues/17053 Change-Id: I1e5cbd8be2dc0084f12afe0ca33c789fdbc6fef9 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/251108 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: Mike Frysinger <vapier@google.com>
* use open context managers in more placesMike Frysinger2019-11-121-3/+2
| | | | | | | | | | Use open() as a context manager to simplify the close logic and make the code easier to read & understand. This is also more Pythonic. Change-Id: I579d03cca86f99b2c6c6a1f557f6e5704e2515a7 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/244734 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
* repo: bump wrapper versionMike Frysinger2019-09-181-1/+1
| | | | | | | | | | We've rolled quite a number of fixes since the last update, including a lot of Python 3 improvements. Lets bump the wrapper version for it. Change-Id: I6c6c04c3c8241bf8e8bcf26603549ae4595fede8 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/237812 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
* repo: decode/encode all the subprocess streamsMike Frysinger2019-09-121-5/+6
| | | | | | | | | | | | | We use subprocess a lot in the wrapper, but we don't always read or write the streams directly. When we do, make sure we convert to/from bytes before trying to use the content. Change-Id: I318bcc8e7427998348e359f60c3b49e151ffbdae Reported-by: Michael Scott <mike@foundries.io> Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/236612 Reviewed-by: Michael Scott <mike@foundries.io> Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Michael Scott <mike@foundries.io>
* repo: fix unused variable usageMike Frysinger2019-09-111-1/+1
| | | | | | | | | | | The refactoring here left behind a variable reference that no longer exists. Clean it up. Bug: https://crbug.com/gerrit/11144 Change-Id: Ifdb7918b37864c48f3deef27c8bae3f793275d35 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/236613 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
* Add support for partial clone.v1.13.4Xin Li2019-07-161-0/+7
| | | | | | | | | | | | | A new option, --partial-clone is added to 'repo init' which tells repo to utilize git's partial clone functionality, which reduces disk and bandwidth usage when downloading by omitting blob downloads initially. Different from restricting clone-depth, the user will have full access to change history, etc., as the objects are downloaded on demand. Change-Id: I60326744875eac16521a007bd7d5481112a98749 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/229532 Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: Xin Li <delphij@google.com>
* repo/main: add module docstringsMike Frysinger2019-07-121-0/+7
| | | | | | | | | This should help people get some bearings in the codebase. Change-Id: I951238fe617a3ecb04a47ead3809ec72c8fbf5a1 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/231232 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
* repo: all ParseGitVersion to load git version info itselfMike Frysinger2019-07-111-4/+15
| | | | | | | | | | | | | All code that calls ParseGitVersion needs to run `git --version` itself and parse the output before passing it in. To avoid that duplication, allow ParseGitVersion to run `git --version` itself if ver_str=None. Bug: https://crbug.com/gerrit/11144 Change-Id: Ie07793ca57a40c0231af808df04a576118d5eea3 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/231054 Tested-by: Mike Frysinger <vapier@google.com> Reviewed-by: David Pursehouse <dpursehouse@collab.net>
* repo: return a namedtuple with full version infoMike Frysinger2019-07-111-2/+10
| | | | | | | | | | | | | | | We were returning an e.g. tuple(1,2,3), but that strips off the full version string which we might want in some places e.g. '1.2.3-rc3'. Change the return value to a namedtuple so we can pass back up the full version string. For code doing a compare with three elements (all code today), things still work fine as the namedtuple will DTRT in this scenario. Bug: https://crbug.com/gerrit/11144 Change-Id: Ib897b5df308116ad1550b0cf18f49afeb662423e Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/231053 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
* handle binary stream from urllib.request.urlopenMike Frysinger2019-07-041-1/+1
| | | | | | | | Python 3 returns bytes by default with urlopen. Adjust our code to handle that scenario and decode as necessary. Bug: https://crbug.com/gerrit/10418 Change-Id: Icf4cd80e7ef92d71a3eefbc6113f1ba11c32eebc
* repo: drop Python 3 warningMike Frysinger2019-06-131-4/+0
| | | | | | | Lets get people to start filing bugs :). Bug: https://crbug.com/gerrit/10418 Change-Id: I1d55bf0c60dbdbd6537d30b2cf9ea91d2928e387
* repo: restore use of print_functionMike Frysinger2019-06-131-89/+80
| | | | | | | | | | | We avoided this future import because Python 2.4 & 2.5 did not support it. We've dropped support for Python 2.6 at this point, and those versions are long dead. Since this workaround adds a bit of complexity to the codebase, drop it. Considering we are not running any actual tests against older versions, there's no sense in trying to support them anymore. Change-Id: Icda874861e8a8eb4fa07c624a9e7c5ee2a0da401
* set default file encoding to utf-8Mike Frysinger2019-06-131-0/+1
| | | | | | | | There's no reason to support any other encoding in these files. This only affects the files themselves and not streams they open. Bug: https://crbug.com/gerrit/10418 Change-Id: I053cb40cd3666ce5c8a0689b9dd938f24ca765bf
* repo: standardize help behaviorMike Frysinger2019-06-131-2/+2
| | | | | | | | | | Standard utilities exit normally/zero when users explicitly request --help, and they write to stdout. Exiting non-zero & using stderr is meant for incorrect tool usage instead. We're already doing this for `repo help <init|gitc-init>` calls, so lets fix `repo help` and `repo --help|-h` to match. Change-Id: Ia4f352b431c91eefef70dcafc11f00209ee69809
* init: Remove -c short option for --current-branchv1.13.1Ereth McKnight-MacNeil2018-12-201-2/+2
| | | | | | | This option conflicts with the gitc-init -c short option. Bug: https://crbug.com/gerrit/10200 Change-Id: I06f37564429ca0bd4c0bbea6066daae4f663c838
* Leverage the next keyword from python 2.7Eli Ribble2018-12-191-5/+8
| | | | | | | This is literally what the next keyword is for. https://www.python.org/dev/peps/pep-3114/ Change-Id: I843755910b847737b077ff2361ba3e04409db0f0
* Allow clobbering of existing tags from remote.v1.13.0Xin Li2018-12-101-1/+1
| | | | | Bug: 120778183 Change-Id: Id44e2b68abc410a3afd4e07a3c943b0936347e38
* init: --dissociate option to copy objects borrowed with --referenceNikolai Merinov2018-10-191-0/+3
| | | | | | | | | | | | | | | | | | | | | | "repo init --reference" has two purposes: to decrease bandwidth used at clone time, and to decrease disk usage afterward, by using the reference repositories as an alternate store of objects even after the clone. The downside is that it makes the borrowing repositories dependent on the reference repositories, so it is easy to end up with missing objects by mistake after a cleanup operation like "git gc". To prevent that, v2.3.0-rc0~30^2 (clone: --dissociate option to mark that reference is only temporary, 2014-10-14), "git clone" gained a --dissociate option that makes --reference reuse objects from the reference repository at clone time but copy them over instead of using the reference as an alternate. This is more straightforward to use than plain --reference, at the cost of higher disk usage. Introduce a --dissociate to "repo init" that brings the same benefits to repo. The option is simply passed on to "git clone". Change-Id: Ib50a549eb71e0a2b3e234aea57537923962a80d4
* Remove unused pylint suppressionsDavid Pursehouse2018-07-241-1/+1
| | | | | | | | | | | pylint is not used since bb5b1a0. The pyflakes cleanup mentioned in that commit has not been done, but given that this project is no longer being actively developed I don't think it's worth spending time doing it. Leaving the pylint suppressions causes confusion because it leads people to think that we are still using pylint. Change-Id: If7d9f280a0f408c780f15915ffdb80579ae21f69
* Merge "Flush stderr on Windows"Sebastian Schuberth2018-07-131-0/+4
|\
| * Flush stderr on WindowsSebastian Schuberth2018-07-131-0/+4
| | | | | | | | | | | | | | | | While on Linux stderr is unbuffered, it is buffered on Windows. Always flush stderr on Windows to ensure any error messages appear in the right order to ease diagnosing. Change-Id: I37300e384ecd3a51a321a48818f0114d6f3357a0
* | Fix the initial existence check for "repo"Sebastian Schuberth2018-07-131-4/+5
|/ | | | | | | | | | | | | | | | | | | Commit 27226e742d7e1a3d371531c19a3fdd91a4f9ab4a introduced a warning if "repo" is not part of the bootstrapped REPO_URL. However, that check was done too early, directly after the call to _Clone. As the _Clone function does not actually clone but it only initializes and fetches, the check needs to be moved to after the call to _Checkout. To reproduce, call repo init --no-clone-bundle --repo-branch=master -u https://android.googlesource.com/platform/manifest which will currently always show the (bogus) warning message. With this fix, the warning will only be shown if "repo" indeed does not exist. While at it, also slightly improve the code by using os.path.join(). Change-Id: Ied89e24231addabab6075005065748df1ffa74c4
* Ensure repo waits for child process to terminateRenaud Paquay2017-05-291-1/+5
| | | | | | | | | | See http://stackoverflow.com/questions/7004687/os-exec-on-windows: execv on Windows does not behave as on Linux, i.e. a new process is spawned and the parent process terminates right away, which makes the shell prompt come back too soon. Change-Id: I1f8d23208765988629f081e9b949c67cf71c08ae
* init: add --submodules to sync manifest submodulesMartin Kelly2017-05-231-0/+3
| | | | | | | | | | | | | | | | repo sync can sync submodules via the --fetch-submodules option. However, if the manifest repo has submodules, those will not be synced. Having submodules in the manifest repo -- while not commonly done -- can be useful for inheriting a manifest from another project using <include> and layering changes on top of it. In this way, you can avoid having to deal with merge conflicts between your own manifests and the other project's manifests (for example, if you're managing an Android fork). Add a --submodule option to init that automatically syncs the submodules in the manifest repo whenever the manifest repo changes. Change-Id: I45d34f04517774c1462d7f233f482d1d81a332a8 Signed-off-by: Martin Kelly <mkelly@xevo.com>
* init: Add no-tags and current branch optionsNaseer Ahmed2016-12-011-1/+7
| | | | | | This avoids fetching tags and branches for huge manifests Change-Id: I19c9724d75364440b881b297d42b906f541f73ff
* Merge "Add a check and more output to protect against invalid REPO_URLs"David Pursehouse2016-10-291-1/+8
|\
| * Add a check and more output to protect against invalid REPO_URLsSebastian Schuberth2016-10-281-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you don't know that the url to git-repo itself can be overridden via REPO_URL, it's hard to debug cases where REPO_URL is accidentally set to another repository, e.g. inside a Jenkins CI job. What makes is even harder is that the ".repo/repo" directory gets silently removed in such cases as verifications fails, which makes it impossible to look at the cloned files to understand the problem. To better protect against such an issue, warn if the cloned git-repo repository does not contain a top-level "repo" file, and state that the ".repo/repo" directory will be removed in case of a clone failure. Change-Id: I697b4999205a5967910c0237772ccaada01e74d4
* | repo: add comment for updating maintainer keysMike Frysinger2016-09-141-0/+3
|/ | | | Change-Id: Ic1e7557f9597234033561ab9fb3104b87e30015e
* Increment the wrapper versionDavid Pursehouse2016-08-171-1/+1
| | | | | | | | | | | | | | There have been a number of changes in the repo wrapper since the last increment that was done in fee390ee: - 9711a98 init: Add --no-clone-bundle option - 631d0ec Support non-ASCII GNUPGHOME environment variable - 4088eb4 repo: Cleaned up pylint/pep8 violations - 5553628 repo: Add check of REPO_URL env variable - 745b4ad Fix gitc-init behavior - d3ddcdb Ignore clone.bundle on HTTP 501, i.e. Not Implemented Change-Id: I3f763ef0ec2df2d726dff429021b48ad474148f1
* init: Add --no-clone-bundle optionHu xiuyun2016-08-151-3/+6
| | | | | Bug: Issue 218 Change-Id: I42ba1f5fb9168875da0df6bdf4fe44c8d6498d54
* Support non-ASCII GNUPGHOME environment variableDāvis Mosāns2016-07-161-2/+8
| | | | | | | Here we don't need to encode this gpg_dir string when using Python 2.7 on Linux. Change-Id: I56724e9511d3b1aea61535e654a45c212130630d
* Merge "Ignore clone.bundle on HTTP 501, i.e. Not Implemented"David Pursehouse2016-04-051-1/+1
|\
| * Ignore clone.bundle on HTTP 501, i.e. Not ImplementedJohn Törnblom2015-08-121-1/+1
| | | | | | | | Change-Id: I03ee003d3bd5d0684a31bdf7961a55a511dfa0e2