git-tools.html   [plain text]


<!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="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.4.5" />
<title>A short git tools survey</title>
<style type="text/css">
/* Debug borders */
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
/*
  border: 1px solid red;
*/
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

tt {
  color: navy;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  font-family: sans-serif;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}

div.sectionbody {
  font-family: serif;
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}

pre {
  padding: 0;
  margin: 0;
}

span#author {
  color: #527bbd;
  font-family: sans-serif;
  font-weight: bold;
  font-size: 1.1em;
}
span#email {
}
span#revnumber, span#revdate, span#revremark {
  font-family: sans-serif;
}

div#footer {
  font-family: sans-serif;
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
div#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
div#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

div#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.5em;
  margin-bottom: 2.5em;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-family: sans-serif;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid silver;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid silver;
  background: #f4f4f4;
  padding: 0.5em;
}

div.quoteblock {
  padding-left: 2.0em;
  margin-right: 10%;
}
div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock {
  padding-left: 2.0em;
  margin-right: 10%;
}
div.verseblock > div.content {
  white-space: pre;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 2px solid silver;
}

div.exampleblock > div.content {
  border-left: 2px solid silver;
  padding: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

div.tableblock > table {
  border: 3px solid #527bbd;
}
thead {
  font-family: sans-serif;
  font-weight: bold;
}
tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

@media print {
  div#footer-badges { display: none; }
}

div#toctitle {
  color: #527bbd;
  font-family: sans-serif;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}
/* Workarounds for IE6's broken and incomplete CSS2. */

div.sidebar-content {
  background: #ffffee;
  border: 1px solid silver;
  padding: 0.5em;
}
div.sidebar-title, div.image-title {
  color: #527bbd;
  font-family: sans-serif;
  font-weight: bold;
  margin-top: 0.0em;
  margin-bottom: 0.5em;
}

div.listingblock div.content {
  border: 1px solid silver;
  background: #f4f4f4;
  padding: 0.5em;
}

div.quoteblock-attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock-content {
  white-space: pre;
}
div.verseblock-attribution {
  padding-top: 0.75em;
  text-align: left;
}

div.exampleblock-content {
  border-left: 2px solid silver;
  padding-left: 0.5em;
}

