1 |
* Grant Goodyear <g2boojum@g.o> [2004-01-27 12:30]: |
2 |
> A recent thread discussed alternatives to CVS. As our developers know |
3 |
> all too well (but some -dev readers may not), the portage tree is kept |
4 |
> in CVS, which serves us reasonably well until somebody wants to move |
5 |
> files around, rename files, or create symbolic links, all of which are a |
6 |
> real hassle. |
7 |
> |
8 |
> I've been casually looking into alternatives for a while, and it's still |
9 |
> not clear that there is a viable alternative just yet. Subversion is |
10 |
> not yet stable, and at least until recently it was prohibitively slow, |
11 |
> but it does have the desired features. Arch would probably work as |
12 |
> well, but the docs are just awful so somebody other than me would have |
13 |
> to evaluate it. (Being able to have distributed trees _would_ be nice, |
14 |
> however!) |
15 |
> |
16 |
> While looking into arch I discovered meta-cvs |
17 |
> (http://users.footprints.net/~kaz/mcvs.html), which is also not entirely |
18 |
> ready for prime time (in terms of migrating portage), but it might be |
19 |
> closer, and it might be _really_ nice for gentoo subprojects. Thanks to |
20 |
> the work of mkennedy, we now have an mcvs ebuild, and I just added an |
21 |
> mcvs patch to the latest ~x86 version of viewcvs. |
22 |
> |
23 |
> What makes mcvs potentially useful for us is that mcvs is essentially a |
24 |
> front-end to CVS which, on the server side, requires _nothing_ more than |
25 |
> a normal CVS repository. The way that mcvs works, in essence, is that |
26 |
> when files are added to an cvs repository they are actually saved using |
27 |
> cryptic F-uglyhash.foo filenames along with entries in a MAP file. This |
28 |
> level of indirection means that when a file is renamed, or moved, all |
29 |
> that really changes in the repository is the entry in the MAP file that |
30 |
> maps the F-uglyhash.foo file to the new location in the tree. (Symlinks |
31 |
> are stored only as entries in the MAP file.) To get a feeling for |
32 |
> what's going on, take a look at |
33 |
> http://cvs.grantgoodyear.org/viewcvs/chem332.ces.clemson.edu/?root=cvs. |
34 |
> That page looks mostly like a normal cvs tree, but it's actually an mcvs |
35 |
> tree sitting in my cvs repository. Viewcvs (or, to be honest, the mcvs |
36 |
> patch for viewcvs) doesn't handle mcvs directories as well as it might, |
37 |
> so instead of having actual directories (which mcvs would create upon |
38 |
> checkout) the directory structure is reflected in rather long filenames. |
39 |
> *Shrug* If you look at the MAP file, though, you can see the mapping |
40 |
> between the ugly filenames and the real files. |
41 |
> |
42 |
> In my opinion, the big drawbacks to meta-cvs right now are: (a) no good |
43 |
> tool for converting a cvs repository to mcvs without losing history and |
44 |
> commit comments, although it shouldn't be _that_ hard to script one, (b) |
45 |
> the viewcvs patch produces results that are not very pretty, (c) users, |
46 |
> but not cvs servers, need to install clisp to use mcvs, and (d) mcvs |
47 |
> needs to parse the MAP file, which could be memory intensive and lengthy |
48 |
> for a really large mcvs tree (such as portage), although the author of |
49 |
> the program notes that running CVS update on large trees takes so long |
50 |
> that the linear scaling to parse the MAP file may not be all that |
51 |
> noticeable. |
52 |
> |
53 |
|
54 |
I have some experience with ARCH/TLA but only on small projects. It |
55 |
is very nice in terms of distributed repositories, and the |
56 |
documentation isn't all that bad. There is a wiki |
57 |
(http://wiki.sourcecontrol.net/moin.cgi/) that has a whole bunch of |
58 |
information. |
59 |
|
60 |
What is is nice about arch is the branches. In arch you can actually |
61 |
keep track of different branches easily and painlessly. Say we want a |
62 |
stable, unstable, cutting-edge branch for the portage tree. It is |
63 |
possible to merge specific patches from one branch into another for |
64 |
say security fixes, and maintainability. Say KDE from the unstable |
65 |
branch becomes stable, just merge the patch-set for kde over to the |
66 |
stable branch. |
67 |
|
68 |
In addition, CVS and ARCH can be used together for a 'trial run'. |
69 |
There is a guide here |
70 |
(http://wiki.sourcecontrol.net/moin.cgi/Arch_20and_20CVS_20in_20the_20same_20tree) |
71 |
to help you. Using arch and CVS together shouldn't mess up anything, |
72 |
the arch directories are not committed to the CVS. |
73 |
|
74 |
Regards, |
75 |
Ryan |