Source Management Conventions

In order to be available in Scibian packages repositories, all source packages must be maintained into Git repositories hosted in the GitHub Scibian organization.

All source packages Git repositories are maintained using the git-buildpackage utility.

Branches

As an extension of git-buildpackage default conventions, the branches of the source packages Git repositories must respect the following naming conventions, depending on the package type.

Scibian specific native packages

  • master: code and packaging for last Scibian release.
  • scibian/$release (optional): code and packaging for previous Scibian releases (ex: scibian/8).

Debian native packages modified in Scibian

  • master: imported version of the code and packaging from Debian (basis for packages in the latest Scibian release).
  • debian/$codename (optional): code and packaging from specific Debian releases (ex: debian/stretch) if required by previous Scibian releases.
  • scibian/master: code and packaging for last Scibian release.
  • scibian/$release (optional): code and packaging for previous Scibian releases (ex: scibian/8).

The master and debian/* branches must be populated using gbp import-dsc. These branches are not supposed to contain the full history of commits from the Debian maintainers.

Scibian specific quilt package

  • upstream : imported version of the code as released by upstream developers.
  • pristine-tar: binary delta file for pristine upstream tarballs.
  • scibian/master: code and packaging for last Scibian release.
  • scibian/$release (optional): code and packaging for previous Scibian releases (ex: scibian/8).

There is no master branch in this context. The default branch in GitHub repository settings must be set to scibian/master.

The upstream branch must be populated using gbp import-orig. This branch is not supposed to contain the full history of commits from the upstream developers.

Debian quilt package modified in Scibian

  • upstream: imported version of the code as released by upstream developers.
  • pristine-tar: binary delta file for pristine upstream tarballs.
  • master: imported version of the code and packaging from Debian (basis for packages in the latest Scibian release).
  • debian/$codename (optional): code and packaging from specific Debian releases (ex: debian/stretch) if required by previous Scibian releases.
  • scibian/master: code and packaging for last Scibian release.
  • scibian/$release (optional): code and packaging for previous Scibian releases (ex: scibian/8).

The upstream, master and debian/* branches must be populated using gbp import-dsc. These branches are not supposed to contain the full history of commits from the Debian maintainers.

General notes

All debian/* et scibian/* branches of the Git repositories must be buildable using pbuilder (or similar). Otherwise, it must considered as a bug.

The debian/* may appear only if the packages of a previous Scibian release relies on Debian packages derived from the list of packages imported in the master branch. The diagram illustrates the case when a debian/* branch is required:

Debian branches use-case

If the packages of all the Scibian releases are based on Debian packages successively imported in the master branch, there is no reason to have a debian/* branch (case A). However, if a previous release of Scibian requires a new Debian package derived of the master branch (eg. in case B, Scibian 8 requires Debian package 1.1-1 after 2.0-1 has been imported in master branch for Scibian 9), a specific debian/* branch must be created to hold that specific Debian version of the package.

Tags

As an extension of git-buildpackage default conventions, the tags of the source packages releases in the Git repositories must respect the following naming conventions:

  • upstream/$version: for upstream release (ex: upstream/1.2.3)
  • debian/$version: for Debian releases (ex: debian/1.2.3-1)
  • scibian/$version: for Scibian releases (ex: scibian/1.2.3-1, scibian/10-0sci9u2, scibian/4.3-3_bpo8+1sci8u1)

For native packages, there is no upstream/* tags.

To create the Scibian releases tag using git-buildpackage, run the following command:

gbp buildpackage --git-tag-only \ --git-debian-tag='scibian/%(version)s' \ --git-debian-tag-msg='%(pkg)s Scibian release %(version)s'