tech-repository archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Core statement on version control systems



The NetBSD core group has been asked to make a statement on version control systems.

There is a strong case for switching from CVS to a modern distributed version control system (DVCS). However, the proponents of particular DVCS systems have not presented a coherent plan that can be used to implement a transition from the current system to a new system.

In the opinion of the core group, the NetBSD project should switch from CVS to a DVCS system as soon as a suitable transition plan is presented and approved.

Some of the things that we would like to be addressed in a transition plan are:

* How well the proposed system satisfies the requirements and
  desires of the community, in terms of features, ease of use,
  performance, and other considerations that have been mentioned
  in the tech-repository mailing list.  It would be useful to
  have a matrix similar to the one produced by FreeBSD, available
  at <https://wiki.freebsd.org/VersionControl>.

* Performance implications of the desired VCS system, especially
  for hosts with low or moderate amounts of memory.

  Whether low performance hosts:

    - will be able to use the new system fully; or
    - will be able to use a degraded mode that will allow at
      least HEAD and branch checkouts and commits (but perhaps
      without the ability to create new branches or to merge); or
    - will be able to use a front-end or mirror that provides
      CVS-like capabilities and performance; or
    - will not be able to use revision control at all.

  Note that a checkout of the NetBSD "src" tree has nearly 150000
  files in more than 15000 subdirectories (not including "CVS"
  subdirectories, or obsolete files or directories), and the
  "src" CVS repository has more than 300000 files in more than
  38000 directories (including "Attic" subdirectories).  Almost
  all existing DVCS systems exhibit performance problems on a
  tree of this size, unless the host has ample memory.

* Whether it will be possible to run the existing CVS system
  in parallel with the new version control system during a
  transition period, and if so, how commits made to one system
  will be mirrored to the other.

* Whether one-way or bidirectional near-real-time conversion to
  other VCS systems will be possible on an ongoing basis, and
  if so, to which systems (other than the system chosen as the
  master), and how it will be configured.

* A matrix of all the supporting tools and code that currently
  assumes CVS, with plans and actions for the conversion of each
  item to the new VCS.

* How the NetBSD project's official servers should be set up,
  taking into account the needs of developers with write access,
  read-only access for the public to mirror the repository,
  read-only access for the public to check out the tree (if
  that is different from mirroring the repository), backups,
  redundancy, audit trail, email for commit messages, and any
  other issues identified with the assistance of NetBSD admins.

* How tools will be incorporated into the src tree, or
  bootstrapped from pkgsrc.

* How developers and non-developers will interact with the
  system, including workflow options for official release or
  feature branches, and for personal public or private branches
  (by both developers with write access, and non-developers).

* New standards for log messages that refer to earlier commits,
  to avoid tying us to any particular VCS in the future.
  (Roughly, what to say in log messages instead of "revision
  <number>" or "commit <hash>" or "the previous commit".)

* How the existing repository will be converted.  The following
  items would be nice to have (in decreasing order of importance):

    - how CVS vendor branches will be handled, including
      cases where the same vendor tag has been used for
      logically-distinct branches (as is common in pkgsrc).

    - how (if at all) historical log messages will be edited
      during the conversion (for example, to adjust the
      character set, to convert user names to email addresses,
      or to fix up references to CVS numeric revision numbers,
      to make them use the newly defined standards);

    - how (if at all) historical repository moves and copies
      will be identified and fixed up during the conversion;

    - whether pre-CVS history (such as the older SCCS history)
      can also be included, either at the time of conversion, or
      later;

    - whether information removed as a result of the USL v. BSDI
      lawsuit could ever be reinstated, if legal issues were
      resolved in the future.

* Considerations to avoid lock-in to a particular version
  control system, but to allow for a future change to yet
  another system.  (For example, we could choose a VCS system
  with a widely supported import and export format, and restrict
  our workflow to features that are supported by many VCS
  systems, and avoid the use of features that are unique to the
  chosen system; however, the set of widely-supported features
  should be identified.)

* An estimated time-line of the conversion, together with a list
  of people responsible for it and their respective tasks.

-- Alan Barrett, on behalf or the NetBSD core group


Home | Main Index | Thread Index | Old Index