wrap all apt-get calls with script which retries in case of known error conditions
Fix format string in binarydeb_job.py: Operator '+' has lower precedence than '%'.
Add a link to the forked rosdistro version to README.md.
Refactor release_job.py by introducing BuildTarget and OSTarget.
Start to refactor configure_release_job by introducing JobValidationError.
Refactor release_job.py.
Fix build_configuration.py: Use type hinting in docstring instead of function annotation.

We cannot use type annotations in these cases because the names of the
containing class, or later classes in the same file, are not defined
at the point in time when the function annotation is evaluated.
Also use docstring instead of function annotation for "generic" types.

According to https://mail.python.org/pipermail/python-ideas/2014-August/028618.html,
using function annotations for this might become possible in the future, though.
Also use docstring instead of function annotation to remove import clutter.
Replace all hardcoded references to https://github.com/ros-infrastructure/ros_buildfarm.git with the appropriate variables.
Use a workaround for get_repository_url when git is not installed.
More idiomatic Python: Use getattr instead of type(..) is ... in ReleaseBuildConfiguration.get_target_configuration().
Refactor devel_job.py to use docstrings instead of comments.
Implement OSTarget using collections.namedtuple().
Implement OSArchTarget using collections.namedtuple().
Make the attempt_timestamp argument optional for BuildConfiguration.from_args.
Refactor devel_job.py to use BuildConfiguration.