Differences between revisions 20 and 21
Revision 20 as of 2012-09-07 19:39:14
Size: 5089
Editor: DonArmstrong
Comment: git size is 500M
Revision 21 as of 2012-09-07 23:53:50
Size: 5112
Comment: Update link to the Git book.
Deletions are marked like this. Additions are marked like this.
Line 53: Line 53:
    - emulate CVS revisions by using [[http://git-scm.com/book/ch7-2.html#Keyword-Expansion|keyword expansions]].     - emulate CVS revisions by using [[http://git-scm.com/book/en/Customizing-Git-Git-Attributes#Keyword-Expansion|keyword expansions]].

Evaluation of different VCSes for the Website

The Debian website is currently in CVS. While in princple that works reasonably, cvs is rather old, and new VCSes offer all kinds of new functionality that might be very useful.

Before moving to such a new VCS (if we want to in the first place), we need to evaluate what the needs for such a system are in the light of the current web infrastructure.

Requirements

  • partial checkouts (for translators, etc)
  • possibility to port the translation check system
  • possibility to retain current file histories, including timeline and who committed stuff

VCSes

Arch

Bazaar

Advantages:

  • distributed VCS
  • user interface commands same as in CVS (checkout, commit, diff, update, add, rm)
  • userfriendly by default
  • light weight checkouts without history possible (with this, disk usage same as in CVS checkouts)

CVS

Steps required to move:

  • create CVS and dump copy from gluck
  • adapt scripts at www-master to point to the new repo
  • duplicate the webwml group at gluck to the WWW Alioth group project name
  • contact contributors and let them know of the new location

Advantages:

  • no work to be done, scripts as is
  • interface is known to current users
  • small checked-out size

Disadvantages:

  • no atomic operations
  • no file moves
  • no native distributed repositories
  • no native offline operation (You may use git together with cvs to achieve this.)
  • lose checkout data

JFS: These are generic disadvantages of CVS, not like the -www team really needs these features.

Darcs

Git

Steps required to move:

  • Adapt the various scripts that currently check CVS revisions by either:
    • - changing the logic to use sha1 sums instead, or

      - emulate CVS revisions by using keyword expansions.

  • Check wether a full website build would work after that changes.
  • Try out how submodules work and wether they might be reasonable to use for language subdirectories to al low translators partial checkouts.
  • ... other things, propably general common issues listed with CVS above and SVN below.

Advantages:

  • distributed VCS, meaning possibility to completely work offline and commit when being online again
  • easy access to the history (see this mail)

  • Tagging concept is similar to CVS
  • Archive is small
  • Small checkout size (500M as of 9/2012)
  • CVS pserver emulator available
  • similar to CVS in user interface (checkout, commit, diff, but pull replaces update), with addition of clone
  • many userfriendly tools available

Disadvantages:

  • partial checkout only possible if the repository has been setup with various "submodules". Support of this is very recent (git 1.5.3).
  • usually has full history in each "checkout" (created by git clone by default, shallow clone also possible) (concern over size, but git tends to compress the history very well). A full clone of the entire repository is around 500M (9/2012).
  • If scripts were changed to use sha1 value instead of revision numbers, translators would need to enter and check sha1sums instead of increasing numbering to track original version updates (this can be addressed with additional scripts to ease the offline workflow).

Mercurial

Subversion

Steps required to move:

  • create SVN and use tools (tailor?) to move over the CVS repository from gluck
  • review that SVN captures all the data needed (history, logs...)
  • adapt scripts at www-master to use SVN and point to the new repo
  • adapt translation-related scripts so that it parses .svn/entries (through 'svn info') or a new header in english files ($Id) -
    • template/debian/translation-check.wml: Translation check included in pages
    • check_trans.pl, stattrans.pl, touch_translations.pl: CLI checks at root webwml CVS
  • duplicate the webwml group at gluck to the WWW Alioth group project name
  • contact contributors and let them know of the new VCS
  • provide information to contributors on how to use SVN (recipes)

Advantages:

  • similar to CVS in user interface.
  • many userfriendly tools available
  • known by some translators as they already use that for d-i and other projects (but not all www translators are d-i translators)

Disadvantages:

  • not distributed by nature, but one can use either svk or git-svn if they need to be able to work off-line and prepare several commits (but if we're going to use git, why not just use git?)
  • limited off-line operation, including building of pages (due to translation-check requirements on svn log)
  • Tagging concept is different from CVS.
  • very limited branching/merging functionality
  • Large checkout size
  • Tools much larger than CVS

There is a plan for Subversion transition in the WebsiteSVNTransition page for those who want to experiment/help with that.