DeveloperWiki:GitMigration
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.
- Kanboard: https://kanboard.archlinux.org/public/board/79027046d03d974519740f759f4c7a4cdb6edd6ef4683fb123aa1f148882[dead link 2021-05-17 ⓘ]
- Project repo: TBA
Owner
- Name: User:Eschwartz
- Name: User:brtln
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:
- arch-commits - svn hook and perl script maintained in infrastructure.git
- archweb - populate_signoffs hook, fetches commit message from svn to be shown in signoffs). Also https://archlinux.org/svn/ should be removed.
- infrastructure - disable svnlog, arch-svntogit
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