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.

/series/X.x

Unique branch for a specific series. The latest series is merged into master on each new release.

master

Current production release (4.8.2). 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