Skip to content
c8y3 edited this page Mar 20, 2021 · 27 revisions

Welcome to the aum wiki!

Development practices

Signatures

All commits should be signed and will be rejected otherwise. See https://docs.github.com/en/github/authenticating-to-github/managing-commit-signature-verification to set up signing. Quickly, this amounts to:

Branch Model

We follow a simple branch model:

  • master
  • one branch per feature ongoing development

Branch master should be linear. A feature branch should be named issueXXX where XXX is the number of the issue being resolved. When a feature is complete, the branch is rebased with master and then linearly merged into master.

Operations

  • create branch issueXXX from master.
git checkout -b issueXXX
git push --set-upstream origin issueXXX
  • Before merging back to master:
    • do not forget to fill the change log (CHANGELOG.md)
    • rebase the branch, if necessary
    git rebase master
  • merge back to master. Once feature XXX is complete its branch is merged in master and deleted.
git checkout master
git merge issueXXX
git push
git push -d origin issueXXX
git branch -d issueXXX
  • publish a version with a tag. Once a release is complete on master, it is published by the creation of a tag. The version number M.m.p should match variable VERSION in the Makefile. Do not forget to bump if necessary.
git tag -s M.m.p -m "Release M.m.p"
git push origin --tags

Continuous integration with travis

In order to perform a draft release, have these lines in the .travis.yml file:

    draft: true
    on:
        branch: issueXXX
        repo: airbus-cyber/aum

Coding rules

File layout:

  • includes
    • external includes (standard library, external dependencies)
    • internal includes
    • public interfaces includes
  • type definitions
  • private methods (static)
  • public methods

References

See https://gist.github.com/chalasr/fd195d83a0a01e4291a8, for a similar yet slightly different model.