/* IE6 sets dynamically generated links as visited. */
div#toc a:visited { color: blue; }
</style>
</head>
<body>
<div id="header">
<h1>A short git tools survey</h1>
</div>
<h2 id="_introduction">Introduction</h2>
<div class="sectionbody">
<div class="paragraph"><p>Apart from git contrib/ area there are some others third-party tools
you may want to look.</p></div>
<div class="paragraph"><p>This document presents a brief summary of each tool and the corresponding
link.</p></div>
</div>
<h2 id="_alternative_augmentative_porcelains">Alternative/Augmentative Porcelains</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
<strong>Cogito</strong> (<a href="http://www.kernel.org/pub/software/scm/cogito/">http://www.kernel.org/pub/software/scm/cogito/</a>)
</p>
<div class="literalblock">
<div class="content">
<pre><tt>Cogito is a version control system layered on top of the git tree history
storage system. It aims at seamless user interface and ease of use,
providing generally smoother user experience than the "raw" Core GIT
itself and indeed many other version control systems.</tt></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><tt>Cogito is no longer maintained as most of its functionality
is now in core GIT.</tt></pre>
</div></div>
</li>
<li>
<p>
<strong>pg</strong> (<a href="http://www.spearce.org/category/projects/scm/pg/">http://www.spearce.org/category/projects/scm/pg/</a>)
</p>
<div class="literalblock">
<div class="content">
<pre><tt>pg is a shell script wrapper around GIT to help the user manage a set of
patches to files. pg is somewhat like quilt or StGIT, but it does have a
slightly different feature set.</tt></pre>
</div></div>
</li>
<li>
<p>
<strong>StGit</strong> (<a href="http://www.procode.org/stgit/">http://www.procode.org/stgit/</a>)
</p>
<div class="literalblock">
<div class="content">
<pre><tt>Stacked GIT provides a quilt-like patch management functionality in the
GIT environment. You can easily manage your patches in the scope of GIT
until they get merged upstream.</tt></pre>
</div></div>
</li>
</ul></div>
</div>
<h2 id="_history_viewers">History Viewers</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
<strong>gitk</strong> (shipped with git-core)
</p>
<div class="literalblock">
<div class="content">
<pre><tt>gitk is a simple Tk GUI for browsing history of GIT repositories easily.</tt></pre>
</div></div>
</li>
<li>
<p>
<strong>gitview</strong>  (contrib/)
</p>
<div class="literalblock">
<div class="content">
<pre><tt>gitview is a GTK based repository browser for git</tt></pre>
</div></div>
</li>
<li>
<p>
<strong>gitweb</strong> (shipped with git-core)
</p>
<div class="literalblock">
<div class="content">
<pre><tt>GITweb provides full-fledged web interface for GIT repositories.</tt></pre>
</div></div>
</li>
<li>
<p>
<strong>qgit</strong> (<a href="http://digilander.libero.it/mcostalba/">http://digilander.libero.it/mcostalba/</a>)
</p>
<div class="literalblock">
<div class="content">
<pre><tt>QGit is a git/StGIT GUI viewer built on Qt/C++. QGit could be used
to browse history and directory tree, view annotated files, commit
changes cherry picking single files or applying patches.
Currently it is the fastest and most feature rich among the git
viewers and commit tools.</tt></pre>
</div></div>
</li>
<li>
<p>
<strong>tig</strong> (<a href="http://jonas.nitro.dk/tig/">http://jonas.nitro.dk/tig/</a>)
</p>
<div class="literalblock">
<div class="content">
<pre><tt>tig by Jonas Fonseca is a simple git repository browser
written using ncurses. Basically, it just acts as a front-end
for git-log and git-show/git-diff. Additionally, you can also
use it as a pager for git commands.</tt></pre>
</div></div>
</li>
</ul></div>
</div>
<h2 id="_foreign_scm_interface">Foreign SCM interface</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
<strong>git-svn</strong> (shipped with git-core)
</p>
<div class="literalblock">
<div class="content">
<pre><tt>git-svn is a simple conduit for changesets between a single Subversion
branch and git.</tt></pre>
</div></div>
</li>
<li>
<p>
<strong>quilt2git / git2quilt</strong> (<a href="http://home-tj.org/wiki/index.php/Misc">http://home-tj.org/wiki/index.php/Misc</a>)
</p>
<div class="literalblock">
<div class="content">
<pre><tt>These utilities convert patch series in a quilt repository and commit
series in git back and forth.</tt></pre>
</div></div>
</li>
<li>
<p>
<strong>hg-to-git</strong> (contrib/)
</p>
<div class="literalblock">
<div class="content">
<pre><tt>hg-to-git converts a Mercurial repository into a git one, and
preserves the full branch history in the process. hg-to-git can
also be used in an incremental way to keep the git repository
in sync with the master Mercurial repository.</tt></pre>
</div></div>
</li>
</ul></div>
</div>
<h2 id="_others">Others</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
<strong>(h)gct</strong> (<a href="http://www.cyd.liu.se/users/~freku045/gct/">http://www.cyd.liu.se/users/~freku045/gct/</a>)
</p>
<div class="literalblock">
<div class="content">
<pre><tt>Commit Tool or (h)gct is a GUI enabled commit tool for git and
Mercurial (hg). It allows the user to view diffs, select which files
to committed (or ignored / reverted) write commit messages and
perform the commit itself.</tt></pre>
</div></div>
</li>
<li>
<p>
<strong>git.el</strong> (contrib/)
</p>
<div class="literalblock">
<div class="content">
<pre><tt>This is an Emacs interface for git. The user interface is modeled on
pcl-cvs. It has been developed on Emacs 21 and will probably need some
tweaking to work on XEmacs.</tt></pre>
</div></div>
</li>
</ul></div>
<div class="paragraph"><p><a href="http://git.or.cz/gitwiki/InterfacesFrontendsAndTools">http://git.or.cz/gitwiki/InterfacesFrontendsAndTools</a> has more
comprehensive list.</p></div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2008-07-16 16:54:18 UTC
</div>
</div>
</body>
</html>