This is the list of open issues for the migration of pkgsrc to git.
There are at least the following topics:
Repositories
Either use the existing conversion, or make a new one using wip/cvs2git
.
(DONE in this section means we know how to do it.)
- DONE conversion exists, but joerg wants to do a cleaned up version
- asked joerg if he's still interested in doing that
- no reply, so we'll take it as-is
- asked joerg if he's still interested in doing that
DONE
doc/CHANGES-*
: add a.gitattributes
file indoc
withCHANGES-* merge=union
DONE mailmap (mapping CVS Unix users to name and email - see localsrc/cvs_server/migration)
DONE mailmap needs to be applied
git filter-repo --force --mailmap $PATH_TO_MAILMAP
DONE rename trunk to main:
git branch main trunk
git switch main
git branch -d trunk
git server
- software
- use git: ssh + git like for wip
- new hardware?
- no; use cvs and anoncvs machines
- new DNS entry
- public access: provide read-only access that's not on github
git server hooks
- DONE email notifications: use hook script from pkgsrc-wip
- DONE linear history: use hook script from pkgsrc-wip
- DONE warning about merge conflict in commits
- DONE warning about work directories included in commits
- DONE emails to GNATS when commits include magic pattern relating to a PR
- DONE
pkg_add p5-MIME-Lite
for notifications - DONE branch support
Documentation
- pkgsrc-specific documentation for developers and git
- pkgsrc guide sections
- 23.3. General notes when adding, updating, or removing packages
- 23.5. Committing: Adding a package to CVS
- 23.8. Moving a package in pkgsrc
- pkgsrc guide sections
- update branch-cutting instructions
- update releng instructions
Updating Repository Contents & Deployment
- Daily/weekly jobs:
- daily publishing jobs for tar balls
- with .git or without? or both?
- updated extracted sources? where?
- all the pkgsrc automation (requires an unpacked updated tree of the right branch, doesn't care how it came into being)
- backups of the repo(s)
- daily publishing jobs for tar balls
- developer activity script for admins/membership-exec needs to be adapted
- update bulk build machines to get their sources from git
Switching from CVS to git
- make git repository available to all developers
- make pkgsrc CVS read-only
- github
- after final conversion happens, either force-push or make a new repository and deprecate the old one, or remove completely?
Post-Conversion
Cleanups after conversions are final (these can only be done once the CVS-to-git step is finalized, because they are manual work and would get lost otherwise)
- delete old branches
current conversion has some duplicate branches that only differ by
_
vs.-
in the names, e.g. origin/pkgsrc-2003Q4 and origin/pkgsrc_2003Q4. Most don't differ at all, in the few cases where they do the-
version looks better. So clean up the other ones:git branch -al | grep _ | grep -v pkg_install-renovation | while read a; do echo git branch -d "$a"; done
pkgsrc-
is a misbranch ofpkgsrc-2017Q3
, delete it:git branch -d pkgsrc
pkgsrc-pkgsrc-2019Q4
is a misbranch ofpkgsrc-2019Q4
, delete it:git branch -d pkgsrc-pkgsrc-2019Q4
some thirdparty software was sometimes imported, but we didn't continue with this process -- except for libarchive.
git branch -d BMAKE BZIP2 MRENDEL ZLIB tnftp
keep
KIENTZLE
(libarchive) or remove it?early in pkgsrc's development, packages were added from FreeBSD ports and imported to keep them in sync. This practice had stopped by 2005.
git branch -d FREEBSD
A couple autoconf/automake files in pkgsrc/mk were imported on this in 2006 but later updates didn't use imports.
git branch -d FSF
This was the branch that was used for all imports (i.e. package additions) until we stopped using
cvs import
for adding packages:git branch -d TNF
TODO
buildlink2
- TODO
cube-native-xorg
- TODO
cwrapper
- TODO
jlam-pkgviews
- TODO
pkg_install-renovation
- TODO
pkgviews
- TODO
pkgviews-mk
- TODO
pkgviews
- TODO
tv-derecurse
- TODO
tv-libtool-1-5-18-tmpdirfix
- tag heads so no commits are lost? Other method?
- DONE add .gitattributes file for doc/ (prepared)
- DONE update developer.mk for git (
make changes-entry
), see diff - turn off CVS/anoncvs server