elisp-vcs/dvc/www/index.html
2009-10-10 08:02:43 +02:00

268 lines
8.2 KiB
HTML

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta name="author" content="The DVC team" />
<meta name="description" content="DVC is a unified Emacs front-end
to a number of distributed version control systems."/>
<meta name="keywords" content="DVC, Xtla, Emacs, XEmacs, baz, tla,
Arch, GNU Arch, git, bzr, Bazaar, Mercurial, hg, pcl-cvs, vc,
darcs, Monotone, mtn, xmtn"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>DVC: Distributed Version Control for Emacs</title>
<!-- <style type="text/css"> -->
<!-- @import "style.css"; -->
<!-- </style> -->
</head>
<body>
<img src="dvc.png" alt="DVC logo"/>
<h1>DVC: Distributed Version Control for Emacs</h1>
<p>DVC is a common Emacs front-end for a number of distributed
version control systems.
</p>
<p>It currently supports GNU Arch, Bazaar, git, Mercurial, and
Monotone. Support for Darcs is being worked on but still lacks
some features. See <a href="#table">the table below</a> for
details.
</p>
<p>DVC is available as
a <a href="http://bazaar-vcs.org/">Bazaar</a> branch. To get a
local copy of the main branch, just do:
</p>
<pre>
bzr get http://bzr.xsteve.at/dvc/
</pre>
<p>You can also find Matthieu's branch (not always up-to-date at
the moment) here:
</p>
<pre>
bzr get http://www-verimag.imag.fr/~moy/bzr/dvc/moy/
</pre>
<p>A nightly snapshot of Matthieu's branch is available here:
<a href="http://download.gna.org/dvc/download/dvc-snapshot.tar.gz">dvc-snapshot.tar.gz</a></p>
<h2>Background</h2>
<p>For modern version control systems (VCS),
the <a
href="http://www.gnu.org/software/emacs/manual/html_node/emacs/Version-Control.html#Version-Control">VC
package</a> that ships with Emacs is insufficient. It has a
file-centric view that does not match the tree-centric model of
modern VCSs (hacks
like <a
href="http://cvs.savannah.gnu.org/viewvc/emacs/emacs/lisp/vc-arch.el?view=markup">vc-arch.el</a>
and <a
href="http://git.kernel.org/?p=git/git.git;a=blob;f=contrib/emacs/vc-git.el;hb=HEAD">vc-git.el</a>
notwithstanding). Also, it is too generic to take advantage of
features that are specific to each VCS.
</p>
<p>DVC is the successor of and
includes <a
href="http://www.gnuarch.org/gnuarchwiki/xtla">Xtla</a>, which is
an Emacs front-end to GNU Arch (tla and baz). Xtla supports both
tla and baz, and uses a simple "autoconf" mechanism to adapt
itself to different versions of tla and baz (e.g., call "merge" if
available, "star-merge" otherwise). However, Xtla is specific to
GNU Arch and can not easily support other VCSs like bzr,
Mercurial, Git, etc.
</p>
<p>DVC remedies this by providing VCS-independent infrastructure
and defining a common interface to be implemented by VCS-specific
back-ends.
</p>
<p>DVC supersedes Xtla. There is no new feature plan in Xtla
after the release of Xtla 1.2.
</p>
<h2>Architecture</h2>
<p>DVC's architecture looks like this:</p>
<pre>
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
: Optional common UI (which autodetects the back-end) :&lt;----.
+---------------+-------------------+------------------+---------+ |
| tla (Xtla) | Mercurial (xhg) | Bazaar (bzr) | | v
|+-------------+|+-----------------+|+----------------+| ... | \O/
|| Xtla core ||| xhg core ||| bzr core || |&lt;--> |
|+-------------+|+-----------------+|+----------------+| | / \
+---------------+-------------------+------------------+---------+
| DVC core |
+----------------------------------------------------------------+
</pre>
<p>The user can use the common UI layer as well as the back-end
specific parts directly.
</p>
<h2>Draft Roadmap</h2>
<p>The roadmap currently looks like this:
</p>
<pre>
Create dvc-xxx.el files (initially empty)
while (! satisfied) {
See what has to be done to implement feature X in VCS Y
See what code can be reused from Xtla to do this
Based upon this, create a generic API in DVC
Port the Xtla code to this API
Implement the feature X in other back-ends
}
</pre>
<p>We should avoid introducing quick and dirty hacks in DVC as
much as possible. Try to get a correct foundation before
implementing features in the back-ends.
</p>
<p>Comments and contributions are welcome.
</p>
<h2><a name="table">Back-ends and their status</a></h2>
<table border="1" cellspacing="0" cellpadding="10">
<tr>
<!--
***
*** 5 stands for the number of functions ***
***
-->
<td colspan="2" rowspan="2" />
<th colspan="5" align="center">Functions</th>
<th rowspan="2">Maintainers</th>
<th rowspan="2">Notes</th>
</tr>
<tr>
<th>status</th>
<th>diff</th>
<th>log</th>
<th>pull</th>
<th>commit</th>
</tr>
<tr>
<!--
***
*** 6 stands for the number of back-ends ***
***
-->
<th rowspan="6">Back-end</th>
<th><a href="http://www.gnuarch.org/gnuarchwiki/">GNU Arch (tla)</a> and Bazaar (baz)</th>
<!-- FUNCTIONS BEGIN -->
<th>+</th>
<th>+</th>
<th>+</th>
<th>+</th>
<th>+</th>
<!-- FUNCTIONS END -->
<th>Matthieu, Stefan</th>
<td></td>
</tr>
<tr>
<th><a href="http://bazaar-vcs.org/">Bazaar (bzr)</a></th>
<!-- FUNCTIONS BEGIN -->
<th>+</th>
<th>+</th>
<th>+</th>
<th>+</th>
<th>+</th>
<!-- FUNCTIONS END -->
<th>Matthieu, Stefan</th>
<td></td>
</tr>
<tr>
<th><a href="http://git.or.cz/">Git</a></th>
<!-- FUNCTIONS BEGIN -->
<th>+</th>
<th>+</th>
<th>+</th>
<th>+</th>
<th>+</th>
<!-- FUNCTIONS END -->
<th>Michael, Stefan</th>
<td></td>
</tr>
<tr>
<th><a href="http://www.selenic.com/mercurial/">Mercurial (hg)</a></th>
<!-- FUNCTIONS BEGIN -->
<th>+</th>
<th>+</th>
<th>+</th>
<th>+</th>
<th>+</th>
<!-- FUNCTIONS END -->
<th>Stefan</th>
<td>Also contains support for Mercurial Queues (MQ).</td>
</tr>
<tr>
<th><a href="http://monotone.ca/">Monotone (mtn)</a></th>
<!-- FUNCTIONS BEGIN -->
<th>+</th>
<th>+</th>
<th>+</th>
<th>-</th>
<th>+</th>
<!-- FUNCTIONS END -->
<th>Christian. Stephen</th>
<td></td>
</tr>
<tr>
<th><a href="http://www.abridgegame.org/darcs/">Darcs</a></th>
<!-- FUNCTIONS BEGIN -->
<th>+</th>
<th>-</th>
<th>-</th>
<th>-</th>
<th>-</th>
<!-- FUNCTIONS END -->
<th>Stefan</th>
<td>Not usable yet.</td>
</tr>
</table>
<h2>Mailing List</h2>
There is a mailing list for DVC related stuff:
<ul>
<li>Subscribe via:
<a href="https://mail.gna.org/listinfo/dvc-dev/"
>https://mail.gna.org/listinfo/dvc-dev/</a>
</li>
<li>The Gmane mirror is here:
<a href="http://blog.gmane.org/gmane.emacs.dvc.devel"
>http://blog.gmane.org/gmane.emacs.dvc.devel</a>
</li>
</ul>
<h2>Other Emacs modes related to version control</h2>
<ul>
<li><a href="http://git.kernel.org/?p=git/git.git;a=blob;f=contrib/emacs/git.el;hb=HEAD">git</a></li>
<li><a href="http://darcs.net/DarcsWiki/CategoryEmacs">darcs</a></li>
<li><a href="http://www.venge.net/mtn-wiki/InterfacesFrontendsAndTools">monotone</a></li>
<li><a href="http://www.selenic.com/quilt/">quilt.el</a></li>
</ul>
</body>
</html>