gsch2pcb: Make --m4-file and -m4-pcbdir arguments work again.
[geda-gaf/peter-b.git] / docs / wiki / geda-version_control_migration.html
blob2a4c27187687bfe64e4b0ff1372e94a4d1a08cb9
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html>
4 <head>
5 <title></title>
6 <link rel="stylesheet" media="screen" type="text/css" href="./style.css" />
7 <link rel="stylesheet" media="screen" type="text/css" href="./design.css" />
8 <link rel="stylesheet" media="print" type="text/css" href="./print.css" />
10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
11 </head>
12 <body>
15 <h1 class="sectionedit1387"><a name="version_control_migration" id="version_control_migration">Version Control Migration</a></h1>
16 <div class="level1">
18 </div>
19 <!-- EDIT1387 SECTION "Version Control Migration" [1-41] -->
20 <h2 class="sectionedit1388"><a name="status_quo" id="status_quo">Status Quo</a></h2>
21 <div class="level2">
23 <p>
25 Currently, gEDA uses <acronym title="Concurrent Versions System">CVS</acronym>. <acronym title="Concurrent Versions System">CVS</acronym> is the “original” version control system used for collaborating on open source projects.
26 </p>
28 <p>
29 Unfortunately, <acronym title="Concurrent Versions System">CVS</acronym> has a number of problems:
31 </p>
32 <ol>
33 <li class="level1"><div class="li"> <acronym title="Concurrent Versions System">CVS</acronym> does not support the concept of patch sets. That is, it&#039;s very difficult to work out what changes went into <acronym title="Concurrent Versions System">CVS</acronym> together without using dodgy tools like <a href="http://www.cobite.com/cvsps/" class="urlextern" title="http://www.cobite.com/cvsps/" rel="nofollow">cvsps</a>.</div>
34 </li>
35 <li class="level1"><div class="li"> Merging with <acronym title="Concurrent Versions System">CVS</acronym> is painful, especially when there is keyword expansion brokenness such as the <code>Log</code> keyword.</div>
36 </li>
37 <li class="level1"><div class="li"> <acronym title="Concurrent Versions System">CVS</acronym> doesn&#039;t support renames preserving history.</div>
38 </li>
39 <li class="level1"><div class="li"> The overhead involved in creating and managing a branch in <acronym title="Concurrent Versions System">CVS</acronym> is such that people tend to do one of the following:</div>
40 <ol>
41 <li class="level2"><div class="li"> Don&#039;t bother</div>
42 </li>
43 <li class="level2"><div class="li"> Use another VCS locally, then export patches, then commit patches to <acronym title="Concurrent Versions System">CVS</acronym>. This is a big hassle for everyone.</div>
44 </li>
45 <li class="level2"><div class="li"> Do II. <strong>and</strong> use a branch in <acronym title="Concurrent Versions System">CVS</acronym>, which is even more hassle, but means people can see the changes in advance.</div>
46 </li>
47 </ol>
48 </li>
49 <li class="level1"><div class="li"> You can&#039;t do anything in <acronym title="Concurrent Versions System">CVS</acronym> (view logs, view “blame” for a line of code, create diffs to previous versions) without being online &amp; connecting to the repository.</div>
50 </li>
51 </ol>
53 </div>
54 <!-- EDIT1388 SECTION "Status Quo" [42-1144] -->
55 <h2 class="sectionedit1389"><a name="what_we_need" id="what_we_need">What We Need</a></h2>
56 <div class="level2">
58 <p>
60 gEDA has a development process that involves a number of people working independently on separate changes. Some of these are a single changeset hacked together in a few minutes, some involve several major changes and are developed over a matter of months. Often, in order to track down a tricky bug, it is necessary for a developer to try and work out what a fellow developer did several months ago.
61 </p>
63 <p>
64 The following features would be deemed desirable in a version control system:
66 </p>
67 <ol>
68 <li class="level1"><div class="li"> Free as in beer as well as free as in speech.</div>
69 </li>
70 <li class="level1"><div class="li"> Actively developed/maintained.</div>
71 </li>
72 <li class="level1"><div class="li"> Atomic commits (a.k.a. changesets).</div>
73 </li>
74 <li class="level1"><div class="li"> All users have their own copy of the history.</div>
75 </li>
76 <li class="level1"><div class="li"> Users can make local branches/commits without being logged onto a remote server (“distributed” repository model).</div>
77 </li>
78 <li class="level1"><div class="li"> Merge &amp; rename tracking.</div>
79 </li>
80 <li class="level1"><div class="li"> Easy to transition to from <acronym title="Concurrent Versions System">CVS</acronym>.</div>
81 </li>
82 </ol>
84 <p>
86 Using the <a href="http://en.wikipedia.org/wiki/Comparison_of_revision_control_software" class="urlextern" title="http://en.wikipedia.org/wiki/Comparison_of_revision_control_software" rel="nofollow">comparison matrix at Wikipedia</a>, it looks like only <a href="http://www.selenic.com/mercurial/wiki/" class="urlextern" title="http://www.selenic.com/mercurial/wiki/" rel="nofollow">Mercurial</a> and <a href="http://git.or.cz/" class="urlextern" title="http://git.or.cz/" rel="nofollow">git</a> have the features we require.
87 </p>
89 <p>
90 A number of factors militate in favour of using git:
92 </p>
93 <ul>
94 <li class="level1"><div class="li"> Existing experience within the the gEDA development community.</div>
95 </li>
96 <li class="level1"><div class="li"> More extensively used by major projects (Linux kernel, X.org X server, OLPC, WINE).</div>
97 </li>
98 </ul>
100 </div>
101 <!-- EDIT1389 SECTION "What We Need" [1145-] --></body>
102 </html>