268 lines
8.2 KiB
HTML
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) :<----.
|
|
+---------------+-------------------+------------------+---------+ |
|
|
| tla (Xtla) | Mercurial (xhg) | Bazaar (bzr) | | v
|
|
|+-------------+|+-----------------+|+----------------+| ... | \O/
|
|
|| Xtla core ||| xhg core ||| bzr core || |<--> |
|
|
|+-------------+|+-----------------+|+----------------+| | / \
|
|
+---------------+-------------------+------------------+---------+
|
|
| 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>
|