Source Control

Mayan EDMS source is controlled with Git.

The project is publicly accessible, hosted and can be cloned from GitLab using:

$ git clone https://gitlab.com/mayan-edms/mayan-edms.git

Git branch structure

Mayan EDMS follows a simplified model layout based on Vincent Driessen’s Successful Git Branching Model blog post.

/versions/micro

Working branch for the next bugfix release. Micro increment (third digit). Only bug fixes, minor features, back-ported urgent features. This branch is stable and safe for production.

/versions/minor

Working branch for the next minor release (second digit). New features, occasional breakage. Not for production but should run in test environment most of the time. This is the branch you will want to try out if you want to check out new features.

/versions/major

Working branch for the next major release (first digit). New features, incompatible changes to the user facing interfaces. Broken most of the time, not for production and should only be cloned by developers with experience with Mayan’s development.

master

Current production release (3.4.17). Points to the latest version of the latest series. Production quality code.

features/

Working branches for unfinished and unmerged feature. Likely unstable, don’t use in production. Once the feature is complete, it is merged into one of the versions branches and deleted.

Special branches:

releases/all

Pushing code to this branch will trigger the build and release a new Docker image, Documentation and Python package.

releases/docker

Pushing code to this branch will trigger the build and release of a new Docker image to Docker Hub.

releases/documentation

Pushing code to this branch will trigger the build and release of new documentation.

releases/python

Pushing code to this branch will trigger the build and release of a new Python package to PyPI.

nightly

Pushing code to this branch will trigger the build and release of a new Docker image based on development code to the GitLab image repository only. The image will not be published to Docker Hub.

Each release is tagged separately using annotated Git tags.

When submitting patches, please place your code in its own feature/ branch prior to opening a Merge Request on https://gitlab.com/mayan-edms/mayan-edms/issues/.

Commit messages

  1. Use English as the language for the commit messages.

  2. Provide a subject line composed of a tag and a short explanation:

    Indexing: Add document base property reindex
    
  3. Keep the subject line to 50 or less characters.

  4. Capitalize the subject line.

  5. Don’t end the subject line with a period, leave like a phrase in English.

  6. Use active voice in the. Say what the commit will do when applied not what you did:

    Add new properties to the model.
    

    Vs.

    Added new properties to the model.
    
  7. Limit the body of the commit to 72 characters.

  8. When a commit fixes or improves an issue add the issue number in the commit message. Either in the subject or in the body.

  9. Sign commit messages.

  10. Use explicit language even for minor commits. Don’t do:

    Fix typo
    

    Use:

    Document: Fix typo in label description