Repository Maintainers

Overview

This document is for maintainers of the Autonomy repository infrastructure.

GitHub settings

Settings that are not specified remain at the default.

General

Name

The repository name is in lowercase, separated by dashes.

Example: computer-vision-python

Default branch

The default branch of the repository is main .

Pull requests

Merging:

  • Allow merge commits: Unchecked

  • Allow squash merging: Checked

  • Allow rebase merging: Unchecked

Automatically delete head branches: Checked.

Branches

Branch protection rules

main is protected with the following rule:

  • Branch name pattern: main

  • Require a pull request before merging: Checked

  • Required number of approvals before merging: 1

Contents

Required files within the repository.

The file name must have the markdown extension.

# The Repository Name With Capitalization And Normal Spacing Short description with proper grammar and punctuation. Follow the [instructions](shortlink to the Confluence document for the repository).

Example:

# Computer Vision Python A new computer vision system written in Python. Follow the [instructions](https://uwarg-docs.atlassian.net/l/cp/3G39FAKw).

Additionally, the About section in the top right matches the short description in README.md exactly.

The licence is the permissions under which others can use WARG code. See TODO DOCUMENT for licencing.

Languages

Python

GitHub Actions to run Pytest are required for repositories containing Pytest unit tests.

Example:

# This workflow will install Python dependencies and run tests with PyTest using Python 3.8 # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions name: Run tests on: push: branches: [main] pull_request: branches: [main] jobs: build: runs-on: ubuntu-latest steps: # Checkout repository - uses: actions/checkout@v3 # Set Python version - name: Set up Python 3.8 uses: actions/setup-python@v4 with: python-version: 3.8 # Set up submodules and submodule dependencies - name: Set up submodule and submodule dependencies run: | git submodule update --init --recursive --remote pip install -r ./modules/common/requirements.txt # Install computer-vision-python dependencies - name: Install project dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt # Run tests with PyTest - name: Run tests run: pytest -vv

Gitignore excludes irrelevant files from the repository.

The minimum exclusion is:

Additional gitignore settings are added at the end of the file, with a comment for the reason, similar to the defaults above.

This file contains Pytest settings.

The settings are set so that Pytest ignores tests in submodules.

Example:

No other Pytest settings are to be used.

Flutter

TODO

Submodules

The command for updating submodules is: git submodule update --remote --merge --recursive

  • --remote : Basically git fetch in the submodule

  • --merge : Basically git merge in the submodule

  • --recursive : Check if that submodule has even more submodules it depends on

Note: git pull is git fetch followed by git merge , so this command is the same as running git pull in the submodule.

Confluence

Each repository contains its own Confluence document under: Repository instructions

This document contains sections for setup, development, and usage, and is specific to the repository (e.g. environment, hardware). Any general instructions that can be applied to all repositories go in here: Autonomy Workflow Software