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 - apply fixes to CVS master (admin ticket #280541) - 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|https://foss.heptapod.net/mercurial/mercurial-devel/-/merge_requests/235]] - 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 rename 'hgmaster' host to 'hg' in DNS - DONE public access: - hg: - [[read-only public|https://anonhg.netbsd.org/]] - [[read-write for developers|ssh://hg.netbsd.org/]] - [[read-only git|https://github.com/netbsd/]] Documentation === - [[CVS to hg migration guide|https://wiki.mercurial-scm.org/CvsInfo]] - [[NetBSD-specific documentation for developers and hg|https://www.netbsd.org/developers/mercurial/]] 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 to `yes` Switch from CVS to hg === - turn on hg as main repository - switch them one by one - public repositories - othersrc - htdocs - pkgsrc - [[public|https://anonhg.netbsd.org/pkgsrc/]] & [[internal|ssh://hg.netbsd.org/pkgsrc]] - src - [[public|https://anonhg.netbsd.org/src/]] & [[internal|ssh://hg.netbsd.org/src]] - xsrc - [[public|https://anonhg.netbsd.org/xsrc/]] & [[internal|ssh://hg.netbsd.org/xsrc]] - internal repositories - htutils - localsrc - wikisrc - pkgsrc-wiki - 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|https://mail-index.netbsd.org/tech-repository/2023/07/18/msg000788.html]] - 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.