I would really like to finish the migration away from CVS to hg.
This is a list of items that need to be done for this to happen.
There are at least the following topics:
Repositories
hg supports conversion from CVS directly, but it doesn't handle cvs
import
well.
cvs2fossil
is preferred, packaged in wip/cvs2fossil and wip/cvs2hg
The src and pkgsrc conversions are based on by now very old scripts and might need migration to the new tools.
- htdocs
- DONE repository conversion exists
- apply fixes to CVS master (admin ticket #280542)
- htutils
- DONE repository conversion exists
- DONE nothing to fix in CVS master
- The following scripts need to be updated:
- changes/cvschanges2html
- changes/pkg-changes2rss
- scripts/mirrorcheck (perhaps obsolete)
- scripts/pkgdoget
- scripts/update.changes
- scripts/update.http
- scripts/update.releng
- localsrc
- DONE repository conversion exists
- apply fixes to CVS master (admin ticket #280397)
- othersrc
- DONE repository conversion exists
- DONE split up
cvs imports
for some sources (luke@) - DONE missing tags on some files (dh@ fixed them)
- DONE minor other fixes
- DONE split up
- apply fixes to CVS master (admin ticket #280541)
- DONE repository conversion exists
- pkgsrc
- conversion exists, but joerg wants to do a cleaned up version
- update branch-cutting instructions
- update releng instructions
DONE expect lots of merge problems in doc/CHANGES* - use merge tool
:union
to fix this, configured in.hgrc
like this:[merge-patterns] doc/CHANGES-* = :union
- pkgsrc-wiki
- DONE repository conversion exists
- for deployment: ikiwiki hg plug-in (schmonz@ is working on this)
- src
- conversion exists, but joerg wants to do a cleaned up version
- wiki
- DONE repository conversion exists
- for deployment: ikiwiki hg plug-in (schmonz@ is working on this)
- xsrc
- DONE cleaned-up repository conversion exists
- send fixes to admins for applying
hg server
- software
- waiting for auditlog merge
- DONE authormap (mapping CVS Unix users to name and email)
- DONE decided to use named branches instead of bookmarks
- script to send emails for commits (exists for src-hg, deploy for all repositories)
- script to send email to GNATS for messages referencing PRs (htdocs, pkgsrc, src, xsrc)
- hardware
- DONE do we need new hardware for the server(s)?
- no; use cvs and anoncvs machines
- ? set up hg.NetBSD.org from scratch
- ? set up anonhg.NetBSD.org from scratch
- DONE do we need new hardware for the server(s)?
- DONE rename 'hgmaster' host to 'hg' in DNS
- DONE public access:
Documentation
Updating Repository Contents & Deployment
- releng: some scripts need to be adapted
- localsrc/releng/autobuild - martin@ is working on it
- localsrc/releng/autobuild/autobuild.txt for hg
- releng needs to migrate to using hg
- CI: anita and bracket
- DONE anita was not affected, but the underlying bracket tool needed changes for hg support
- test bed needs to migrate to using hg
- Daily/weekly jobs:
- daily publishing jobs for tar balls
- updated extracted sources? ftp.NetBSD.org?
- all the pkgsrc automation (requires an unpacked updated tree of the right branch, doesn't care how it came into being)
- when we migrate htdocs and htutils, update of the web pages
- backups of the repo(s)
- developer activity script for admins/membership-exec needs to be adapted or rewritten
- RCS Ids
- for src: set
-D_SOURCE_REVISION=\"$(hg log -r . -T {node})"
(computed once) instead of the RCS Ids so that "ident /netbsd" stays useful.- joerg@ has a WIP patch
- DONE for pkgsrc:
USE_PKG_ADMIN_DIGEST
has been set toyes
- for src: set
Switch from CVS to hg
- turn on hg as main repository - switch them one by one
- github
- after final conversion happens, either force-push or make a new repository and deprecate the old one
Post-Conversion
Cleanups after conversions are final (these can only be done once the CVS-to-hg step is finalized, because they are manual work and would get lost otherwise)
- closing unused branches (old 'cvs import' branches that won't be used again)
- converting .cvsignore files to .hgignore
- adding release tags (for 'cvs imports')
- find all release tags
- DONE tag them automatically as far as possible
- turn off CVS/anoncvs server
- possibly close tech-repository mailing list
- (optional) discuss if hg should be included in the base system
Notes: Branch Merging
The migration keeps branch information, but there is no way to automatically create merge commits from the data available in CVS.
Therefore, after the conversion, before the import of a new vendor version on the branch, hg needs to be told that the merge already happened. One method for this would be:
hg checkout default
hg merge BRANCHNAME
hg revert (to branch head)
hg commit (null-merge, just to let hg know this is already merged)
and only then start with importing the new version on the vendor branch.
Notes: Closing Branches
hg
supports the concept of closing a branch using
hg commit --close-branch
.
This should probably be done after the migration.