tech-repository archive

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

Proposed conversion strategy

I have been reminded of something interesting. The git project ships 
a CVS emulation server.  This brings the front-end set that it can
support to at least three: git, hg, *and* CVS.

I think this implies a workable conversion strategy. That is: upgrade
the repos to git so you get full changesets in the whole history, then
make a point of supporting all three front ends.  This ought to make
everyone reasonably happy, or at least not so unhappy that they'll

The role I would like to have in this is ensuring that your upgraded
repo is a really *good* conversion.  I consider high-quality of
conversion important - it is why I have devoted so much effort
to writing reposurgeon and maintaining cvs-fast-export.

Here are some traits I think a good conversion should have, beyond the 
obvious one of "get the changesets and tags right":

1. Unix IDs in pre-DVCS systems like CVS and Subversion should be
completely mapped to DVCS-style developer IDs with full name and email.

1. Ignore files and patterns should be fully migrated, not only in the
head version but through the enire history.

2. Commit references in commit comments should be fixed up so they 
make sense in the new system.

3. When practical, commit comments should have whitespace inserted so
they conform to the summary/blank-line/details format of DVCSes.  This
helps tools like gitk and hg view work better. 

4. In general, the objective should be for the repository to look
as though the new system had been in use since the beginning of
time, minimizing developer friction when browsing far back in the
history.  (Keeping the old repo still available meets objections
about rewriting history.)

These are the premises I am executing right now in converting Emacs.
You cannot get a conversion this good from a fully automated tool;
it takes human judgment and taste.  The problems are similar to
(though more tractable than) idiomatic translation between languages.

Fortunately, I enjoy solving them.
		<a href="";>Eric S. Raymond</a>

The end move in politics is always to pick up a gun.
	-- R. Buckminster Fuller

Home | Main Index | Thread Index | Old Index