Annotation of wikisrc/users/dholland/hgpath.mdwn, revision 1.1
1.1 ! dholland 1: ## NetBSD migration path to Mercurial
! 2:
! 3: This page describes what's involved in migrating NetBSD from CVS to
! 4: Mercurial.
! 5:
! 6: ### What Mercurial is
! 7:
! 8: [[Mercurial|http://mercurial.selenic.com]] is an open-source version
! 9: control system.
! 10: It is a distributed version control system based on the commit
! 11: hashcode model shared with git and other DVCSes.
! 12: It is fast and powerful and has long emphasized a certain polish of
! 13: production.
! 14:
! 15: ### Why Mercurial
! 16:
! 17: Mercurial is a modern VCS; it is maintained; it is capable of
! 18: handling the NetBSD repositories; and it is cleanly designed, simple,
! 19: and easy to use.
! 20: The first three of these properties are necessary requirements for
! 21: NetBSD to migrate (I don't think any of them are particularly
! 22: controversial); the last sets it apart from git, which is the other
! 23: immediately available alternative.
! 24: (The third option, writing our own, is not currently realistic.)
! 25:
! 26: One could write a lot of gung-ho IT IS REALLY GR8!!!11!! boosterism
! 27: here too, of course, but I'll leave that for someone else.
! 28:
! 29: ### Migration
! 30:
! 31: There are two categories of issues related to migrating a project the
! 32: size of NetBSD: first, what the project and the world around the
! 33: project will look like after the migration is done, and second, what
! 34: things need to be done to get there.
! 35: The purpose of this page is to tackle the first: what things in the
! 36: project will be different and what they'll be like.
! 37: This includes not just user-facing things like commit procedures but
! 38: also backend considerations and administration.
! 39:
! 40: There's a [[second page|hgtodo.mdwn]] with a list of work that needs
! 41: to be done.
! 42:
! 43: ### Issues
! 44:
! 45: Technical concerns (demands on the system's operational model)
! 46: * atomic commits / changesets
! 47: * rename support
! 48: * authenticating commits
! 49: * numbered versions
! 50: * branch handling
! 51: * tag handling
! 52: * partial checkouts
! 53: ** partial trees
! 54: ** partial history
! 55: * blacklist extension (which is a legal requirement)
! 56: * being able to migrate away in the future
! 57: * ...
! 58:
! 59: Conversion of CVS repository phenomena
! 60: * vendor branches
! 61: * conversion of repo-copies and similar CVS horrors
! 62: * adding rename metadata to already-done moves
! 63: * pkgsrc not-really-vendor imports
! 64: * developer usernames vs. email addresses in log messages and commit metadata
! 65: * non-ascii text in log messages
! 66: * version references in log messages
! 67: * retaining CVS file version numbers as metadata
! 68: * restoring the pre-settlement history and/or including the CSRG history
! 69:
! 70: Implementation concerns (demands on the system as it exists)
! 71: * general performance
! 72: * importing into base, or not
! 73: * storage requirements vs. small systems
! 74: * memory requirements vs. small systems
! 75: * possible workarounds for small systems
! 76: * ...
! 77:
! 78: Community deployment issues
! 79: * what becomes of anoncvs
! 80: * making use of version numbers in mailing lists / security advisories
! 81: * patches/contributions/commits from non-developers
! 82: * collaborating with non-developers
! 83:
! 84: Developer deployment issues
! 85: * commit procedures
! 86: * development branch procedures
! 87: * vendor branch procedures
! 88: * private branch procedures
! 89: * collaboration without pushing to the master repositories
! 90: * rebasing vs. merging
! 91: * how to refer to other commits in log messages
! 92:
! 93: Many of these issues are already documented in [[the existing
! 94: workflows writeup|hgnb.mdwn]].
! 95:
! 96: Releng deployment issues
! 97: * changes to the way pullups are filed
! 98: * release commit procedures
! 99: * release branch procedures
! 100: * dealing with accidental commits to release branches
! 101: * preventing accidental merges into release branches
! 102: * extracting formal release tarballs
! 103: * shipping source tarballs
! 104: * ...
! 105:
! 106: Backend/admins deployment issues
! 107: * log_accum / source-changes mails
! 108: * access control for whole trees
! 109: * access control for subsections of trees
! 110: * backups
! 111: * pushing to anoncvs
! 112: * ...
! 113:
! 114: cvs assumptions / scripted usage in the tree
! 115: * pkgsrc: changes-entry and commit-changes-entry
! 116: * pkgsrc: guide regen
! 117: * ...
! 118:
! 119: Other questions
! 120: * running live in parallel with CVS during a transition period
! 121: * gatewaying to other VCS frontends
! 122:
! 123:
! 124:
! 125:
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb