File:  [NetBSD Developer Wiki] / wikisrc / users / dholland / hgpath.mdwn
Revision 1.8: download - view: text, annotated - select for diffs
Mon Jan 19 13:31:33 2015 UTC (6 years, 9 months ago) by wiz
Branches: MAIN
CVS tags: HEAD
mention pushlog extension.

    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]] 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: 
   47: * atomic commits / changesets
   48: * rename support
   49: * authenticating commits
   50: * numbered versions
   51: * branch handling
   52: * tag handling
   53: * partial checkouts (partial trees, partial history)
   54: * blacklist extension (which is a legal requirement)
   55: * being able to migrate away in the future
   56: * ...
   57: 
   58: Conversion of CVS repository phenomena
   59: 
   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-USL-settlement history and/or including the CSRG history
   69: 
   70: Implementation concerns (demands on the system as it exists)
   71: 
   72: * general performance
   73: * importing into base, or not
   74: * storage requirements vs. small systems
   75: * memory requirements vs. small systems
   76: * possible workarounds for small systems
   77: * ...
   78: 
   79: Community deployment issues
   80: 
   81: * what becomes of anoncvs
   82: * making use of version numbers in mailing lists / security advisories
   83: * patches/contributions/commits from non-developers
   84: * collaborating with non-developers
   85:   
   86: Developer deployment issues
   87: 
   88: * commit procedures
   89: * development branch procedures
   90: * vendor branch procedures
   91: * private branch procedures
   92: * collaboration without pushing to the master repositories
   93: * rebasing vs. merging
   94: * how to refer to other commits in log messages
   95: 
   96: Many of these issues are already documented in [[the existing
   97: workflows writeup|hgnb]].
   98: 
   99: Releng deployment issues
  100: 
  101: * changes to the way pullups are filed
  102: * adjusting processing scripts for new source-changes format
  103: * release commit procedures
  104: * release branch procedures
  105: * dealing with accidental commits to release branches
  106: * preventing accidental merges into release branches
  107: * extracting formal release tarballs
  108: * shipping source tarballs
  109: * ...
  110: 
  111: Backend/admins deployment issues
  112: 
  113: * how commits get pushed to the master tree (log who's pushing
  114:   what, e.g. using the
  115:   [[pushlog|http://hg.mozilla.org/hgcustom/version-control-tools/summary]]
  116:   extension from mozilla)
  117: * log_accum / source-changes mails
  118: * access control for whole trees
  119: * access control for subsections of trees
  120: * backups
  121: * pushing to anoncvs
  122: * ...
  123: 
  124: cvs assumptions / scripted usage in the tree
  125: 
  126: * pkgsrc: changes-entry and commit-changes-entry
  127: * pkgsrc: guide regen
  128: * ...
  129: 
  130: Other questions
  131: 
  132: * running live in parallel with CVS during a transition period
  133: * gatewaying to other VCS frontends
  134: * rcsids in source files
  135: 
  136: 
  137: 
  138: 
  139: 

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb