DeveloperWiki:GitMigration

From ArchWiki
Jump to navigation Jump to search


Summary

The goal is to move away from using svn internally to manage PKGBUILDs to using git. This enables developers to use tools they are more familiare with and facilitate future outside contributions.

Owner

Current status

  • First meeting help 17th of September 2018
    • Project leaders decided

Description

Git repository layout

The proposal is to have one repository for each package. This enables packagers to decide on their own workflow, like having a branch for testing and proposed changes or rework of packages. Managing one repository with 10,000 sub directories would leave developers with less options and create a somewhat large repository (See homebrew, void linux or gentoo).

On the server this would be maintained inside one directory, and ACL would be applied to keep permissions consistent between packager roles.

/srv/git/repos/*.git

Tagging is required on the repository, and most likely enforced to a format that resembles the package format. This helps us keep track of changes, and

${epoch}:${pkgver}-${pkgrel}

dbscripts would maintain a separate git repository responsible for keeping track of the package version between releases. Each pkgbase is represented as a file denoting the package version. This repository is tagged with an incremental value in the same fashion as todays SVN repository.

dbscripts
└── x86_64
    ├── community
    │   └── ...
    ├── core
    │   ├── bash
    │   ├── linux
    │   └── vim
    └── extra
        └── ...
/srv/dbscripts/x86_64/core/bash
bash 4.4.023-1

dbscripts

The proposal is to move *pkg to dbscripts for easier testing, development and migration for git migrations. ((might be moved to the debug package proposal))

Addition of a package

Removal of a package

Moving of a package

devtools

abs

How will asp/abs look for users?

Testing

Migration

For every directory in our svn repositority (svn-community/svn-packages) a git repository has to be created. Anthraxx has created a svn to git migration script.

Open points:

  • How do we track which package was from which repo ([core]/[extra])?
  • How do we populate the dbscripts database?

Software dependent on svn and requiring migration:

Security

  • Enforce git signed commits
  • Verify git signed commits in a git hook and against the keys in the pacman keyring.
  • Disallow force pushes
  • Use git tags to match the checksum of the uploaded PKGBUILD with the built package