fetch-and-push-remote: Extend sync parameters

* --source-fetch-all: Sync with `--current-branch` seems to be not
  always optimal when reusing one workspace for syncing different source
  trees. Allow fetching everything instead, it's expensive once but
  should speed up later sync jobs.
* --fetch-target-before-push: When pushing refs that are not known to
  the target Gerrit, but actually share significant history with other
  refs, then it fetching first speeds up the push a lot. On server side,
  pushing is much more expensive than fetching, and we don't want to
  block our shared Gerrits unnecessarily.

Change-Id: I9af3db2cd10a4dfd5027851d0346b02034b187b9
1 file changed
tree: 813ea8e9eb740b0e0bc1be58308e3e9dc34d445a
  1. android-maestro/
  2. bin/
  3. bullseye/
  4. gdrive_client/
  5. jira/
  6. lava/
  7. python-libs/
  8. shell-libs/
  9. .gitignore
  10. LICENSE
  11. NOTICE
  12. pylintrc
  13. pyproject.toml
  14. README.md
  15. requirements-dev.txt
  16. tox.ini
  17. vendorsetup.sh
README.md

Fairphone Android tools

A collection of tools developed at Fairphone related to Android development:

  • Standalone scripts live in bin.
  • Installable libraries live in their own directory within <language>-libs:
    • python-libs/android-tools: A support library to work with Android devices and apps in Python 3.
    • shell-libs: A collection of shell scripts for handling common shell commands and operations.
  • Installable tools live in their own directory:
    • bullseye: Script to check and apply security patches from Android Security Bulletins.
    • gdrive-client: Minimal Google Drive client for uploading files via service accounts.
    • lava: tools to interact with LAVA, the automated testing system.
    • jira: Script to import CSV defined configuration into the Fairphone JIRA instance. The script can create users, groups and components. Run ./import_csv_to_jira.py --help for details.

See the individual tools help (--help) or projects README for installation and usage.

Developing

Code style, linters, and formatters must be used before submitting any new tool or patchset. Maximal line lengths are fixed to 80 characters.

Install the selected toolset within a Python 3.8 or newer (virtual) environment:

virtualenv -p python3 .venv/fp-tools
. .venv/fp-tools/bin/activate
pip install -r requirements-dev.txt

We detail below the recommendations (read: requirements) per language and how to run the tools in a standalone fashion.

Bash/Shell (.sh)

Note: Portable shell scripts are favoured over Bash scripts.

Follow what the Bashate style checker recommends.

bashate --verbose <file>

Python (.py)

Note: Python 3.8 is the current development choice.

Let Black format Python files for you.

black <file>

Trust that the linting tools (flake8 and pylint) know better and follow their advice.

flake8 <file>
pylint <file>

Additionally, run mypy for validating type hinting. However, this does not fit in all contexts and mypy has limitations in specific situations. Consider using type hints unless it is too hard of a burden. If using type hints, also consider using mypy's strict mode. It provides extra checks, including calls from typed contexts to untyped ones etc.

mypy [--strict] <file>

License

The project is made available under the terms of the Apache 2.0 license. See LICENSE for details.