Autogenerated HTML docs for 36de72aa9dc3b7daf8cf2770c840f39bb0d2ae70
authorJunio C Hamano <junio@hera.kernel.org>
Tue, 27 Dec 2005 08:17:23 +0000 (00:17 -0800)
committerJunio C Hamano <junio@hera.kernel.org>
Tue, 27 Dec 2005 08:17:23 +0000 (00:17 -0800)
240 files changed:
cvs-migration.html [new file with mode: 0644]
cvs-migration.txt [new file with mode: 0644]
diff-format.txt [new file with mode: 0644]
diff-options.txt [new file with mode: 0644]
diffcore.html [new file with mode: 0644]
diffcore.txt [new file with mode: 0644]
everyday.html [new file with mode: 0644]
everyday.txt [new file with mode: 0644]
fetch-options.txt [new file with mode: 0644]
git-add.html [new file with mode: 0644]
git-add.txt [new file with mode: 0644]
git-am.html [new file with mode: 0644]
git-am.txt [new file with mode: 0644]
git-apply.html [new file with mode: 0644]
git-apply.txt [new file with mode: 0644]
git-applymbox.html [new file with mode: 0644]
git-applymbox.txt [new file with mode: 0644]
git-applypatch.html [new file with mode: 0644]
git-applypatch.txt [new file with mode: 0644]
git-archimport.html [new file with mode: 0644]
git-archimport.txt [new file with mode: 0644]
git-bisect.html [new file with mode: 0644]
git-bisect.txt [new file with mode: 0644]
git-branch.html [new file with mode: 0644]
git-branch.txt [new file with mode: 0644]
git-cat-file.html [new file with mode: 0644]
git-cat-file.txt [new file with mode: 0644]
git-check-ref-format.html [new file with mode: 0644]
git-check-ref-format.txt [new file with mode: 0644]
git-checkout-index.html [new file with mode: 0644]
git-checkout-index.txt [new file with mode: 0644]
git-checkout.html [new file with mode: 0644]
git-checkout.txt [new file with mode: 0644]
git-cherry-pick.html [new file with mode: 0644]
git-cherry-pick.txt [new file with mode: 0644]
git-cherry.html [new file with mode: 0644]
git-cherry.txt [new file with mode: 0644]
git-clone-pack.html [new file with mode: 0644]
git-clone-pack.txt [new file with mode: 0644]
git-clone.html [new file with mode: 0644]
git-clone.txt [new file with mode: 0644]
git-commit-tree.html [new file with mode: 0644]
git-commit-tree.txt [new file with mode: 0644]
git-commit.html [new file with mode: 0644]
git-commit.txt [new file with mode: 0644]
git-convert-objects.html [new file with mode: 0644]
git-convert-objects.txt [new file with mode: 0644]
git-count-objects.html [new file with mode: 0644]
git-count-objects.txt [new file with mode: 0644]
git-cvsexportcommit.html [new file with mode: 0644]
git-cvsexportcommit.txt [new file with mode: 0644]
git-cvsimport.html [new file with mode: 0644]
git-cvsimport.txt [new file with mode: 0644]
git-daemon.html [new file with mode: 0644]
git-daemon.txt [new file with mode: 0644]
git-diff-files.html [new file with mode: 0644]
git-diff-files.txt [new file with mode: 0644]
git-diff-index.html [new file with mode: 0644]
git-diff-index.txt [new file with mode: 0644]
git-diff-stages.html [new file with mode: 0644]
git-diff-stages.txt [new file with mode: 0644]
git-diff-tree.html [new file with mode: 0644]
git-diff-tree.txt [new file with mode: 0644]
git-diff.html [new file with mode: 0644]
git-diff.txt [new file with mode: 0644]
git-fetch-pack.html [new file with mode: 0644]
git-fetch-pack.txt [new file with mode: 0644]
git-fetch.html [new file with mode: 0644]
git-fetch.txt [new file with mode: 0644]
git-fmt-merge-msg.html [new file with mode: 0644]
git-fmt-merge-msg.txt [new file with mode: 0644]
git-format-patch.html [new file with mode: 0644]
git-format-patch.txt [new file with mode: 0644]
git-fsck-objects.html [new file with mode: 0644]
git-fsck-objects.txt [new file with mode: 0644]
git-get-tar-commit-id.html [new file with mode: 0644]
git-get-tar-commit-id.txt [new file with mode: 0644]
git-grep.html [new file with mode: 0644]
git-grep.txt [new file with mode: 0644]
git-hash-object.html [new file with mode: 0644]
git-hash-object.txt [new file with mode: 0644]
git-http-fetch.html [new file with mode: 0644]
git-http-fetch.txt [new file with mode: 0644]
git-http-push.html [new file with mode: 0644]
git-http-push.txt [new file with mode: 0644]
git-index-pack.html [new file with mode: 0644]
git-index-pack.txt [new file with mode: 0644]
git-init-db.html [new file with mode: 0644]
git-init-db.txt [new file with mode: 0644]
git-local-fetch.html [new file with mode: 0644]
git-local-fetch.txt [new file with mode: 0644]
git-log.html [new file with mode: 0644]
git-log.txt [new file with mode: 0644]
git-lost-found.html [new file with mode: 0644]
git-lost-found.txt [new file with mode: 0644]
git-ls-files.html [new file with mode: 0644]
git-ls-files.txt [new file with mode: 0644]
git-ls-remote.html [new file with mode: 0644]
git-ls-remote.txt [new file with mode: 0644]
git-ls-tree.html [new file with mode: 0644]
git-ls-tree.txt [new file with mode: 0644]
git-mailinfo.html [new file with mode: 0644]
git-mailinfo.txt [new file with mode: 0644]
git-mailsplit.html [new file with mode: 0644]
git-mailsplit.txt [new file with mode: 0644]
git-merge-base.html [new file with mode: 0644]
git-merge-base.txt [new file with mode: 0644]
git-merge-index.html [new file with mode: 0644]
git-merge-index.txt [new file with mode: 0644]
git-merge-one-file.html [new file with mode: 0644]
git-merge-one-file.txt [new file with mode: 0644]
git-merge.html [new file with mode: 0644]
git-merge.txt [new file with mode: 0644]
git-mktag.html [new file with mode: 0644]
git-mktag.txt [new file with mode: 0644]
git-mv.html [new file with mode: 0644]
git-mv.txt [new file with mode: 0644]
git-name-rev.html [new file with mode: 0644]
git-name-rev.txt [new file with mode: 0644]
git-pack-objects.html [new file with mode: 0644]
git-pack-objects.txt [new file with mode: 0644]
git-pack-redundant.html [new file with mode: 0644]
git-pack-redundant.txt [new file with mode: 0644]
git-parse-remote.html [new file with mode: 0644]
git-parse-remote.txt [new file with mode: 0644]
git-patch-id.html [new file with mode: 0644]
git-patch-id.txt [new file with mode: 0644]
git-peek-remote.html [new file with mode: 0644]
git-peek-remote.txt [new file with mode: 0644]
git-prune-packed.html [new file with mode: 0644]
git-prune-packed.txt [new file with mode: 0644]
git-prune.html [new file with mode: 0644]
git-prune.txt [new file with mode: 0644]
git-pull.html [new file with mode: 0644]
git-pull.txt [new file with mode: 0644]
git-push.html [new file with mode: 0644]
git-push.txt [new file with mode: 0644]
git-read-tree.html [new file with mode: 0644]
git-read-tree.txt [new file with mode: 0644]
git-rebase.html [new file with mode: 0644]
git-rebase.txt [new file with mode: 0644]
git-receive-pack.html [new file with mode: 0644]
git-receive-pack.txt [new file with mode: 0644]
git-relink.html [new file with mode: 0644]
git-relink.txt [new file with mode: 0644]
git-repack.html [new file with mode: 0644]
git-repack.txt [new file with mode: 0644]
git-repo-config.html [new file with mode: 0644]
git-repo-config.txt [new file with mode: 0644]
git-request-pull.html [new file with mode: 0644]
git-request-pull.txt [new file with mode: 0644]
git-reset.html [new file with mode: 0644]
git-reset.txt [new file with mode: 0644]
git-resolve.html [new file with mode: 0644]
git-resolve.txt [new file with mode: 0644]
git-rev-list.html [new file with mode: 0644]
git-rev-list.txt [new file with mode: 0644]
git-rev-parse.html [new file with mode: 0644]
git-rev-parse.txt [new file with mode: 0644]
git-revert.html [new file with mode: 0644]
git-revert.txt [new file with mode: 0644]
git-send-email.html [new file with mode: 0644]
git-send-email.txt [new file with mode: 0644]
git-send-pack.html [new file with mode: 0644]
git-send-pack.txt [new file with mode: 0644]
git-sh-setup.html [new file with mode: 0644]
git-sh-setup.txt [new file with mode: 0644]
git-shell.html [new file with mode: 0644]
git-shell.txt [new file with mode: 0644]
git-shortlog.html [new file with mode: 0644]
git-shortlog.txt [new file with mode: 0644]
git-show-branch.html [new file with mode: 0644]
git-show-branch.txt [new file with mode: 0644]
git-show-index.html [new file with mode: 0644]
git-show-index.txt [new file with mode: 0644]
git-ssh-fetch.html [new file with mode: 0644]
git-ssh-fetch.txt [new file with mode: 0644]
git-ssh-upload.html [new file with mode: 0644]
git-ssh-upload.txt [new file with mode: 0644]
git-status.html [new file with mode: 0644]
git-status.txt [new file with mode: 0644]
git-stripspace.html [new file with mode: 0644]
git-stripspace.txt [new file with mode: 0644]
git-svnimport.html [new file with mode: 0644]
git-svnimport.txt [new file with mode: 0644]
git-symbolic-ref.html [new file with mode: 0644]
git-symbolic-ref.txt [new file with mode: 0644]
git-tag.html [new file with mode: 0644]
git-tag.txt [new file with mode: 0644]
git-tar-tree.html [new file with mode: 0644]
git-tar-tree.txt [new file with mode: 0644]
git-unpack-file.html [new file with mode: 0644]
git-unpack-file.txt [new file with mode: 0644]
git-unpack-objects.html [new file with mode: 0644]
git-unpack-objects.txt [new file with mode: 0644]
git-update-index.html [new file with mode: 0644]
git-update-index.txt [new file with mode: 0644]
git-update-ref.html [new file with mode: 0644]
git-update-ref.txt [new file with mode: 0644]
git-update-server-info.html [new file with mode: 0644]
git-update-server-info.txt [new file with mode: 0644]
git-upload-pack.html [new file with mode: 0644]
git-upload-pack.txt [new file with mode: 0644]
git-var.html [new file with mode: 0644]
git-var.txt [new file with mode: 0644]
git-verify-pack.html [new file with mode: 0644]
git-verify-pack.txt [new file with mode: 0644]
git-verify-tag.html [new file with mode: 0644]
git-verify-tag.txt [new file with mode: 0644]
git-whatchanged.html [new file with mode: 0644]
git-whatchanged.txt [new file with mode: 0644]
git-write-tree.html [new file with mode: 0644]
git-write-tree.txt [new file with mode: 0644]
git.html [new file with mode: 0644]
git.txt [new file with mode: 0644]
gitk.html [new file with mode: 0644]
gitk.txt [new file with mode: 0644]
glossary.html [new file with mode: 0644]
glossary.txt [new file with mode: 0644]
hooks.html [new file with mode: 0644]
hooks.txt [new file with mode: 0644]
howto-index.html [new file with mode: 0644]
howto-index.txt [new file with mode: 0644]
howto/isolate-bugs-with-bisect.txt [new file with mode: 0644]
howto/make-dist.txt [new file with mode: 0644]
howto/rebase-and-edit.txt [new file with mode: 0644]
howto/rebase-from-internal-branch.txt [new file with mode: 0644]
howto/rebuild-from-update-hook.txt [new file with mode: 0644]
howto/revert-branch-rebase.html [new file with mode: 0644]
howto/revert-branch-rebase.txt [new file with mode: 0644]
howto/update-hook-example.txt [new file with mode: 0644]
howto/using-topic-branches.txt [new file with mode: 0644]
index.html [new symlink]
merge-options.txt [new file with mode: 0644]
merge-strategies.txt [new file with mode: 0644]
pull-fetch-param.txt [new file with mode: 0644]
repository-layout.html [new file with mode: 0644]
repository-layout.txt [new file with mode: 0644]
tutorial.html [new file with mode: 0644]
tutorial.txt [new file with mode: 0644]

diff --git a/cvs-migration.html b/cvs-migration.html
new file mode 100644 (file)
index 0000000..d3ccbe1
--- /dev/null
@@ -0,0 +1,525 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git for CVS users</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>git for CVS users</h1>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<p>Ok, so you're a CVS user. That's ok, it's a treatable condition, and the\r
+first step to recovery is admitting you have a problem. The fact that\r
+you are reading this file means that you may be well on that path\r
+already.</p>\r
+<p>The thing about CVS is that it absolutely sucks as a source control\r
+manager, and you'll thus be happy with almost anything else. git,\r
+however, may be a bit <em>too</em> different (read: "good") for your taste, and\r
+does a lot of things differently.</p>\r
+<p>One particular suckage of CVS is very hard to work around: CVS is\r
+basically a tool for tracking <em>file</em> history, while git is a tool for\r
+tracking <em>project</em> history.  This sometimes causes problems if you are\r
+used to doing very strange things in CVS, in particular if you're doing\r
+things like making branches of just a subset of the project.  git can't\r
+track that, since git never tracks things on the level of an individual\r
+file, only on the whole project level.</p>\r
+<p>The good news is that most people don't do that, and in fact most sane\r
+people think it's a bug in CVS that makes it tag (and check in changes)\r
+one file at a time.  So most projects you'll ever see will use CVS\r
+<em>as if</em> it was sane.  In which case you'll find it very easy indeed to\r
+move over to git.</p>\r
+<p>First off: this is not a git tutorial. See\r
+<a href="tutorial.html">Documentation/tutorial.txt</a> for how git\r
+actually works. This is more of a random collection of gotcha's\r
+and notes on converting from CVS to git.</p>\r
+<p>Second: CVS has the notion of a "repository" as opposed to the thing\r
+that you're actually working in (your working directory, or your\r
+"checked out tree").  git does not have that notion at all, and all git\r
+working directories <em>are</em> the repositories.  However, you can easily\r
+emulate the CVS model by having one special "global repository", which\r
+people can synchronize with.  See details later, but in the meantime\r
+just keep in mind that with git, every checked out working tree will\r
+have a full revision control history of its own.</p>\r
+</div>\r
+</div>\r
+<h2>Importing a CVS archive</h2>\r
+<div class="sectionbody">\r
+<p>Ok, you have an old project, and you want to at least give git a chance\r
+to see how it performs. The first thing you want to do (after you've\r
+gone through the git tutorial, and generally familiarized yourself with\r
+how to commit stuff etc in git) is to create a git'ified version of your\r
+CVS archive.</p>\r
+<p>Happily, that's very easy indeed. git will do it for you, although git\r
+will need the help of a program called "cvsps":</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>http://www.cobite.com/cvsps/</tt></pre>\r
+</div></div>\r
+<p>which is not actually related to git at all, but which makes CVS usage\r
+look almost sane (ie you almost certainly want to have it even if you\r
+decide to stay with CVS). However, git will want <em>at least</em> version 2.1\r
+of cvsps (available at the address above), and in fact will currently\r
+refuse to work with anything else.</p>\r
+<p>Once you've gotten (and installed) cvsps, you may or may not want to get\r
+any more familiar with it, but make sure it is in your path. After that,\r
+the magic command line is</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git cvsimport -v -d &lt;cvsroot&gt; -C &lt;destination&gt; &lt;module&gt;</tt></pre>\r
+</div></div>\r
+<p>which will do exactly what you'd think it does: it will create a git\r
+archive of the named CVS module. The new archive will be created in the\r
+subdirectory named &lt;destination&gt;; it'll be created if it doesn't exist.\r
+Default is the local directory.</p>\r
+<p>It can take some time to actually do the conversion for a large archive\r
+since it involves checking out from CVS every revision of every file,\r
+and the conversion script is reasonably chatty unless you omit the <em>-v</em>\r
+option, but on some not very scientific tests it averaged about twenty\r
+revisions per second, so a medium-sized project should not take more\r
+than a couple of minutes.  For larger projects or remote repositories,\r
+the process may take longer.</p>\r
+<p>After the (initial) import is done, the CVS archive's current head\r
+revision will be checked out &#8212; thus, you can start adding your own\r
+changes right away.</p>\r
+<p>The import is incremental, i.e. if you call it again next month it'll\r
+fetch any CVS updates that have been happening in the meantime. The\r
+cut-off is date-based, so don't change the branches that were imported\r
+from CVS.</p>\r
+<p>You can merge those updates (or, in fact, a different CVS branch) into\r
+your main branch:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git resolve HEAD origin "merge with current CVS HEAD"</tt></pre>\r
+</div></div>\r
+<p>The HEAD revision from CVS is named "origin", not "HEAD", because git\r
+already uses "HEAD". (If you don't like <em>origin</em>, use cvsimport's\r
+<em>-o</em> option to change it.)</p>\r
+</div>\r
+<h2>Emulating CVS behaviour</h2>\r
+<div class="sectionbody">\r
+<p>So, by now you are convinced you absolutely want to work with git, but\r
+at the same time you absolutely have to have a central repository.\r
+Step back and think again. Okay, you still need a single central\r
+repository? There are several ways to go about that:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+Designate a person responsible to pull all branches. Make the\r
+repository of this person public, and make every team member\r
+pull regularly from it.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Set up a public repository with read/write access for every team\r
+member. Use "git pull/push" as you used "cvs update/commit".  Be\r
+sure that your repository is up to date before pushing, just\r
+like you used to do with "cvs commit"; your push will fail if\r
+what you are pushing is not up to date.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Make the repository of every team member public. It is the\r
+responsibility of each single member to pull from every other\r
+team member.\r
+</p>\r
+</li>\r
+</ol>\r
+</div>\r
+<h2>CVS annotate</h2>\r
+<div class="sectionbody">\r
+<p>So, something has gone wrong, and you don't know whom to blame, and\r
+you're an ex-CVS user and used to do "cvs annotate" to see who caused\r
+the breakage. You're looking for the "git annotate", and it's just\r
+claiming not to find such a script. You're annoyed.</p>\r
+<p>Yes, that's right.  Core git doesn't do "annotate", although it's\r
+technically possible, and there are at least two specialized scripts out\r
+there that can be used to get equivalent information (see the git\r
+mailing list archives for details).</p>\r
+<p>git has a couple of alternatives, though, that you may find sufficient\r
+or even superior depending on your use.  One is called "git-whatchanged"\r
+(for obvious reasons) and the other one is called "pickaxe" ("a tool for\r
+the software archeologist").</p>\r
+<p>The "git-whatchanged" script is a truly trivial script that can give you\r
+a good overview of what has changed in a file or a directory (or an\r
+arbitrary list of files or directories).  The "pickaxe" support is an\r
+additional layer that can be used to further specify exactly what you're\r
+looking for, if you already know the specific area that changed.</p>\r
+<p>Let's step back a bit and think about the reason why you would\r
+want to do "cvs annotate a-file.c" to begin with.</p>\r
+<p>You would use "cvs annotate" on a file when you have trouble\r
+with a function (or even a single "if" statement in a function)\r
+that happens to be defined in the file, which does not do what\r
+you want it to do.  And you would want to find out why it was\r
+written that way, because you are about to modify it to suit\r
+your needs, and at the same time you do not want to break its\r
+current callers.  For that, you are trying to find out why the\r
+original author did things that way in the original context.</p>\r
+<p>Many times, it may be enough to see the commit log messages of\r
+commits that touch the file in question, possibly along with the\r
+patches themselves, like this:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>$ git-whatchanged -p a-file.c</tt></pre>\r
+</div></div>\r
+<p>This will show log messages and patches for each commit that\r
+touches a-file.</p>\r
+<p>This, however, may not be very useful when this file has many\r
+modifications that are not related to the piece of code you are\r
+interested in.  You would see many log messages and patches that\r
+do not have anything to do with the piece of code you are\r
+interested in.  As an example, assuming that you have this piece\r
+of code that you are interested in in the HEAD version:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>if (frotz) {\r
+        nitfol();\r
+}</tt></pre>\r
+</div></div>\r
+<p>you would use git-rev-list and git-diff-tree like this:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>$ git-rev-list HEAD |\r
+  git-diff-tree --stdin -v -p -S'if (frotz) {\r
+        nitfol();\r
+}'</tt></pre>\r
+</div></div>\r
+<p>We have already talked about the "--stdin" form of git-diff-tree\r
+command that reads the list of commits and compares each commit\r
+with its parents (otherwise you should go back and read the tutorial).\r
+The git-whatchanged command internally runs\r
+the equivalent of the above command, and can be used like this:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>$ git-whatchanged -p -S'if (frotz) {\r
+        nitfol();\r
+}'</tt></pre>\r
+</div></div>\r
+<p>When the -S option is used, git-diff-tree command outputs\r
+differences between two commits only if one tree has the\r
+specified string in a file and the corresponding file in the\r
+other tree does not.  The above example looks for a commit that\r
+has the "if" statement in it in a file, but its parent commit\r
+does not have it in the same shape in the corresponding file (or\r
+the other way around, where the parent has it and the commit\r
+does not), and the differences between them are shown, along\r
+with the commit message (thanks to the -v flag).  It does not\r
+show anything for commits that do not touch this "if" statement.</p>\r
+<p>Also, in the original context, the same statement might have\r
+appeared at first in a different file and later the file was\r
+renamed to "a-file.c".  CVS annotate would not help you to go\r
+back across such a rename, but git would still help you in such\r
+a situation.  For that, you can give the -C flag to\r
+git-diff-tree, like this:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>$ git-whatchanged -p -C -S'if (frotz) {\r
+        nitfol();\r
+}'</tt></pre>\r
+</div></div>\r
+<p>When the -C flag is used, file renames and copies are followed.\r
+So if the "if" statement in question happens to be in "a-file.c"\r
+in the current HEAD commit, even if the file was originally\r
+called "o-file.c" and then renamed in an earlier commit, or if\r
+the file was created by copying an existing "o-file.c" in an\r
+earlier commit, you will not lose track.  If the "if" statement\r
+did not change across such a rename or copy, then the commit that\r
+does rename or copy would not show in the output, and if the\r
+"if" statement was modified while the file was still called\r
+"o-file.c", it would find the commit that changed the statement\r
+when it was in "o-file.c".</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">The current version of "git-diff-tree -C" is not eager\r
+  enough to find copies, and it will miss the fact that a-file.c\r
+  was created by copying o-file.c unless o-file.c was somehow\r
+  changed in the same commit.</td>\r
+</tr></table>\r
+</div>\r
+<p>You can use the &#8212;pickaxe-all flag in addition to the -S flag.\r
+This causes the differences from all the files contained in\r
+those two commits, not just the differences between the files\r
+that contain this changed "if" statement:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>$ git-whatchanged -p -C -S'if (frotz) {\r
+        nitfol();\r
+}' --pickaxe-all</tt></pre>\r
+</div></div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">This option is called "&#8212;pickaxe-all" because -S\r
+  option is internally called "pickaxe", a tool for software\r
+  archaeologists.</td>\r
+</tr></table>\r
+</div>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:17:06 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/cvs-migration.txt b/cvs-migration.txt
new file mode 100644 (file)
index 0000000..dc9387b
--- /dev/null
@@ -0,0 +1,248 @@
+git for CVS users
+=================
+
+Ok, so you're a CVS user. That's ok, it's a treatable condition, and the
+first step to recovery is admitting you have a problem. The fact that
+you are reading this file means that you may be well on that path
+already.
+
+The thing about CVS is that it absolutely sucks as a source control
+manager, and you'll thus be happy with almost anything else. git,
+however, may be a bit 'too' different (read: "good") for your taste, and
+does a lot of things differently. 
+
+One particular suckage of CVS is very hard to work around: CVS is
+basically a tool for tracking 'file' history, while git is a tool for
+tracking 'project' history.  This sometimes causes problems if you are
+used to doing very strange things in CVS, in particular if you're doing
+things like making branches of just a subset of the project.  git can't
+track that, since git never tracks things on the level of an individual
+file, only on the whole project level. 
+
+The good news is that most people don't do that, and in fact most sane
+people think it's a bug in CVS that makes it tag (and check in changes)
+one file at a time.  So most projects you'll ever see will use CVS
+'as if' it was sane.  In which case you'll find it very easy indeed to
+move over to git. 
+
+First off: this is not a git tutorial. See
+link:tutorial.html[Documentation/tutorial.txt] for how git
+actually works. This is more of a random collection of gotcha's
+and notes on converting from CVS to git.
+
+Second: CVS has the notion of a "repository" as opposed to the thing
+that you're actually working in (your working directory, or your
+"checked out tree").  git does not have that notion at all, and all git
+working directories 'are' the repositories.  However, you can easily
+emulate the CVS model by having one special "global repository", which
+people can synchronize with.  See details later, but in the meantime
+just keep in mind that with git, every checked out working tree will
+have a full revision control history of its own.
+
+
+Importing a CVS archive
+-----------------------
+
+Ok, you have an old project, and you want to at least give git a chance
+to see how it performs. The first thing you want to do (after you've
+gone through the git tutorial, and generally familiarized yourself with
+how to commit stuff etc in git) is to create a git'ified version of your
+CVS archive.
+
+Happily, that's very easy indeed. git will do it for you, although git
+will need the help of a program called "cvsps":
+
+       http://www.cobite.com/cvsps/
+
+which is not actually related to git at all, but which makes CVS usage
+look almost sane (ie you almost certainly want to have it even if you
+decide to stay with CVS). However, git will want 'at least' version 2.1
+of cvsps (available at the address above), and in fact will currently
+refuse to work with anything else.
+
+Once you've gotten (and installed) cvsps, you may or may not want to get
+any more familiar with it, but make sure it is in your path. After that,
+the magic command line is
+
+       git cvsimport -v -d <cvsroot> -C <destination> <module>
+
+which will do exactly what you'd think it does: it will create a git
+archive of the named CVS module. The new archive will be created in the
+subdirectory named <destination>; it'll be created if it doesn't exist.
+Default is the local directory.
+
+It can take some time to actually do the conversion for a large archive
+since it involves checking out from CVS every revision of every file,
+and the conversion script is reasonably chatty unless you omit the '-v'
+option, but on some not very scientific tests it averaged about twenty
+revisions per second, so a medium-sized project should not take more
+than a couple of minutes.  For larger projects or remote repositories,
+the process may take longer.
+
+After the (initial) import is done, the CVS archive's current head
+revision will be checked out -- thus, you can start adding your own
+changes right away.
+
+The import is incremental, i.e. if you call it again next month it'll
+fetch any CVS updates that have been happening in the meantime. The
+cut-off is date-based, so don't change the branches that were imported
+from CVS.
+
+You can merge those updates (or, in fact, a different CVS branch) into
+your main branch:
+
+       git resolve HEAD origin "merge with current CVS HEAD"
+
+The HEAD revision from CVS is named "origin", not "HEAD", because git
+already uses "HEAD". (If you don't like 'origin', use cvsimport's
+'-o' option to change it.)
+
+
+Emulating CVS behaviour
+-----------------------
+
+
+So, by now you are convinced you absolutely want to work with git, but
+at the same time you absolutely have to have a central repository.
+Step back and think again. Okay, you still need a single central
+repository? There are several ways to go about that:
+
+1. Designate a person responsible to pull all branches. Make the
+repository of this person public, and make every team member
+pull regularly from it.
+
+2. Set up a public repository with read/write access for every team
+member. Use "git pull/push" as you used "cvs update/commit".  Be
+sure that your repository is up to date before pushing, just
+like you used to do with "cvs commit"; your push will fail if
+what you are pushing is not up to date.
+
+3. Make the repository of every team member public. It is the
+responsibility of each single member to pull from every other
+team member.
+
+
+CVS annotate
+------------
+
+So, something has gone wrong, and you don't know whom to blame, and
+you're an ex-CVS user and used to do "cvs annotate" to see who caused
+the breakage. You're looking for the "git annotate", and it's just
+claiming not to find such a script. You're annoyed.
+
+Yes, that's right.  Core git doesn't do "annotate", although it's
+technically possible, and there are at least two specialized scripts out
+there that can be used to get equivalent information (see the git
+mailing list archives for details). 
+
+git has a couple of alternatives, though, that you may find sufficient
+or even superior depending on your use.  One is called "git-whatchanged"
+(for obvious reasons) and the other one is called "pickaxe" ("a tool for
+the software archeologist"). 
+
+The "git-whatchanged" script is a truly trivial script that can give you
+a good overview of what has changed in a file or a directory (or an
+arbitrary list of files or directories).  The "pickaxe" support is an
+additional layer that can be used to further specify exactly what you're
+looking for, if you already know the specific area that changed.
+
+Let's step back a bit and think about the reason why you would
+want to do "cvs annotate a-file.c" to begin with.
+
+You would use "cvs annotate" on a file when you have trouble
+with a function (or even a single "if" statement in a function)
+that happens to be defined in the file, which does not do what
+you want it to do.  And you would want to find out why it was
+written that way, because you are about to modify it to suit
+your needs, and at the same time you do not want to break its
+current callers.  For that, you are trying to find out why the
+original author did things that way in the original context.
+
+Many times, it may be enough to see the commit log messages of
+commits that touch the file in question, possibly along with the
+patches themselves, like this:
+
+       $ git-whatchanged -p a-file.c
+
+This will show log messages and patches for each commit that
+touches a-file.
+
+This, however, may not be very useful when this file has many
+modifications that are not related to the piece of code you are
+interested in.  You would see many log messages and patches that
+do not have anything to do with the piece of code you are
+interested in.  As an example, assuming that you have this piece
+of code that you are interested in in the HEAD version:
+
+       if (frotz) {
+               nitfol();
+       }
+
+you would use git-rev-list and git-diff-tree like this:
+
+       $ git-rev-list HEAD |
+         git-diff-tree --stdin -v -p -S'if (frotz) {
+               nitfol();
+       }'
+
+We have already talked about the "\--stdin" form of git-diff-tree
+command that reads the list of commits and compares each commit
+with its parents (otherwise you should go back and read the tutorial).
+The git-whatchanged command internally runs
+the equivalent of the above command, and can be used like this:
+
+       $ git-whatchanged -p -S'if (frotz) {
+               nitfol();
+       }'
+
+When the -S option is used, git-diff-tree command outputs
+differences between two commits only if one tree has the
+specified string in a file and the corresponding file in the
+other tree does not.  The above example looks for a commit that
+has the "if" statement in it in a file, but its parent commit
+does not have it in the same shape in the corresponding file (or
+the other way around, where the parent has it and the commit
+does not), and the differences between them are shown, along
+with the commit message (thanks to the -v flag).  It does not
+show anything for commits that do not touch this "if" statement.
+
+Also, in the original context, the same statement might have
+appeared at first in a different file and later the file was
+renamed to "a-file.c".  CVS annotate would not help you to go
+back across such a rename, but git would still help you in such
+a situation.  For that, you can give the -C flag to
+git-diff-tree, like this:
+
+       $ git-whatchanged -p -C -S'if (frotz) {
+               nitfol();
+       }'
+
+When the -C flag is used, file renames and copies are followed.
+So if the "if" statement in question happens to be in "a-file.c"
+in the current HEAD commit, even if the file was originally
+called "o-file.c" and then renamed in an earlier commit, or if
+the file was created by copying an existing "o-file.c" in an
+earlier commit, you will not lose track.  If the "if" statement
+did not change across such a rename or copy, then the commit that
+does rename or copy would not show in the output, and if the
+"if" statement was modified while the file was still called
+"o-file.c", it would find the commit that changed the statement
+when it was in "o-file.c".
+
+NOTE: The current version of "git-diff-tree -C" is not eager
+  enough to find copies, and it will miss the fact that a-file.c
+  was created by copying o-file.c unless o-file.c was somehow
+  changed in the same commit.
+
+You can use the --pickaxe-all flag in addition to the -S flag.
+This causes the differences from all the files contained in
+those two commits, not just the differences between the files
+that contain this changed "if" statement:
+
+       $ git-whatchanged -p -C -S'if (frotz) {
+               nitfol();
+       }' --pickaxe-all
+
+NOTE: This option is called "--pickaxe-all" because -S
+  option is internally called "pickaxe", a tool for software
+  archaeologists.
diff --git a/diff-format.txt b/diff-format.txt
new file mode 100644 (file)
index 0000000..97756ec
--- /dev/null
@@ -0,0 +1,148 @@
+The output format from "git-diff-index", "git-diff-tree" and
+"git-diff-files" are very similar.
+
+These commands all compare two sets of things; what is 
+compared differs:
+
+git-diff-index <tree-ish>::
+        compares the <tree-ish> and the files on the filesystem.
+
+git-diff-index --cached <tree-ish>::
+        compares the <tree-ish> and the index.
+
+git-diff-tree [-r] <tree-ish-1> <tree-ish-2> [<pattern>...]::
+        compares the trees named by the two arguments.
+
+git-diff-files [<pattern>...]::
+        compares the index and the files on the filesystem.
+
+
+An output line is formatted this way:
+
+------------------------------------------------
+in-place edit  :100644 100644 bcd1234... 0123456... M file0
+copy-edit      :100644 100644 abcd123... 1234567... C68 file1 file2
+rename-edit    :100644 100644 abcd123... 1234567... R86 file1 file3
+create         :000000 100644 0000000... 1234567... A file4
+delete         :100644 000000 1234567... 0000000... D file5
+unmerged       :000000 000000 0000000... 0000000... U file6
+------------------------------------------------
+
+That is, from the left to the right:
+
+. a colon.
+. mode for "src"; 000000 if creation or unmerged.
+. a space.
+. mode for "dst"; 000000 if deletion or unmerged.
+. a space.
+. sha1 for "src"; 0\{40\} if creation or unmerged.
+. a space.
+. sha1 for "dst"; 0\{40\} if creation, unmerged or "look at work tree".
+. a space.
+. status, followed by optional "score" number.
+. a tab or a NUL when '-z' option is used.
+. path for "src"
+. a tab or a NUL when '-z' option is used; only exists for C or R.
+. path for "dst"; only exists for C or R.
+. an LF or a NUL when '-z' option is used, to terminate the record.
+
+<sha1> is shown as all 0's if a file is new on the filesystem
+and it is out of sync with the index.
+
+Example:
+
+------------------------------------------------
+:100644 100644 5be4a4...... 000000...... M file.c
+------------------------------------------------
+
+When `-z` option is not used, TAB, LF, and backslash characters
+in pathnames are represented as `\t`, `\n`, and `\\`,
+respectively.
+
+
+Generating patches with -p
+--------------------------
+
+When "git-diff-index", "git-diff-tree", or "git-diff-files" are run
+with a '-p' option, they do not produce the output described above;
+instead they produce a patch file.
+
+The patch generation can be customized at two levels.
+
+1. When the environment variable 'GIT_EXTERNAL_DIFF' is not set,
+   these commands internally invoke "diff" like this:
+
+      diff -L a/<path> -L b/<path> -pu <old> <new>
++
+For added files, `/dev/null` is used for <old>.  For removed
+files, `/dev/null` is used for <new>
++
+The "diff" formatting options can be customized via the
+environment variable 'GIT_DIFF_OPTS'.  For example, if you
+prefer context diff:
+
+      GIT_DIFF_OPTS=-c git-diff-index -p HEAD
+
+
+2. When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
+   program named by it is called, instead of the diff invocation
+   described above.
++
+For a path that is added, removed, or modified,
+'GIT_EXTERNAL_DIFF' is called with 7 parameters:
+
+     path old-file old-hex old-mode new-file new-hex new-mode
++
+where:
+
+     <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
+                     contents of <old|new>,
+     <old|new>-hex:: are the 40-hexdigit SHA1 hashes,
+     <old|new>-mode:: are the octal representation of the file modes.
+
++ 
+The file parameters can point at the user's working file
+(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
+when a new file is added), or a temporary file (e.g. `old-file` in the
+index).  'GIT_EXTERNAL_DIFF' should not worry about unlinking the
+temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
+
+For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
+parameter, <path>.
+
+
+git specific extension to diff format
+-------------------------------------
+
+What -p option produces is slightly different from the
+traditional diff format.
+
+1.   It is preceeded with a "git diff" header, that looks like
+     this:
+
+     diff --git a/file1 b/file2
++
+The `a/` and `b/` filenames are the same unless rename/copy is
+involved.  Especially, even for a creation or a deletion,
+`/dev/null` is _not_ used in place of `a/` or `b/` filenames.
++
+When rename/copy is involved, `file1` and `file2` show the
+name of the source file of the rename/copy and the name of
+the file that rename/copy produces, respectively.
+
+2.   It is followed by one or more extended header lines:
+
+       old mode <mode>
+       new mode <mode>
+       deleted file mode <mode>
+       new file mode <mode>
+       copy from <path>
+       copy to <path>
+       rename from <path>
+       rename to <path>
+       similarity index <number>
+       dissimilarity index <number>
+       index <hash>..<hash> <mode>
+
+3.  TAB, LF, and backslash characters in pathnames are
+    represented as `\t`, `\n`, and `\\`, respectively.
diff --git a/diff-options.txt b/diff-options.txt
new file mode 100644 (file)
index 0000000..9e574a0
--- /dev/null
@@ -0,0 +1,70 @@
+-p::
+       Generate patch (see section on generating patches)
+
+-u::
+       Synonym for "-p".
+
+-z::
+       \0 line termination on output
+
+--name-only::
+       Show only names of changed files.
+
+--name-status::
+       Show only names and status of changed files.
+
+--full-index::
+       Instead of the first handful characters, show full
+       object name of pre- and post-image blob on the "index"
+       line when generating a patch format output.     
+
+--abbrev[=<n>]::
+       Instead of showing the full 40-byte hexadecimal object
+       name in diff-raw format output and diff-tree header
+       lines, show only handful dhexigits prefix.  This is
+       independent of --full-index option above, which controls
+       the diff-patch output format.  Non default number of
+       digits can be specified with --abbrev=<n>.
+
+-B::
+       Break complete rewrite changes into pairs of delete and create.
+
+-M::
+       Detect renames.
+
+-C::
+       Detect copies as well as renames.
+
+--find-copies-harder::
+       For performance reasons, by default, -C option finds copies only 
+       if the original file of the copy was modified in the same 
+       changeset.  This flag makes the command
+       inspect unmodified files as candidates for the source of
+       copy.  This is a very expensive operation for large
+       projects, so use it with caution.
+
+-l<num>::
+       -M and -C options require O(n^2) processing time where n
+       is the number of potential rename/copy targets.  This
+       option prevents rename/copy detection from running if
+       the number of rename/copy targets exceeds the specified
+       number.
+
+-S<string>::
+       Look for differences that contain the change in <string>.
+
+--pickaxe-all::
+       When -S finds a change, show all the changes in that
+       changeset, not just the files that contain the change
+       in <string>.
+
+-O<orderfile>::
+       Output the patch in the order specified in the
+       <orderfile>, which has one shell glob pattern per line.
+
+-R::
+       Swap two inputs; that is, show differences from index or
+       on-disk file to tree contents.
+
+For more detailed explanation on these common options, see also
+link:diffcore.html[diffcore documentation].
diff --git a/diffcore.html b/diffcore.html
new file mode 100644 (file)
index 0000000..4c3b6af
--- /dev/null
@@ -0,0 +1,554 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>Tweaking diff output</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>Tweaking diff output</h1>\r
+<span id="author">June 2005</span><br />\r
+</div>\r
+<h2>Introduction</h2>\r
+<div class="sectionbody">\r
+<p>The diff commands git-diff-index, git-diff-files, git-diff-tree, and\r
+git-diff-stages can be told to manipulate differences they find in\r
+unconventional ways before showing diff(1) output.  The manipulation\r
+is collectively called "diffcore transformation".  This short note\r
+describes what they are and how to use them to produce diff outputs\r
+that are easier to understand than the conventional kind.</p>\r
+</div>\r
+<h2>The chain of operation</h2>\r
+<div class="sectionbody">\r
+<p>The git-diff-* family works by first comparing two sets of\r
+files:</p>\r
+<ul>\r
+<li>\r
+<p>\r
+git-diff-index compares contents of a "tree" object and the\r
+   working directory (when <em>--cached</em> flag is not used) or a\r
+   "tree" object and the index file (when <em>--cached</em> flag is\r
+   used);\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+git-diff-files compares contents of the index file and the\r
+   working directory;\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+git-diff-tree compares contents of two "tree" objects;\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+git-diff-stages compares contents of blobs at two stages in an\r
+   unmerged index file.\r
+</p>\r
+</li>\r
+</ul>\r
+<p>In all of these cases, the commands themselves compare\r
+corresponding paths in the two sets of files.  The result of\r
+comparison is passed from these commands to what is internally\r
+called "diffcore", in a format similar to what is output when\r
+the -p option is not used.  E.g.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>in-place edit  :100644 100644 bcd1234... 0123456... M file0\r
+create         :000000 100644 0000000... 1234567... A file4\r
+delete         :100644 000000 1234567... 0000000... D file5\r
+unmerged       :000000 000000 0000000... 0000000... U file6</tt></pre>\r
+</div></div>\r
+<p>The diffcore mechanism is fed a list of such comparison results\r
+(each of which is called "filepair", although at this point each\r
+of them talks about a single file), and transforms such a list\r
+into another list.  There are currently 6 such transformations:</p>\r
+<ul>\r
+<li>\r
+<p>\r
+diffcore-pathspec\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+diffcore-break\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+diffcore-rename\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+diffcore-merge-broken\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+diffcore-pickaxe\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+diffcore-order\r
+</p>\r
+</li>\r
+</ul>\r
+<p>These are applied in sequence.  The set of filepairs git-diff-*\r
+commands find are used as the input to diffcore-pathspec, and\r
+the output from diffcore-pathspec is used as the input to the\r
+next transformation.  The final result is then passed to the\r
+output routine and generates either diff-raw format (see Output\r
+format sections of the manual for git-diff-* commands) or\r
+diff-patch format.</p>\r
+</div>\r
+<h2>diffcore-pathspec: For Ignoring Files Outside Our Consideration</h2>\r
+<div class="sectionbody">\r
+<p>The first transformation in the chain is diffcore-pathspec, and\r
+is controlled by giving the pathname parameters to the\r
+git-diff-* commands on the command line.  The pathspec is used\r
+to limit the world diff operates in.  It removes the filepairs\r
+outside the specified set of pathnames.  E.g. If the input set\r
+of filepairs included:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>:100644 100644 bcd1234... 0123456... M junkfile</tt></pre>\r
+</div></div>\r
+<p>but the command invocation was "git-diff-files myfile", then the\r
+junkfile entry would be removed from the list because only "myfile"\r
+is under consideration.</p>\r
+<p>Implementation note.  For performance reasons, git-diff-tree\r
+uses the pathname parameters on the command line to cull set of\r
+filepairs it feeds the diffcore mechanism itself, and does not\r
+use diffcore-pathspec, but the end result is the same.</p>\r
+</div>\r
+<h2>diffcore-break: For Splitting Up "Complete Rewrites"</h2>\r
+<div class="sectionbody">\r
+<p>The second transformation in the chain is diffcore-break, and is\r
+controlled by the -B option to the git-diff-* commands.  This is\r
+used to detect a filepair that represents "complete rewrite" and\r
+break such filepair into two filepairs that represent delete and\r
+create.  E.g.  If the input contained this filepair:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>:100644 100644 bcd1234... 0123456... M file0</tt></pre>\r
+</div></div>\r
+<p>and if it detects that the file "file0" is completely rewritten,\r
+it changes it to:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>:100644 000000 bcd1234... 0000000... D file0\r
+:000000 100644 0000000... 0123456... A file0</tt></pre>\r
+</div></div>\r
+<p>For the purpose of breaking a filepair, diffcore-break examines\r
+the extent of changes between the contents of the files before\r
+and after modification (i.e. the contents that have "bcd1234&#8230;"\r
+and "0123456&#8230;" as their SHA1 content ID, in the above\r
+example).  The amount of deletion of original contents and\r
+insertion of new material are added together, and if it exceeds\r
+the "break score", the filepair is broken into two.  The break\r
+score defaults to 50% of the size of the smaller of the original\r
+and the result (i.e. if the edit shrinks the file, the size of\r
+the result is used; if the edit lengthens the file, the size of\r
+the original is used), and can be customized by giving a number\r
+after "-B" option (e.g. "-B75" to tell it to use 75%).</p>\r
+</div>\r
+<h2>diffcore-rename: For Detection Renames and Copies</h2>\r
+<div class="sectionbody">\r
+<p>This transformation is used to detect renames and copies, and is\r
+controlled by the -M option (to detect renames) and the -C option\r
+(to detect copies as well) to the git-diff-* commands.  If the\r
+input contained these filepairs:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>:100644 000000 0123456... 0000000... D fileX\r
+:000000 100644 0000000... 0123456... A file0</tt></pre>\r
+</div></div>\r
+<p>and the contents of the deleted file fileX is similar enough to\r
+the contents of the created file file0, then rename detection\r
+merges these filepairs and creates:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>:100644 100644 0123456... 0123456... R100 fileX file0</tt></pre>\r
+</div></div>\r
+<p>When the "-C" option is used, the original contents of modified files,\r
+and deleted files (and also unmodified files, if the\r
+"--find-copies-harder" option is used) are considered as candidates\r
+of the source files in rename/copy operation.  If the input were like\r
+these filepairs, that talk about a modified file fileY and a newly\r
+created file file0:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>:100644 100644 0123456... 1234567... M fileY\r
+:000000 100644 0000000... bcd3456... A file0</tt></pre>\r
+</div></div>\r
+<p>the original contents of fileY and the resulting contents of\r
+file0 are compared, and if they are similar enough, they are\r
+changed to:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>:100644 100644 0123456... 1234567... M fileY\r
+:100644 100644 0123456... bcd3456... C100 fileY file0</tt></pre>\r
+</div></div>\r
+<p>In both rename and copy detection, the same "extent of changes"\r
+algorithm used in diffcore-break is used to determine if two\r
+files are "similar enough", and can be customized to use\r
+a similarity score different from the default of 50% by giving a\r
+number after the "-M" or "-C" option (e.g. "-M8" to tell it to use\r
+8/10 = 80%).</p>\r
+<p>Note.  When the "-C" option is used with <tt>--find-copies-harder</tt>\r
+option, git-diff-* commands feed unmodified filepairs to\r
+diffcore mechanism as well as modified ones.  This lets the copy\r
+detector consider unmodified files as copy source candidates at\r
+the expense of making it slower.  Without <tt>--find-copies-harder</tt>,\r
+git-diff-* commands can detect copies only if the file that was\r
+copied happened to have been modified in the same changeset.</p>\r
+</div>\r
+<h2>diffcore-merge-broken: For Putting "Complete Rewrites" Back Together</h2>\r
+<div class="sectionbody">\r
+<p>This transformation is used to merge filepairs broken by\r
+diffcore-break, and not transformed into rename/copy by\r
+diffcore-rename, back into a single modification.  This always\r
+runs when diffcore-break is used.</p>\r
+<p>For the purpose of merging broken filepairs back, it uses a\r
+different "extent of changes" computation from the ones used by\r
+diffcore-break and diffcore-rename.  It counts only the deletion\r
+from the original, and does not count insertion.  If you removed\r
+only 10 lines from a 100-line document, even if you added 910\r
+new lines to make a new 1000-line document, you did not do a\r
+complete rewrite.  diffcore-break breaks such a case in order to\r
+help diffcore-rename to consider such filepairs as candidate of\r
+rename/copy detection, but if filepairs broken that way were not\r
+matched with other filepairs to create rename/copy, then this\r
+transformation merges them back into the original\r
+"modification".</p>\r
+<p>The "extent of changes" parameter can be tweaked from the\r
+default 80% (that is, unless more than 80% of the original\r
+material is deleted, the broken pairs are merged back into a\r
+single modification) by giving a second number to -B option,\r
+like these:</p>\r
+<ul>\r
+<li>\r
+<p>\r
+-B50/60 (give 50% "break score" to diffcore-break, use 60%\r
+  for diffcore-merge-broken).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+-B/60 (the same as above, since diffcore-break defaults to 50%).\r
+</p>\r
+</li>\r
+</ul>\r
+<p>Note that earlier implementation left a broken pair as a separate\r
+creation and deletion patches.  This was an unnecessary hack and\r
+the latest implementation always merges all the broken pairs\r
+back into modifications, but the resulting patch output is\r
+formatted differently for easier review in case of such\r
+a complete rewrite by showing the entire contents of old version\r
+prefixed with <em>-</em>, followed by the entire contents of new\r
+version prefixed with <em>+</em>.</p>\r
+</div>\r
+<h2>diffcore-pickaxe: For Detecting Addition/Deletion of Specified String</h2>\r
+<div class="sectionbody">\r
+<p>This transformation is used to find filepairs that represent\r
+changes that touch a specified string, and is controlled by the\r
+-S option and the <tt>--pickaxe-all</tt> option to the git-diff-*\r
+commands.</p>\r
+<p>When diffcore-pickaxe is in use, it checks if there are\r
+filepairs whose "original" side has the specified string and\r
+whose "result" side does not.  Such a filepair represents "the\r
+string appeared in this changeset".  It also checks for the\r
+opposite case that loses the specified string.</p>\r
+<p>When <tt>--pickaxe-all</tt> is not in effect, diffcore-pickaxe leaves\r
+only such filepairs that touch the specified string in its\r
+output.  When <tt>--pickaxe-all</tt> is used, diffcore-pickaxe leaves all\r
+filepairs intact if there is such a filepair, or makes the\r
+output empty otherwise.  The latter behaviour is designed to\r
+make reviewing of the changes in the context of the whole\r
+changeset easier.</p>\r
+</div>\r
+<h2>diffcore-order: For Sorting the Output Based on Filenames</h2>\r
+<div class="sectionbody">\r
+<p>This is used to reorder the filepairs according to the user's\r
+(or project's) taste, and is controlled by the -O option to the\r
+git-diff-* commands.</p>\r
+<p>This takes a text file each of whose lines is a shell glob\r
+pattern.  Filepairs that match a glob pattern on an earlier line\r
+in the file are output before ones that match a later line, and\r
+filepairs that do not match any glob pattern are output last.</p>\r
+<p>As an example, a typical orderfile for the core git probably\r
+would look like this:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>README\r
+Makefile\r
+Documentation\r
+*.h\r
+*.c\r
+t</tt></pre>\r
+</div></div>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:17:07 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/diffcore.txt b/diffcore.txt
new file mode 100644 (file)
index 0000000..cb4e562
--- /dev/null
@@ -0,0 +1,275 @@
+Tweaking diff output
+====================
+June 2005
+
+
+Introduction
+------------
+
+The diff commands git-diff-index, git-diff-files, git-diff-tree, and
+git-diff-stages can be told to manipulate differences they find in
+unconventional ways before showing diff(1) output.  The manipulation
+is collectively called "diffcore transformation".  This short note
+describes what they are and how to use them to produce diff outputs
+that are easier to understand than the conventional kind.
+
+
+The chain of operation
+----------------------
+
+The git-diff-* family works by first comparing two sets of
+files:
+
+ - git-diff-index compares contents of a "tree" object and the
+   working directory (when '\--cached' flag is not used) or a
+   "tree" object and the index file (when '\--cached' flag is
+   used);
+
+ - git-diff-files compares contents of the index file and the
+   working directory;
+
+ - git-diff-tree compares contents of two "tree" objects;
+
+ - git-diff-stages compares contents of blobs at two stages in an
+   unmerged index file.
+
+In all of these cases, the commands themselves compare
+corresponding paths in the two sets of files.  The result of
+comparison is passed from these commands to what is internally
+called "diffcore", in a format similar to what is output when
+the -p option is not used.  E.g.
+
+------------------------------------------------
+in-place edit  :100644 100644 bcd1234... 0123456... M file0
+create         :000000 100644 0000000... 1234567... A file4
+delete         :100644 000000 1234567... 0000000... D file5
+unmerged       :000000 000000 0000000... 0000000... U file6
+------------------------------------------------
+
+The diffcore mechanism is fed a list of such comparison results
+(each of which is called "filepair", although at this point each
+of them talks about a single file), and transforms such a list
+into another list.  There are currently 6 such transformations:
+
+- diffcore-pathspec
+- diffcore-break
+- diffcore-rename
+- diffcore-merge-broken
+- diffcore-pickaxe
+- diffcore-order
+
+These are applied in sequence.  The set of filepairs git-diff-\*
+commands find are used as the input to diffcore-pathspec, and
+the output from diffcore-pathspec is used as the input to the
+next transformation.  The final result is then passed to the
+output routine and generates either diff-raw format (see Output
+format sections of the manual for git-diff-\* commands) or
+diff-patch format.
+
+
+diffcore-pathspec: For Ignoring Files Outside Our Consideration
+---------------------------------------------------------------
+
+The first transformation in the chain is diffcore-pathspec, and
+is controlled by giving the pathname parameters to the
+git-diff-* commands on the command line.  The pathspec is used
+to limit the world diff operates in.  It removes the filepairs
+outside the specified set of pathnames.  E.g. If the input set 
+of filepairs included:
+
+------------------------------------------------
+:100644 100644 bcd1234... 0123456... M junkfile
+------------------------------------------------
+
+but the command invocation was "git-diff-files myfile", then the
+junkfile entry would be removed from the list because only "myfile"
+is under consideration.
+
+Implementation note.  For performance reasons, git-diff-tree
+uses the pathname parameters on the command line to cull set of
+filepairs it feeds the diffcore mechanism itself, and does not
+use diffcore-pathspec, but the end result is the same.
+
+
+diffcore-break: For Splitting Up "Complete Rewrites"
+----------------------------------------------------
+
+The second transformation in the chain is diffcore-break, and is
+controlled by the -B option to the git-diff-* commands.  This is
+used to detect a filepair that represents "complete rewrite" and
+break such filepair into two filepairs that represent delete and
+create.  E.g.  If the input contained this filepair:
+
+------------------------------------------------
+:100644 100644 bcd1234... 0123456... M file0
+------------------------------------------------
+
+and if it detects that the file "file0" is completely rewritten,
+it changes it to:
+
+------------------------------------------------
+:100644 000000 bcd1234... 0000000... D file0
+:000000 100644 0000000... 0123456... A file0
+------------------------------------------------
+
+For the purpose of breaking a filepair, diffcore-break examines
+the extent of changes between the contents of the files before
+and after modification (i.e. the contents that have "bcd1234..."
+and "0123456..." as their SHA1 content ID, in the above
+example).  The amount of deletion of original contents and
+insertion of new material are added together, and if it exceeds
+the "break score", the filepair is broken into two.  The break
+score defaults to 50% of the size of the smaller of the original
+and the result (i.e. if the edit shrinks the file, the size of
+the result is used; if the edit lengthens the file, the size of
+the original is used), and can be customized by giving a number
+after "-B" option (e.g. "-B75" to tell it to use 75%).
+
+
+diffcore-rename: For Detection Renames and Copies
+-------------------------------------------------
+
+This transformation is used to detect renames and copies, and is
+controlled by the -M option (to detect renames) and the -C option
+(to detect copies as well) to the git-diff-* commands.  If the
+input contained these filepairs:
+
+------------------------------------------------
+:100644 000000 0123456... 0000000... D fileX
+:000000 100644 0000000... 0123456... A file0
+------------------------------------------------
+
+and the contents of the deleted file fileX is similar enough to
+the contents of the created file file0, then rename detection
+merges these filepairs and creates:
+
+------------------------------------------------
+:100644 100644 0123456... 0123456... R100 fileX file0
+------------------------------------------------
+
+When the "-C" option is used, the original contents of modified files,
+and deleted files (and also unmodified files, if the
+"\--find-copies-harder" option is used) are considered as candidates
+of the source files in rename/copy operation.  If the input were like
+these filepairs, that talk about a modified file fileY and a newly
+created file file0:
+
+------------------------------------------------
+:100644 100644 0123456... 1234567... M fileY
+:000000 100644 0000000... bcd3456... A file0
+------------------------------------------------
+
+the original contents of fileY and the resulting contents of
+file0 are compared, and if they are similar enough, they are
+changed to:
+
+------------------------------------------------
+:100644 100644 0123456... 1234567... M fileY
+:100644 100644 0123456... bcd3456... C100 fileY file0
+------------------------------------------------
+
+In both rename and copy detection, the same "extent of changes"
+algorithm used in diffcore-break is used to determine if two
+files are "similar enough", and can be customized to use
+a similarity score different from the default of 50% by giving a
+number after the "-M" or "-C" option (e.g. "-M8" to tell it to use
+8/10 = 80%).
+
+Note.  When the "-C" option is used with `\--find-copies-harder`
+option, git-diff-\* commands feed unmodified filepairs to
+diffcore mechanism as well as modified ones.  This lets the copy
+detector consider unmodified files as copy source candidates at
+the expense of making it slower.  Without `\--find-copies-harder`,
+git-diff-\* commands can detect copies only if the file that was
+copied happened to have been modified in the same changeset.
+
+
+diffcore-merge-broken: For Putting "Complete Rewrites" Back Together
+--------------------------------------------------------------------
+
+This transformation is used to merge filepairs broken by
+diffcore-break, and not transformed into rename/copy by
+diffcore-rename, back into a single modification.  This always
+runs when diffcore-break is used.
+
+For the purpose of merging broken filepairs back, it uses a
+different "extent of changes" computation from the ones used by
+diffcore-break and diffcore-rename.  It counts only the deletion
+from the original, and does not count insertion.  If you removed
+only 10 lines from a 100-line document, even if you added 910
+new lines to make a new 1000-line document, you did not do a
+complete rewrite.  diffcore-break breaks such a case in order to
+help diffcore-rename to consider such filepairs as candidate of
+rename/copy detection, but if filepairs broken that way were not
+matched with other filepairs to create rename/copy, then this
+transformation merges them back into the original
+"modification".
+
+The "extent of changes" parameter can be tweaked from the
+default 80% (that is, unless more than 80% of the original
+material is deleted, the broken pairs are merged back into a
+single modification) by giving a second number to -B option,
+like these:
+
+* -B50/60 (give 50% "break score" to diffcore-break, use 60%
+  for diffcore-merge-broken).
+
+* -B/60 (the same as above, since diffcore-break defaults to 50%).
+
+Note that earlier implementation left a broken pair as a separate
+creation and deletion patches.  This was an unnecessary hack and
+the latest implementation always merges all the broken pairs
+back into modifications, but the resulting patch output is
+formatted differently for easier review in case of such
+a complete rewrite by showing the entire contents of old version
+prefixed with '-', followed by the entire contents of new
+version prefixed with '+'.
+
+
+diffcore-pickaxe: For Detecting Addition/Deletion of Specified String
+---------------------------------------------------------------------
+
+This transformation is used to find filepairs that represent
+changes that touch a specified string, and is controlled by the
+-S option and the `\--pickaxe-all` option to the git-diff-*
+commands.
+
+When diffcore-pickaxe is in use, it checks if there are
+filepairs whose "original" side has the specified string and
+whose "result" side does not.  Such a filepair represents "the
+string appeared in this changeset".  It also checks for the
+opposite case that loses the specified string.
+
+When `\--pickaxe-all` is not in effect, diffcore-pickaxe leaves
+only such filepairs that touch the specified string in its
+output.  When `\--pickaxe-all` is used, diffcore-pickaxe leaves all
+filepairs intact if there is such a filepair, or makes the
+output empty otherwise.  The latter behaviour is designed to
+make reviewing of the changes in the context of the whole
+changeset easier.
+
+
+diffcore-order: For Sorting the Output Based on Filenames
+---------------------------------------------------------
+
+This is used to reorder the filepairs according to the user's
+(or project's) taste, and is controlled by the -O option to the
+git-diff-* commands.
+
+This takes a text file each of whose lines is a shell glob
+pattern.  Filepairs that match a glob pattern on an earlier line
+in the file are output before ones that match a later line, and
+filepairs that do not match any glob pattern are output last.
+
+As an example, a typical orderfile for the core git probably
+would look like this:
+
+------------------------------------------------
+README
+Makefile
+Documentation
+*.h
+*.c
+t
+------------------------------------------------
+
diff --git a/everyday.html b/everyday.html
new file mode 100644 (file)
index 0000000..a51a09a
--- /dev/null
@@ -0,0 +1,815 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>Everyday GIT With 20 Commands Or So</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>Everyday GIT With 20 Commands Or So</h1>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<p>GIT suite has over 100 commands, and the manual page for each of\r
+them discusses what the command does and how it is used in\r
+detail, but until you know what command should be used in order\r
+to achieve what you want to do, you cannot tell which manual\r
+page to look at, and if you know that already you do not need\r
+the manual.</p>\r
+<p>Does that mean you need to know all of them before you can use\r
+git?  Not at all.  Depending on the role you play, the set of\r
+commands you need to know is slightly different, but in any case\r
+what you need to learn is far smaller than the full set of\r
+commands to carry out your day-to-day work.  This document is to\r
+serve as a cheat-sheet and a set of pointers for people playing\r
+various roles.</p>\r
+<p><a href="#Basic Repository">[Basic Repository]</a> commands are needed by people who has a\r
+repository --- that is everybody, because every working tree of\r
+git is a repository.</p>\r
+<p>In addition, <a href="#Individual Developer (Standalone)">[Individual Developer (Standalone)]</a> commands are\r
+essential for anybody who makes a commit, even for somebody who\r
+works alone.</p>\r
+<p>If you work with other people, you will need commands listed in\r
+<a href="#Individual Developer (Participant)">[Individual Developer (Participant)]</a> section as well.</p>\r
+<p>People who play <a href="#Integrator">[Integrator]</a> role need to learn some more\r
+commands in addition to the above.</p>\r
+<p><a href="#Repository Administration">[Repository Administration]</a> commands are for system\r
+administrators who are responsible to care and feed git\r
+repositories to support developers.</p>\r
+</div>\r
+</div>\r
+<h2>Basic Repository<a id="Basic Repository"></a></h2>\r
+<div class="sectionbody">\r
+<p>Everybody uses these commands to feed and care git repositories.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+<a href="git-init-db.html">git-init-db(1)</a> or <a href="git-clone.html">git-clone(1)</a> to create a\r
+    new repository.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-fsck-objects.html">git-fsck-objects(1)</a> to validate the repository.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-prune.html">git-prune(1)</a> to garbage collect crufts in the\r
+    repository.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-repack.html">git-repack(1)</a> to pack loose objects for efficiency.\r
+</p>\r
+</li>\r
+</ul>\r
+<h3>Examples</h3>\r
+<dl>\r
+<dt>\r
+Check health and remove cruft.\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git fsck-objects <b>(1)</b>\r
+$ git prune\r
+$ git count-objects <b>(2)</b>\r
+$ git repack <b>(3)</b>\r
+$ git prune <b>(4)</b>\r
+\r
+<b>(1)</b> running without "--full" is usually cheap and assures the\r
+repository health reasonably well.\r
+<b>(2)</b> check how many loose objects there are and how much\r
+diskspace is wasted by not repacking.\r
+<b>(3)</b> without "-a" repacks incrementally.  repacking every 4-5MB\r
+of loose objects accumulation may be a good rule of thumb.\r
+<b>(4)</b> after repack, prune removes the duplicate loose objects.</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Repack a small project into single pack.\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git repack -a -d <b>(1)</b>\r
+$ git prune\r
+\r
+<b>(1)</b> pack all the objects reachable from the refs into one pack\r
+and remove unneeded other packs</tt></pre>\r
+</div></div>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Individual Developer (Standalone)<a id="Individual Developer (Standalone)"></a></h2>\r
+<div class="sectionbody">\r
+<p>A standalone individual developer does not exchange patches with\r
+other poeple, and works alone in a single repository, using the\r
+following commands.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+<a href="git-show-branch.html">git-show-branch(1)</a> to see where you are.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-log.html">git-log(1)</a> to see what happened.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-whatchanged.html">git-whatchanged(1)</a> to find out where things have\r
+    come from.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-checkout.html">git-checkout(1)</a> and <a href="git-branch.html">git-branch(1)</a> to switch\r
+    branches.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-add.html">git-add(1)</a> and <a href="git-update-index.html">git-update-index(1)</a> to manage\r
+    the index file.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-diff.html">git-diff(1)</a> and <a href="git-status.html">git-status(1)</a> to see what\r
+    you are in the middle of doing.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-commit.html">git-commit(1)</a> to advance the current branch.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-reset.html">git-reset(1)</a> and <a href="git-checkout.html">git-checkout(1)</a> (with\r
+    pathname parameters) to undo changes.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-pull.html">git-pull(1)</a> with "." as the remote to merge between\r
+    local branches.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-rebase.html">git-rebase(1)</a> to maintain topic branches.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-tag.html">git-tag(1)</a> to mark known point.\r
+</p>\r
+</li>\r
+</ul>\r
+<h3>Examples</h3>\r
+<dl>\r
+<dt>\r
+Extract a tarball and create a working tree and a new repository to keep track of it.\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ tar zxf frotz.tar.gz\r
+$ cd frotz\r
+$ git-init-db\r
+$ git add . <b>(1)</b>\r
+$ git commit -m 'import of frotz source tree.'\r
+$ git tag v2.43 <b>(2)</b>\r
+\r
+<b>(1)</b> add everything under the current directory.\r
+<b>(2)</b> make a lightweight, unannotated tag.</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Create a topic branch and develop.\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout -b alsa-audio <b>(1)</b>\r
+$ edit/compile/test\r
+$ git checkout -- curses/ux_audio_oss.c <b>(2)</b>\r
+$ git add curses/ux_audio_alsa.c <b>(3)</b>\r
+$ edit/compile/test\r
+$ git diff <b>(4)</b>\r
+$ git commit -a -s <b>(5)</b>\r
+$ edit/compile/test\r
+$ git reset --soft HEAD^ <b>(6)</b>\r
+$ edit/compile/test\r
+$ git diff ORIG_HEAD <b>(7)</b>\r
+$ git commit -a -c ORIG_HEAD <b>(8)</b>\r
+$ git checkout master <b>(9)</b>\r
+$ git pull . alsa-audio <b>(10)</b>\r
+$ git log --since='3 days ago' <b>(11)</b>\r
+$ git log v2.43.. curses/ <b>(12)</b>\r
+\r
+<b>(1)</b> create a new topic branch.\r
+<b>(2)</b> revert your botched changes in "curses/ux_audio_oss.c".\r
+<b>(3)</b> you need to tell git if you added a new file; removal and\r
+modification will be caught if you do "commit -a" later.\r
+<b>(4)</b> to see what changes you are committing.\r
+<b>(5)</b> commit everything as you have tested, with your sign-off.\r
+<b>(6)</b> take the last commit back, keeping what is in the working tree.\r
+<b>(7)</b> look at the changes since the premature commit we took back.\r
+<b>(8)</b> redo the commit undone in the previous step, using the message\r
+you originally wrote.\r
+<b>(9)</b> switch to the master branch.\r
+<b>(10)</b> merge a topic branch into your master branch\r
+<b>(11)</b> review commit logs; other forms to limit output can be\r
+combined and include --max-count=10 (show 10 commits), --until='2005-12-10'.\r
+<b>(12)</b> view only the changes that touch what's in curses/\r
+directory, since v2.43 tag.</tt></pre>\r
+</div></div>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Individual Developer (Participant)<a id="Individual Developer (Participant)"></a></h2>\r
+<div class="sectionbody">\r
+<p>A developer working as a participant in a group project needs to\r
+learn how to communicate with others, and uses these commands in\r
+addition to the ones needed by a standalone developer.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+<a href="git-clone.html">git-clone(1)</a> from the upstream to prime your local\r
+    repository.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-pull.html">git-pull(1)</a> and <a href="git-fetch.html">git-fetch(1)</a> from "origin"\r
+    to keep up-to-date with the upstream.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-push.html">git-push(1)</a> to shared repository, if you adopt CVS\r
+    style shared repository workflow.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-format-patch.html">git-format-patch(1)</a> to prepare e-mail submission, if\r
+    you adopt Linux kernel-style public forum workflow.\r
+</p>\r
+</li>\r
+</ul>\r
+<h3>Examples</h3>\r
+<dl>\r
+<dt>\r
+Clone the upstream and work on it.  Feed changes to upstream.\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git clone git://git.kernel.org/pub/scm/.../torvalds/linux-2.6 my2.6\r
+$ cd my2.6\r
+$ edit/compile/test; git commit -a -s <b>(1)</b>\r
+$ git format-patch origin <b>(2)</b>\r
+$ git pull <b>(3)</b>\r
+$ git whatchanged -p ORIG_HEAD.. arch/i386 include/asm-i386 <b>(4)</b>\r
+$ git pull git://git.kernel.org/pub/.../jgarzik/libata-dev.git ALL <b>(5)</b>\r
+$ git reset --hard ORIG_HEAD <b>(6)</b>\r
+$ git prune <b>(7)</b>\r
+$ git fetch --tags <b>(8)</b>\r
+\r
+<b>(1)</b> repeat as needed.\r
+<b>(2)</b> extract patches from your branch for e-mail submission.\r
+<b>(3)</b> "pull" fetches from "origin" by default and merges into the\r
+current branch.\r
+<b>(4)</b> immediately after pulling, look at the changes done upstream\r
+since last time we checked, only in the\r
+area we are interested in.\r
+<b>(5)</b> fetch from a specific branch from a specific repository and merge.\r
+<b>(6)</b> revert the pull.\r
+<b>(7)</b> garbage collect leftover objects from reverted pull.\r
+<b>(8)</b> from time to time, obtain official tags from the "origin"\r
+and store them under .git/refs/tags/.</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Push into another repository.\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>satellite$ git clone mothership:frotz/.git frotz <b>(1)</b>\r
+satellite$ cd frotz\r
+satellite$ cat .git/remotes/origin <b>(2)</b>\r
+URL: mothership:frotz/.git\r
+Pull: master:origin\r
+satellite$ echo 'Push: master:satellite' &gt;&gt;.git/remotes/origin <b>(3)</b>\r
+satellite$ edit/compile/test/commit\r
+satellite$ git push origin <b>(4)</b>\r
+\r
+mothership$ cd frotz\r
+mothership$ git checkout master\r
+mothership$ git pull . satellite <b>(5)</b>\r
+\r
+<b>(1)</b> mothership machine has a frotz repository under your home\r
+directory; clone from it to start a repository on the satellite\r
+machine.\r
+<b>(2)</b> clone creates this file by default.  It arranges "git pull"\r
+to fetch and store the master branch head of mothership machine\r
+to local "origin" branch.\r
+<b>(3)</b> arrange "git push" to push local "master" branch to\r
+"satellite" branch of the mothership machine.\r
+<b>(4)</b> push will stash our work away on "satellite" branch on the\r
+mothership machine.  You could use this as a back-up method.\r
+<b>(5)</b> on mothership machine, merge the work done on the satellite\r
+machine into the master branch.</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Branch off of a specific tag.\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout -b private2.6.14 v2.6.14 <b>(1)</b>\r
+$ edit/compile/test; git commit -a\r
+$ git checkout master\r
+$ git format-patch -k -m --stdout v2.6.14..private2.6.14 |\r
+  git am -3 -k <b>(2)</b>\r
+\r
+<b>(1)</b> create a private branch based on a well known (but somewhat behind)\r
+tag.\r
+<b>(2)</b> forward port all changes in private2.6.14 branch to master branch\r
+without a formal "merging".</tt></pre>\r
+</div></div>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Integrator<a id="Integrator"></a></h2>\r
+<div class="sectionbody">\r
+<p>A fairly central person acting as the integrator in a group\r
+project receives changes made by others, reviews and integrates\r
+them and publishes the result for others to use, using these\r
+commands in addition to the ones needed by participants.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+<a href="git-am.html">git-am(1)</a> to apply patches e-mailed in from your\r
+    contributors.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-pull.html">git-pull(1)</a> to merge from your trusted lieutenants.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-format-patch.html">git-format-patch(1)</a> to prepare and send suggested\r
+    alternative to contributors.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-revert.html">git-revert(1)</a> to undo botched commits.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-push.html">git-push(1)</a> to publish the bleeding edge.\r
+</p>\r
+</li>\r
+</ul>\r
+<h3>Examples</h3>\r
+<dl>\r
+<dt>\r
+My typical GIT day.\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git status <b>(1)</b>\r
+$ git show-branch <b>(2)</b>\r
+$ mailx <b>(3)</b>\r
+&amp; s 2 3 4 5 ./+to-apply\r
+&amp; s 7 8 ./+hold-linus\r
+&amp; q\r
+$ git checkout master\r
+$ git am -3 -i -s -u ./+to-apply <b>(4)</b>\r
+$ compile/test\r
+$ git checkout -b hold/linus &amp;&amp; git am -3 -i -s -u ./+hold-linus <b>(5)</b>\r
+$ git checkout topic/one &amp;&amp; git rebase master <b>(6)</b>\r
+$ git checkout pu &amp;&amp; git reset --hard master <b>(7)</b>\r
+$ git pull . topic/one topic/two &amp;&amp; git pull . hold/linus <b>(8)</b>\r
+$ git checkout maint\r
+$ git cherry-pick master~4 <b>(9)</b>\r
+$ compile/test\r
+$ git tag -s -m 'GIT 0.99.9x' v0.99.9x <b>(10)</b>\r
+$ git fetch ko &amp;&amp; git show-branch master maint 'tags/ko-*' <b>(11)</b>\r
+$ git push ko <b>(12)</b>\r
+$ git push ko v0.99.9x <b>(13)</b>\r
+\r
+<b>(1)</b> see what I was in the middle of doing, if any.\r
+<b>(2)</b> see what topic branches I have and think about how ready\r
+they are.\r
+<b>(3)</b> read mails, save ones that are applicable, and save others\r
+that are not quite ready.\r
+<b>(4)</b> apply them, interactively, with my sign-offs.\r
+<b>(5)</b> create topic branch as needed and apply, again with my\r
+sign-offs.\r
+<b>(6)</b> rebase internal topic branch that has not been merged to the\r
+master, nor exposed as a part of a stable branch.\r
+<b>(7)</b> restart "pu" every time from the master.\r
+<b>(8)</b> and bundle topic branches still cooking.\r
+<b>(9)</b> backport a critical fix.\r
+<b>(10)</b> create a signed tag.\r
+<b>(11)</b> make sure I did not accidentally rewind master beyond what I\r
+already pushed out.  "ko" shorthand points at the repository I have\r
+at kernel.org, and looks like this:\r
+    $ cat .git/remotes/ko\r
+    URL: kernel.org:/pub/scm/git/git.git\r
+    Pull: master:refs/tags/ko-master\r
+    Pull: maint:refs/tags/ko-maint\r
+    Push: master\r
+    Push: +pu\r
+    Push: maint\r
+In the output from "git show-branch", "master" should have\r
+everything "ko-master" has.\r
+<b>(12)</b> push out the bleeding edge.\r
+<b>(13)</b> push the tag out, too.</tt></pre>\r
+</div></div>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Repository Administration<a id="Repository Administration"></a></h2>\r
+<div class="sectionbody">\r
+<p>A repository administrator uses the following tools to set up\r
+and maintain access to the repository by developers.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+<a href="git-daemon.html">git-daemon(1)</a> to allow anonymous download from\r
+    repository.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="git-shell.html">git-shell(1)</a> can be used as a <em>restricted login shell</em>\r
+    for shared central repository users.\r
+</p>\r
+</li>\r
+</ul>\r
+<p><a href="howto/update-hook-example.txt">update hook howto</a> has a good\r
+example of managing a shared central repository.</p>\r
+<h3>Examples</h3>\r
+<dl>\r
+<dt>\r
+Run git-daemon to serve /pub/scm from inetd.\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ grep git /etc/inet.conf\r
+git     stream  tcp     nowait  nobody \\r
+  /usr/bin/git-daemon git-daemon --inetd --syslog --export-all /pub/scm</tt></pre>\r
+</div></div>\r
+<p>The actual configuration line should be on one line.</p>\r
+</dd>\r
+<dt>\r
+Give push/pull only access to developers.\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ grep git /etc/passwd <b>(1)</b>\r
+alice:x:1000:1000::/home/alice:/usr/bin/git-shell\r
+bob:x:1001:1001::/home/bob:/usr/bin/git-shell\r
+cindy:x:1002:1002::/home/cindy:/usr/bin/git-shell\r
+david:x:1003:1003::/home/david:/usr/bin/git-shell\r
+$ grep git /etc/shells <b>(2)</b>\r
+/usr/bin/git-shell\r
+\r
+<b>(1)</b> log-in shell is set to /usr/bin/git-shell, which does not\r
+allow anything but "git push" and "git pull".  The users should\r
+get an ssh access to the machine.\r
+<b>(2)</b> in many distributions /etc/shells needs to list what is used\r
+as the login shell.</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+CVS-style shared repository.\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ grep git /etc/group <b>(1)</b>\r
+git:x:9418:alice,bob,cindy,david\r
+$ cd /home/devo.git\r
+$ ls -l <b>(2)</b>\r
+  lrwxrwxrwx   1 david git    17 Dec  4 22:40 HEAD -&gt; refs/heads/master\r
+  drwxrwsr-x   2 david git  4096 Dec  4 22:40 branches\r
+  -rw-rw-r--   1 david git    84 Dec  4 22:40 config\r
+  -rw-rw-r--   1 david git    58 Dec  4 22:40 description\r
+  drwxrwsr-x   2 david git  4096 Dec  4 22:40 hooks\r
+  -rw-rw-r--   1 david git 37504 Dec  4 22:40 index\r
+  drwxrwsr-x   2 david git  4096 Dec  4 22:40 info\r
+  drwxrwsr-x   4 david git  4096 Dec  4 22:40 objects\r
+  drwxrwsr-x   4 david git  4096 Nov  7 14:58 refs\r
+  drwxrwsr-x   2 david git  4096 Dec  4 22:40 remotes\r
+$ ls -l hooks/update <b>(3)</b>\r
+  -r-xr-xr-x   1 david git  3536 Dec  4 22:40 update\r
+$ cat info/allowed-users <b>(4)</b>\r
+refs/heads/master       alice\|cindy\r
+refs/heads/doc-update   bob\r
+refs/tags/v[0-9]*       david\r
+\r
+<b>(1)</b> place the developers into the same git group.\r
+<b>(2)</b> and make the shared repository writable by the group.\r
+<b>(3)</b> use update-hook example by Carl from Documentation/howto/\r
+for branch policy control.\r
+<b>(4)</b> alice and cindy can push into master, only bob can push into doc-update.\r
+david is the release manager and is the only person who can\r
+create and push version tags.</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+HTTP server to support dumb protocol transfer.\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>dev$ git update-server-info <b>(1)</b>\r
+dev$ ftp user@isp.example.com <b>(2)</b>\r
+ftp&gt; cp -r .git /home/user/myproject.git\r
+\r
+<b>(1)</b> make sure your info/refs and objects/info/packs are up-to-date\r
+<b>(2)</b> upload to public HTTP server hosted by your ISP.</tt></pre>\r
+</div></div>\r
+</dd>\r
+</dl>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:17:10 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/everyday.txt b/everyday.txt
new file mode 100644 (file)
index 0000000..3ab9b91
--- /dev/null
@@ -0,0 +1,441 @@
+Everyday GIT With 20 Commands Or So
+===================================
+
+GIT suite has over 100 commands, and the manual page for each of
+them discusses what the command does and how it is used in
+detail, but until you know what command should be used in order
+to achieve what you want to do, you cannot tell which manual
+page to look at, and if you know that already you do not need
+the manual.
+
+Does that mean you need to know all of them before you can use
+git?  Not at all.  Depending on the role you play, the set of
+commands you need to know is slightly different, but in any case
+what you need to learn is far smaller than the full set of
+commands to carry out your day-to-day work.  This document is to
+serve as a cheat-sheet and a set of pointers for people playing
+various roles.
+
+<<Basic Repository>> commands are needed by people who has a
+repository --- that is everybody, because every working tree of
+git is a repository.
+
+In addition, <<Individual Developer (Standalone)>> commands are
+essential for anybody who makes a commit, even for somebody who
+works alone.
+
+If you work with other people, you will need commands listed in
+<<Individual Developer (Participant)>> section as well.
+
+People who play <<Integrator>> role need to learn some more
+commands in addition to the above.
+
+<<Repository Administration>> commands are for system
+administrators who are responsible to care and feed git
+repositories to support developers.
+
+
+Basic Repository[[Basic Repository]]
+------------------------------------
+
+Everybody uses these commands to feed and care git repositories.
+
+  * gitlink:git-init-db[1] or gitlink:git-clone[1] to create a
+    new repository.
+
+  * gitlink:git-fsck-objects[1] to validate the repository.
+
+  * gitlink:git-prune[1] to garbage collect crufts in the
+    repository.
+
+  * gitlink:git-repack[1] to pack loose objects for efficiency.
+
+Examples
+~~~~~~~~
+
+Check health and remove cruft.::
++
+------------
+$ git fsck-objects <1>
+$ git prune
+$ git count-objects <2>
+$ git repack <3>
+$ git prune <4>
+
+<1> running without "--full" is usually cheap and assures the
+repository health reasonably well.
+<2> check how many loose objects there are and how much
+diskspace is wasted by not repacking.
+<3> without "-a" repacks incrementally.  repacking every 4-5MB
+of loose objects accumulation may be a good rule of thumb.
+<4> after repack, prune removes the duplicate loose objects.
+------------
+
+Repack a small project into single pack.::
++
+------------
+$ git repack -a -d <1>
+$ git prune
+
+<1> pack all the objects reachable from the refs into one pack
+and remove unneeded other packs
+------------
+
+
+Individual Developer (Standalone)[[Individual Developer (Standalone)]]
+----------------------------------------------------------------------
+
+A standalone individual developer does not exchange patches with
+other poeple, and works alone in a single repository, using the
+following commands.
+
+  * gitlink:git-show-branch[1] to see where you are.
+
+  * gitlink:git-log[1] to see what happened.
+
+  * gitlink:git-whatchanged[1] to find out where things have
+    come from.
+
+  * gitlink:git-checkout[1] and gitlink:git-branch[1] to switch
+    branches.
+
+  * gitlink:git-add[1] and gitlink:git-update-index[1] to manage
+    the index file.
+
+  * gitlink:git-diff[1] and gitlink:git-status[1] to see what
+    you are in the middle of doing.
+
+  * gitlink:git-commit[1] to advance the current branch.
+
+  * gitlink:git-reset[1] and gitlink:git-checkout[1] (with
+    pathname parameters) to undo changes.
+
+  * gitlink:git-pull[1] with "." as the remote to merge between
+    local branches.
+
+  * gitlink:git-rebase[1] to maintain topic branches.
+
+  * gitlink:git-tag[1] to mark known point.
+
+Examples
+~~~~~~~~
+
+Extract a tarball and create a working tree and a new repository to keep track of it.::
++
+------------
+$ tar zxf frotz.tar.gz
+$ cd frotz
+$ git-init-db
+$ git add . <1>
+$ git commit -m 'import of frotz source tree.'
+$ git tag v2.43 <2>
+
+<1> add everything under the current directory.
+<2> make a lightweight, unannotated tag.
+------------
+
+Create a topic branch and develop.::
++
+------------
+$ git checkout -b alsa-audio <1>
+$ edit/compile/test
+$ git checkout -- curses/ux_audio_oss.c <2>
+$ git add curses/ux_audio_alsa.c <3>
+$ edit/compile/test
+$ git diff <4>
+$ git commit -a -s <5>
+$ edit/compile/test
+$ git reset --soft HEAD^ <6>
+$ edit/compile/test
+$ git diff ORIG_HEAD <7>
+$ git commit -a -c ORIG_HEAD <8>
+$ git checkout master <9>
+$ git pull . alsa-audio <10>
+$ git log --since='3 days ago' <11>
+$ git log v2.43.. curses/ <12>
+
+<1> create a new topic branch.
+<2> revert your botched changes in "curses/ux_audio_oss.c".
+<3> you need to tell git if you added a new file; removal and
+modification will be caught if you do "commit -a" later.
+<4> to see what changes you are committing.
+<5> commit everything as you have tested, with your sign-off.
+<6> take the last commit back, keeping what is in the working tree.
+<7> look at the changes since the premature commit we took back.
+<8> redo the commit undone in the previous step, using the message
+you originally wrote.
+<9> switch to the master branch.
+<10> merge a topic branch into your master branch
+<11> review commit logs; other forms to limit output can be
+combined and include --max-count=10 (show 10 commits), --until='2005-12-10'.
+<12> view only the changes that touch what's in curses/
+directory, since v2.43 tag.
+------------
+
+
+Individual Developer (Participant)[[Individual Developer (Participant)]]
+------------------------------------------------------------------------
+
+A developer working as a participant in a group project needs to
+learn how to communicate with others, and uses these commands in
+addition to the ones needed by a standalone developer.
+
+  * gitlink:git-clone[1] from the upstream to prime your local
+    repository.
+
+  * gitlink:git-pull[1] and gitlink:git-fetch[1] from "origin"
+    to keep up-to-date with the upstream.
+
+  * gitlink:git-push[1] to shared repository, if you adopt CVS
+    style shared repository workflow.
+
+  * gitlink:git-format-patch[1] to prepare e-mail submission, if
+    you adopt Linux kernel-style public forum workflow.
+
+Examples
+~~~~~~~~
+
+Clone the upstream and work on it.  Feed changes to upstream.::
++
+------------
+$ git clone git://git.kernel.org/pub/scm/.../torvalds/linux-2.6 my2.6
+$ cd my2.6
+$ edit/compile/test; git commit -a -s <1>
+$ git format-patch origin <2>
+$ git pull <3>
+$ git whatchanged -p ORIG_HEAD.. arch/i386 include/asm-i386 <4>
+$ git pull git://git.kernel.org/pub/.../jgarzik/libata-dev.git ALL <5>
+$ git reset --hard ORIG_HEAD <6>
+$ git prune <7>
+$ git fetch --tags <8>
+
+<1> repeat as needed.
+<2> extract patches from your branch for e-mail submission.
+<3> "pull" fetches from "origin" by default and merges into the
+current branch.
+<4> immediately after pulling, look at the changes done upstream
+since last time we checked, only in the
+area we are interested in.
+<5> fetch from a specific branch from a specific repository and merge.
+<6> revert the pull.
+<7> garbage collect leftover objects from reverted pull.
+<8> from time to time, obtain official tags from the "origin"
+and store them under .git/refs/tags/.
+------------
+
+
+Push into another repository.::
++
+------------
+satellite$ git clone mothership:frotz/.git frotz <1>
+satellite$ cd frotz
+satellite$ cat .git/remotes/origin <2>
+URL: mothership:frotz/.git
+Pull: master:origin
+satellite$ echo 'Push: master:satellite' >>.git/remotes/origin <3>
+satellite$ edit/compile/test/commit
+satellite$ git push origin <4>
+
+mothership$ cd frotz
+mothership$ git checkout master
+mothership$ git pull . satellite <5>
+
+<1> mothership machine has a frotz repository under your home
+directory; clone from it to start a repository on the satellite
+machine.
+<2> clone creates this file by default.  It arranges "git pull"
+to fetch and store the master branch head of mothership machine
+to local "origin" branch.
+<3> arrange "git push" to push local "master" branch to
+"satellite" branch of the mothership machine.
+<4> push will stash our work away on "satellite" branch on the
+mothership machine.  You could use this as a back-up method.
+<5> on mothership machine, merge the work done on the satellite
+machine into the master branch.
+------------
+
+Branch off of a specific tag.::
++
+------------
+$ git checkout -b private2.6.14 v2.6.14 <1>
+$ edit/compile/test; git commit -a
+$ git checkout master
+$ git format-patch -k -m --stdout v2.6.14..private2.6.14 |
+  git am -3 -k <2>
+
+<1> create a private branch based on a well known (but somewhat behind)
+tag.
+<2> forward port all changes in private2.6.14 branch to master branch
+without a formal "merging".
+------------
+
+
+Integrator[[Integrator]]
+------------------------
+
+A fairly central person acting as the integrator in a group
+project receives changes made by others, reviews and integrates
+them and publishes the result for others to use, using these
+commands in addition to the ones needed by participants.
+
+  * gitlink:git-am[1] to apply patches e-mailed in from your
+    contributors.
+
+  * gitlink:git-pull[1] to merge from your trusted lieutenants.
+
+  * gitlink:git-format-patch[1] to prepare and send suggested
+    alternative to contributors.
+
+  * gitlink:git-revert[1] to undo botched commits.
+
+  * gitlink:git-push[1] to publish the bleeding edge.
+
+
+Examples
+~~~~~~~~
+
+My typical GIT day.::
++
+------------
+$ git status <1>
+$ git show-branch <2>
+$ mailx <3>
+& s 2 3 4 5 ./+to-apply
+& s 7 8 ./+hold-linus
+& q
+$ git checkout master
+$ git am -3 -i -s -u ./+to-apply <4>
+$ compile/test
+$ git checkout -b hold/linus && git am -3 -i -s -u ./+hold-linus <5>
+$ git checkout topic/one && git rebase master <6>
+$ git checkout pu && git reset --hard master <7>
+$ git pull . topic/one topic/two && git pull . hold/linus <8>
+$ git checkout maint
+$ git cherry-pick master~4 <9>
+$ compile/test
+$ git tag -s -m 'GIT 0.99.9x' v0.99.9x <10>
+$ git fetch ko && git show-branch master maint 'tags/ko-*' <11>
+$ git push ko <12>
+$ git push ko v0.99.9x <13>
+
+<1> see what I was in the middle of doing, if any.
+<2> see what topic branches I have and think about how ready
+they are.
+<3> read mails, save ones that are applicable, and save others
+that are not quite ready.
+<4> apply them, interactively, with my sign-offs.
+<5> create topic branch as needed and apply, again with my
+sign-offs. 
+<6> rebase internal topic branch that has not been merged to the
+master, nor exposed as a part of a stable branch.
+<7> restart "pu" every time from the master.
+<8> and bundle topic branches still cooking.
+<9> backport a critical fix.
+<10> create a signed tag.
+<11> make sure I did not accidentally rewind master beyond what I
+already pushed out.  "ko" shorthand points at the repository I have
+at kernel.org, and looks like this:
+    $ cat .git/remotes/ko
+    URL: kernel.org:/pub/scm/git/git.git
+    Pull: master:refs/tags/ko-master
+    Pull: maint:refs/tags/ko-maint
+    Push: master
+    Push: +pu
+    Push: maint
+In the output from "git show-branch", "master" should have
+everything "ko-master" has.
+<12> push out the bleeding edge.
+<13> push the tag out, too.
+------------
+
+
+Repository Administration[[Repository Administration]]
+------------------------------------------------------
+
+A repository administrator uses the following tools to set up
+and maintain access to the repository by developers.
+
+  * gitlink:git-daemon[1] to allow anonymous download from
+    repository.
+
+  * gitlink:git-shell[1] can be used as a 'restricted login shell'
+    for shared central repository users.
+
+link:howto/update-hook-example.txt[update hook howto] has a good
+example of managing a shared central repository.
+
+
+Examples
+~~~~~~~~
+
+Run git-daemon to serve /pub/scm from inetd.::
++
+------------
+$ grep git /etc/inet.conf
+git    stream  tcp     nowait  nobody \
+  /usr/bin/git-daemon git-daemon --inetd --syslog --export-all /pub/scm
+------------
++
+The actual configuration line should be on one line.
+
+Give push/pull only access to developers.::
++
+------------
+$ grep git /etc/passwd <1>
+alice:x:1000:1000::/home/alice:/usr/bin/git-shell
+bob:x:1001:1001::/home/bob:/usr/bin/git-shell
+cindy:x:1002:1002::/home/cindy:/usr/bin/git-shell
+david:x:1003:1003::/home/david:/usr/bin/git-shell
+$ grep git /etc/shells <2>
+/usr/bin/git-shell
+
+<1> log-in shell is set to /usr/bin/git-shell, which does not
+allow anything but "git push" and "git pull".  The users should
+get an ssh access to the machine.
+<2> in many distributions /etc/shells needs to list what is used
+as the login shell.
+------------
+
+CVS-style shared repository.::
++
+------------
+$ grep git /etc/group <1>
+git:x:9418:alice,bob,cindy,david
+$ cd /home/devo.git
+$ ls -l <2>
+  lrwxrwxrwx   1 david git    17 Dec  4 22:40 HEAD -> refs/heads/master
+  drwxrwsr-x   2 david git  4096 Dec  4 22:40 branches
+  -rw-rw-r--   1 david git    84 Dec  4 22:40 config
+  -rw-rw-r--   1 david git    58 Dec  4 22:40 description
+  drwxrwsr-x   2 david git  4096 Dec  4 22:40 hooks
+  -rw-rw-r--   1 david git 37504 Dec  4 22:40 index
+  drwxrwsr-x   2 david git  4096 Dec  4 22:40 info
+  drwxrwsr-x   4 david git  4096 Dec  4 22:40 objects
+  drwxrwsr-x   4 david git  4096 Nov  7 14:58 refs
+  drwxrwsr-x   2 david git  4096 Dec  4 22:40 remotes
+$ ls -l hooks/update <3>
+  -r-xr-xr-x   1 david git  3536 Dec  4 22:40 update
+$ cat info/allowed-users <4>
+refs/heads/master      alice\|cindy
+refs/heads/doc-update  bob
+refs/tags/v[0-9]*      david
+
+<1> place the developers into the same git group.
+<2> and make the shared repository writable by the group.
+<3> use update-hook example by Carl from Documentation/howto/
+for branch policy control.
+<4> alice and cindy can push into master, only bob can push into doc-update.
+david is the release manager and is the only person who can
+create and push version tags.
+------------
+
+HTTP server to support dumb protocol transfer.::
++
+------------
+dev$ git update-server-info <1>
+dev$ ftp user@isp.example.com <2>
+ftp> cp -r .git /home/user/myproject.git
+
+<1> make sure your info/refs and objects/info/packs are up-to-date
+<2> upload to public HTTP server hosted by your ISP.
+------------
diff --git a/fetch-options.txt b/fetch-options.txt
new file mode 100644 (file)
index 0000000..200c9b2
--- /dev/null
@@ -0,0 +1,24 @@
+-a, \--append::
+       Append ref names and object names of fetched refs to the
+       existing contents of `.git/FETCH_HEAD`.  Without this
+       option old data in `.git/FETCH_HEAD` will be overwritten.
+
+-f, \--force::
+       When `git-fetch` is used with `<rbranch>:<lbranch>`
+       refspec, it refuses to update the local branch
+       `<lbranch>` unless the remote branch `<rbranch>` it
+       fetches is a descendant of `<lbranch>`.  This option
+       overrides that check.
+
+-t, \--tags::
+       By default, the git core utilities will not fetch and store
+       tags under the same name as the remote repository;  ask it
+       to do so using `--tags`.  Using this option will bound the
+       list of objects pulled to the remote tags.  Commits in branches
+       beyond the tags will be ignored.
+
+-u, \--update-head-ok::
+       By default `git-fetch` refuses to update the head which
+       corresponds to the current branch.  This flag disables the
+       check.  Note that fetching into the current branch will not
+       update the index and working directory, so use it with care.
diff --git a/git-add.html b/git-add.html
new file mode 100644 (file)
index 0000000..875931a
--- /dev/null
@@ -0,0 +1,378 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-add(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-add(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-add -\r
+   Add files to the index file.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-add</em> [-n] [-v] &lt;file&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>A simple wrapper for git-update-index to add files to the index,\r
+for people used to do "cvs add".</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;file&gt;&#8230;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Files to add to the index.\r
+</p>\r
+</dd>\r
+<dt>\r
+-n\r
+</dt>\r
+<dd>\r
+<p>\r
+        Don't actually add the file(s), just show if they exist.\r
+</p>\r
+</dd>\r
+<dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+        Be verbose.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>DISCUSSION</h2>\r
+<div class="sectionbody">\r
+<p>The list of &lt;file&gt; given to the command is fed to <tt>git-ls-files</tt>\r
+command to list files that are not registerd in the index and\r
+are not ignored/excluded by <tt>$GIT_DIR/info/exclude</tt> file or\r
+<tt>.gitignore</tt> file in each directory.  This means two things:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+You can put the name of a directory on the command line, and\r
+  the command will add all files in it and its subdirectories;\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Giving the name of a file that is already in index does not\r
+  run <tt>git-update-index</tt> on that path.\r
+</p>\r
+</li>\r
+</ol>\r
+</div>\r
+<h2>EXAMPLES</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+git-add Documentation/\*.txt\r
+</dt>\r
+<dd>\r
+<p>\r
+        Adds all <tt>*.txt</tt> files that are not in the index under\r
+        <tt>Documentation</tt> directory and its subdirectories.\r
+</p>\r
+<p>Note that the asterisk <tt>*</tt> is quoted from the shell in this\r
+example; this lets the command to include the files from\r
+subdirectories of <tt>Documentation/</tt> directory.</p>\r
+</dd>\r
+<dt>\r
+git-add git-*.sh\r
+</dt>\r
+<dd>\r
+<p>\r
+        Adds all git-*.sh scripts that are not in the index.\r
+        Because this example lets shell expand the asterisk\r
+        (i.e. you are listing the files explicitly), it does not\r
+        add <tt>subdir/git-foo.sh</tt> to the index.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:43 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-add.txt b/git-add.txt
new file mode 100644 (file)
index 0000000..4cae412
--- /dev/null
@@ -0,0 +1,75 @@
+git-add(1)
+==========
+
+NAME
+----
+git-add - Add files to the index file.
+
+SYNOPSIS
+--------
+'git-add' [-n] [-v] <file>...
+
+DESCRIPTION
+-----------
+A simple wrapper for git-update-index to add files to the index,
+for people used to do "cvs add".
+
+
+OPTIONS
+-------
+<file>...::
+       Files to add to the index.
+
+-n::
+        Don't actually add the file(s), just show if they exist.
+
+-v::
+        Be verbose.
+
+
+DISCUSSION
+----------
+
+The list of <file> given to the command is fed to `git-ls-files`
+command to list files that are not registerd in the index and
+are not ignored/excluded by `$GIT_DIR/info/exclude` file or
+`.gitignore` file in each directory.  This means two things:
+
+. You can put the name of a directory on the command line, and
+  the command will add all files in it and its subdirectories;
+
+. Giving the name of a file that is already in index does not
+  run `git-update-index` on that path.
+
+
+EXAMPLES
+--------
+git-add Documentation/\\*.txt::
+
+       Adds all `\*.txt` files that are not in the index under
+       `Documentation` directory and its subdirectories.
++
+Note that the asterisk `\*` is quoted from the shell in this
+example; this lets the command to include the files from
+subdirectories of `Documentation/` directory.
+
+git-add git-*.sh::
+
+       Adds all git-*.sh scripts that are not in the index.
+       Because this example lets shell expand the asterisk
+       (i.e. you are listing the files explicitly), it does not
+       add `subdir/git-foo.sh` to the index.
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-am.html b/git-am.html
new file mode 100644 (file)
index 0000000..8345957
--- /dev/null
@@ -0,0 +1,414 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-am(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-am(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-am -\r
+   Apply a series of patches in a mailbox\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-am</em> [--signoff] [--dotest=&lt;dir&gt;] [--utf8] [--binary] [--3way] &lt;mbox&gt;&#8230;\r
+<em>git-am</em> [--skip | --resolved]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Splits mail messages in a mailbox into commit log message,\r
+authorship information and patches, and applies them to the\r
+current branch.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--signoff\r
+</dt>\r
+<dd>\r
+<p>\r
+        Add <tt>Signed-off-by:</tt> line to the commit message, using\r
+        the committer identity of yourself.\r
+</p>\r
+</dd>\r
+<dt>\r
+--dotest=&lt;dir&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of <tt>.dotest</tt> directory, use &lt;dir&gt; as a working\r
+        area to store extracted patches.\r
+</p>\r
+</dd>\r
+<dt>\r
+--utf8, --keep\r
+</dt>\r
+<dd>\r
+<p>\r
+        Pass <tt>-u</tt> and <tt>-k</tt> flags to <tt>git-mailinfo</tt> (see\r
+        <a href="git-mailinfo.html">git-mailinfo(1)</a>).\r
+</p>\r
+</dd>\r
+<dt>\r
+--binary\r
+</dt>\r
+<dd>\r
+<p>\r
+        Pass <tt>--allow-binary-replacement</tt> flag to <tt>git-apply</tt>\r
+        (see <a href="git-apply.html">git-apply(1)</a>).\r
+</p>\r
+</dd>\r
+<dt>\r
+--3way\r
+</dt>\r
+<dd>\r
+<p>\r
+        When the patch does not apply cleanly, fall back on\r
+        3-way merge, if the patch records the identity of blobs\r
+        it is supposed to apply to, and we have those blobs\r
+        locally.\r
+</p>\r
+</dd>\r
+<dt>\r
+--skip\r
+</dt>\r
+<dd>\r
+<p>\r
+        Skip the current patch.  This is only meaningful when\r
+        restarting an aborted patch.\r
+</p>\r
+</dd>\r
+<dt>\r
+--interactive\r
+</dt>\r
+<dd>\r
+<p>\r
+        Run interactively, just like git-applymbox.\r
+</p>\r
+</dd>\r
+<dt>\r
+--resolved\r
+</dt>\r
+<dd>\r
+<p>\r
+        After a patch failure (e.g. attempting to apply\r
+        conflicting patch), the user has applied it by hand and\r
+        the index file stores the result of the application.\r
+        Make a commit using the authorship and commit log\r
+        extracted from the e-mail message and the current index\r
+        file, and continue.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>DISCUSSION</h2>\r
+<div class="sectionbody">\r
+<p>When initially invoking it, you give it names of the mailboxes\r
+to crunch.  Upon seeing the first patch that does not apply, it\r
+aborts in the middle, just like <em>git-applymbox</em> does.  You can\r
+recover from this in one of two ways:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+skip the current one by re-running the command with <em>--skip</em>\r
+  option.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+hand resolve the conflict in the working directory, and update\r
+  the index file to bring it in a state that the patch should\r
+  have produced.  Then run the command with <em>--resolved</em> option.\r
+</p>\r
+</li>\r
+</ol>\r
+<p>The command refuses to process new mailboxes while <tt>.dotest</tt>\r
+directory exists, so if you decide to start over from scratch,\r
+run <tt>rm -f .dotest</tt> before running the command with mailbox\r
+names.</p>\r
+</div>\r
+<h2>SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-applymbox.html">git-applymbox(1)</a>, <a href="git-applypatch.html">git-applypatch(1)</a>.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Petr Baudis, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:44 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-am.txt b/git-am.txt
new file mode 100644 (file)
index 0000000..a415fe2
--- /dev/null
@@ -0,0 +1,96 @@
+git-am(1)
+=========
+
+NAME
+----
+git-am - Apply a series of patches in a mailbox
+
+
+SYNOPSIS
+--------
+'git-am' [--signoff] [--dotest=<dir>] [--utf8] [--binary] [--3way] <mbox>...
+'git-am' [--skip | --resolved]
+
+DESCRIPTION
+-----------
+Splits mail messages in a mailbox into commit log message,
+authorship information and patches, and applies them to the
+current branch.
+
+OPTIONS
+-------
+--signoff::
+       Add `Signed-off-by:` line to the commit message, using
+       the committer identity of yourself.
+
+--dotest=<dir>::
+       Instead of `.dotest` directory, use <dir> as a working
+       area to store extracted patches.
+
+--utf8, --keep::
+       Pass `-u` and `-k` flags to `git-mailinfo` (see
+       gitlink:git-mailinfo[1]).
+
+--binary::
+       Pass `--allow-binary-replacement` flag to `git-apply`
+       (see gitlink:git-apply[1]).
+
+--3way::
+       When the patch does not apply cleanly, fall back on
+       3-way merge, if the patch records the identity of blobs
+       it is supposed to apply to, and we have those blobs
+       locally.
+
+--skip::
+       Skip the current patch.  This is only meaningful when
+       restarting an aborted patch.
+
+--interactive::
+       Run interactively, just like git-applymbox.
+
+--resolved::
+       After a patch failure (e.g. attempting to apply
+       conflicting patch), the user has applied it by hand and
+       the index file stores the result of the application.
+       Make a commit using the authorship and commit log
+       extracted from the e-mail message and the current index
+       file, and continue.
+
+DISCUSSION
+----------
+
+When initially invoking it, you give it names of the mailboxes
+to crunch.  Upon seeing the first patch that does not apply, it
+aborts in the middle, just like 'git-applymbox' does.  You can
+recover from this in one of two ways:
+
+. skip the current one by re-running the command with '--skip'
+  option.
+
+. hand resolve the conflict in the working directory, and update
+  the index file to bring it in a state that the patch should
+  have produced.  Then run the command with '--resolved' option.
+
+The command refuses to process new mailboxes while `.dotest`
+directory exists, so if you decide to start over from scratch,
+run `rm -f .dotest` before running the command with mailbox
+names.
+
+
+SEE ALSO
+--------
+gitlink:git-applymbox[1], gitlink:git-applypatch[1].
+
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Petr Baudis, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-apply.html b/git-apply.html
new file mode 100644 (file)
index 0000000..7153716
--- /dev/null
@@ -0,0 +1,433 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-apply(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-apply(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-apply -\r
+   Apply patch on a git index file and a work tree\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-apply</em> [--stat] [--numstat] [--summary] [--check] [--index] [--apply] [--no-add] [--index-info] [--allow-binary-replacement] [-z] [&lt;patch&gt;&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Reads supplied diff output and applies it on a git index file\r
+and a work tree.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;patch&gt;&#8230;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The files to read patch from.  <em>-</em> can be used to read\r
+        from the standard input.\r
+</p>\r
+</dd>\r
+<dt>\r
+--stat\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of applying the patch, output diffstat for the\r
+        input.  Turns off "apply".\r
+</p>\r
+</dd>\r
+<dt>\r
+--numstat\r
+</dt>\r
+<dd>\r
+<p>\r
+        Similar to --stat, but shows number of added and\r
+        deleted lines in decimal notation and pathname without\r
+        abbreviation, to make it more machine friendly.  Turns\r
+        off "apply".\r
+</p>\r
+</dd>\r
+<dt>\r
+--summary\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of applying the patch, output a condensed\r
+        summary of information obtained from git diff extended\r
+        headers, such as creations, renames and mode changes.\r
+        Turns off "apply".\r
+</p>\r
+</dd>\r
+<dt>\r
+--check\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of applying the patch, see if the patch is\r
+        applicable to the current work tree and/or the index\r
+        file and detects errors.  Turns off "apply".\r
+</p>\r
+</dd>\r
+<dt>\r
+--index\r
+</dt>\r
+<dd>\r
+<p>\r
+        When --check is in effect, or when applying the patch\r
+        (which is the default when none of the options that\r
+        disables it is in effect), make sure the patch is\r
+        applicable to what the current index file records.  If\r
+        the file to be patched in the work tree is not\r
+        up-to-date, it is flagged as an error.  This flag also\r
+        causes the index file to be updated.\r
+</p>\r
+</dd>\r
+<dt>\r
+--index-info\r
+</dt>\r
+<dd>\r
+<p>\r
+        Newer git-diff output has embedded <em>index information</em>\r
+        for each blob to help identify the original version that\r
+        the patch applies to.  When this flag is given, and if\r
+        the original version of the blob is available locally,\r
+        outputs information about them to the standard output.\r
+</p>\r
+</dd>\r
+<dt>\r
+-z\r
+</dt>\r
+<dd>\r
+<p>\r
+        When showing the index information, do not munge paths,\r
+        but use NUL terminated machine readable format.  Without\r
+        this flag, the pathnames output will have TAB, LF, and\r
+        backslash characters replaced with <tt>\t</tt>, <tt>\n</tt>, and <tt>\\</tt>,\r
+        respectively.\r
+</p>\r
+</dd>\r
+<dt>\r
+--apply\r
+</dt>\r
+<dd>\r
+<p>\r
+        If you use any of the options marked &#8220;Turns off\r
+        "apply"&#8221; above, git-apply reads and outputs the\r
+        information you asked without actually applying the\r
+        patch.  Give this flag after those flags to also apply\r
+        the patch.\r
+</p>\r
+</dd>\r
+<dt>\r
+--no-add\r
+</dt>\r
+<dd>\r
+<p>\r
+        When applying a patch, ignore additions made by the\r
+        patch.  This can be used to extract common part between\r
+        two files by first running <tt>diff</tt> on them and applying\r
+        the result with this option, which would apply the\r
+        deletion part but not addition part.\r
+</p>\r
+</dd>\r
+<dt>\r
+--allow-binary-replacement\r
+</dt>\r
+<dd>\r
+<p>\r
+        When applying a patch, which is a git-enhanced patch\r
+        that was prepared to record the pre- and post-image object\r
+        name in full, and the path being patched exactly matches\r
+        the object the patch applies to (i.e. "index" line's\r
+        pre-image object name is what is in the working tree),\r
+        and the post-image object is available in the object\r
+        database, use the post-image object as the patch\r
+        result.  This allows binary files to be patched in a\r
+        very limited way.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:45 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-apply.txt b/git-apply.txt
new file mode 100644 (file)
index 0000000..626e281
--- /dev/null
@@ -0,0 +1,104 @@
+git-apply(1)
+============
+
+NAME
+----
+git-apply - Apply patch on a git index file and a work tree
+
+
+SYNOPSIS
+--------
+'git-apply' [--stat] [--numstat] [--summary] [--check] [--index] [--apply] [--no-add] [--index-info] [--allow-binary-replacement] [-z] [<patch>...]
+
+DESCRIPTION
+-----------
+Reads supplied diff output and applies it on a git index file
+and a work tree.
+
+OPTIONS
+-------
+<patch>...::
+       The files to read patch from.  '-' can be used to read
+       from the standard input.
+
+--stat::
+       Instead of applying the patch, output diffstat for the
+       input.  Turns off "apply".
+
+--numstat::
+       Similar to \--stat, but shows number of added and
+       deleted lines in decimal notation and pathname without
+       abbreviation, to make it more machine friendly.  Turns
+       off "apply".
+
+--summary::
+       Instead of applying the patch, output a condensed
+       summary of information obtained from git diff extended
+       headers, such as creations, renames and mode changes.
+       Turns off "apply".
+
+--check::
+       Instead of applying the patch, see if the patch is
+       applicable to the current work tree and/or the index
+       file and detects errors.  Turns off "apply".
+
+--index::
+       When --check is in effect, or when applying the patch
+       (which is the default when none of the options that
+       disables it is in effect), make sure the patch is
+       applicable to what the current index file records.  If
+       the file to be patched in the work tree is not
+       up-to-date, it is flagged as an error.  This flag also
+       causes the index file to be updated.
+
+--index-info::
+       Newer git-diff output has embedded 'index information'
+       for each blob to help identify the original version that
+       the patch applies to.  When this flag is given, and if
+       the original version of the blob is available locally,
+       outputs information about them to the standard output.
+
+-z::
+       When showing the index information, do not munge paths,
+       but use NUL terminated machine readable format.  Without
+       this flag, the pathnames output will have TAB, LF, and
+       backslash characters replaced with `\t`, `\n`, and `\\`,
+       respectively.
+
+--apply::
+       If you use any of the options marked ``Turns off
+       "apply"'' above, git-apply reads and outputs the
+       information you asked without actually applying the
+       patch.  Give this flag after those flags to also apply
+       the patch.
+
+--no-add::
+       When applying a patch, ignore additions made by the
+       patch.  This can be used to extract common part between
+       two files by first running `diff` on them and applying
+       the result with this option, which would apply the
+       deletion part but not addition part.
+
+--allow-binary-replacement::
+       When applying a patch, which is a git-enhanced patch
+       that was prepared to record the pre- and post-image object
+       name in full, and the path being patched exactly matches
+       the object the patch applies to (i.e. "index" line's
+       pre-image object name is what is in the working tree),
+       and the post-image object is available in the object
+       database, use the post-image object as the patch
+       result.  This allows binary files to be patched in a
+       very limited way.
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-applymbox.html b/git-applymbox.html
new file mode 100644 (file)
index 0000000..9c83ace
--- /dev/null
@@ -0,0 +1,398 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-applymbox(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-applymbox(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-applymbox -\r
+   Apply a series of patches in a mailbox\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-applymbox</em> [-u] [-k] [-q] [-m] ( -c .dotest/&lt;num&gt; | &lt;mbox&gt; ) [ &lt;signoff&gt; ]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Splits mail messages in a mailbox into commit log message,\r
+authorship information and patches, and applies them to the\r
+current branch.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-q\r
+</dt>\r
+<dd>\r
+<p>\r
+        Apply patches interactively.  The user will be given\r
+        opportunity to edit the log message and the patch before\r
+        attempting to apply it.\r
+</p>\r
+</dd>\r
+<dt>\r
+-k\r
+</dt>\r
+<dd>\r
+<p>\r
+        Usually the program <em>cleans up</em> the Subject: header line\r
+        to extract the title line for the commit log message,\r
+        among which (1) remove <em>Re:</em> or <em>re:</em>, (2) leading\r
+        whitespaces, (3) <em>[</em> up to <em>]</em>, typically <em>[PATCH]</em>, and\r
+        then prepends "[PATCH] ".  This flag forbids this\r
+        munging, and is most useful when used to read back <em>git\r
+        format-patch --mbox</em> output.\r
+</p>\r
+</dd>\r
+<dt>\r
+-m\r
+</dt>\r
+<dd>\r
+<p>\r
+        Patches are applied with <tt>git-apply</tt> command, and unless\r
+        it cleanly applies without fuzz, the processing fails.\r
+        With this flag, if a tree that the patch applies cleanly\r
+        is found in a repository, the patch is applied to the\r
+        tree and then a 3-way merge between the resulting tree\r
+        and the current tree.\r
+</p>\r
+</dd>\r
+<dt>\r
+-u\r
+</dt>\r
+<dd>\r
+<p>\r
+        By default, the commit log message, author name and\r
+        author email are taken from the e-mail without any\r
+        charset conversion, after minimally decoding MIME\r
+        transfer encoding.  This flag causes the resulting\r
+        commit to be encoded in utf-8 by transliterating them.\r
+        Note that the patch is always used as is without charset\r
+        conversion, even with this flag.\r
+</p>\r
+</dd>\r
+<dt>\r
+-c .dotest/&lt;num&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        When the patch contained in an e-mail does not cleanly\r
+        apply, the command exits with an error message. The\r
+        patch and extracted message are found in .dotest/, and\r
+        you could re-run <em>git applymbox</em> with <em>-c .dotest/&lt;num&gt;</em>\r
+        flag to restart the process after inspecting and fixing\r
+        them.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;mbox&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The name of the file that contains the e-mail messages\r
+        with patches.  This file should be in the UNIX mailbox\r
+        format.  See <em>SubmittingPatches</em> document to learn about\r
+        the formatting convention for e-mail submission.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;signoff&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The name of the file that contains your "Signed-off-by"\r
+        line.  See <em>SubmittingPatches</em> document to learn what\r
+        "Signed-off-by" line means.  You can also just say\r
+        <em>yes</em>, <em>true</em>, <em>me</em>, or <em>please</em> to use an automatically\r
+        generated "Signed-off-by" line based on your committer\r
+        identity.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-am.html">git-am(1)</a>, <a href="git-applypatch.html">git-applypatch(1)</a>.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:46 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-applymbox.txt b/git-applymbox.txt
new file mode 100644 (file)
index 0000000..f74c6a4
--- /dev/null
@@ -0,0 +1,92 @@
+git-applymbox(1)
+================
+
+NAME
+----
+git-applymbox - Apply a series of patches in a mailbox
+
+
+SYNOPSIS
+--------
+'git-applymbox' [-u] [-k] [-q] [-m] ( -c .dotest/<num> | <mbox> ) [ <signoff> ]
+
+DESCRIPTION
+-----------
+Splits mail messages in a mailbox into commit log message,
+authorship information and patches, and applies them to the
+current branch.
+
+
+OPTIONS
+-------
+-q::
+       Apply patches interactively.  The user will be given
+       opportunity to edit the log message and the patch before
+       attempting to apply it.
+
+-k::
+       Usually the program 'cleans up' the Subject: header line
+       to extract the title line for the commit log message,
+       among which (1) remove 'Re:' or 're:', (2) leading
+       whitespaces, (3) '[' up to ']', typically '[PATCH]', and
+       then prepends "[PATCH] ".  This flag forbids this
+       munging, and is most useful when used to read back 'git
+       format-patch --mbox' output.
+
+-m::
+       Patches are applied with `git-apply` command, and unless
+       it cleanly applies without fuzz, the processing fails.
+       With this flag, if a tree that the patch applies cleanly
+       is found in a repository, the patch is applied to the
+       tree and then a 3-way merge between the resulting tree
+       and the current tree.
+
+-u::
+       By default, the commit log message, author name and
+       author email are taken from the e-mail without any
+       charset conversion, after minimally decoding MIME
+       transfer encoding.  This flag causes the resulting
+       commit to be encoded in utf-8 by transliterating them.
+       Note that the patch is always used as is without charset
+       conversion, even with this flag.
+
+-c .dotest/<num>::
+       When the patch contained in an e-mail does not cleanly
+       apply, the command exits with an error message. The
+       patch and extracted message are found in .dotest/, and
+       you could re-run 'git applymbox' with '-c .dotest/<num>'
+       flag to restart the process after inspecting and fixing
+       them.
+
+<mbox>::
+       The name of the file that contains the e-mail messages
+       with patches.  This file should be in the UNIX mailbox
+       format.  See 'SubmittingPatches' document to learn about
+       the formatting convention for e-mail submission.
+
+<signoff>::
+       The name of the file that contains your "Signed-off-by"
+       line.  See 'SubmittingPatches' document to learn what
+       "Signed-off-by" line means.  You can also just say
+       'yes', 'true', 'me', or 'please' to use an automatically
+       generated "Signed-off-by" line based on your committer
+       identity.
+
+
+SEE ALSO
+--------
+gitlink:git-am[1], gitlink:git-applypatch[1].
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-applypatch.html b/git-applypatch.html
new file mode 100644 (file)
index 0000000..2155164
--- /dev/null
@@ -0,0 +1,336 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-applypatch(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-applypatch(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-applypatch -\r
+   Apply one patch extracted from an e-mail.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-applypatch</em> &lt;msg&gt; &lt;patch&gt; &lt;info&gt; [&lt;signoff&gt;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Takes three files &lt;msg&gt;, &lt;patch&gt;, and &lt;info&gt; prepared from an\r
+e-mail message by <em>git-mailinfo</em>, and creates a commit.  It is\r
+usually not necessary to use this command directly.</p>\r
+<p>This command can run <tt>applypatch-msg</tt>, <tt>pre-applypatch</tt>, and\r
+<tt>post-applypatch</tt> hooks.  See <a href="hooks.html">hooks</a> for more\r
+information.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;msg&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Commit log message (sans the first line, which comes\r
+        from e-mail Subject stored in &lt;info&gt;).\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;patch&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The patch to apply.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;info&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Author and subject information extracted from e-mail,\r
+        used on "author" line and as the first line of the\r
+        commit log message.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:46 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-applypatch.txt b/git-applypatch.txt
new file mode 100644 (file)
index 0000000..5b9037d
--- /dev/null
@@ -0,0 +1,50 @@
+git-applypatch(1)
+=================
+
+NAME
+----
+git-applypatch - Apply one patch extracted from an e-mail.
+
+
+SYNOPSIS
+--------
+'git-applypatch' <msg> <patch> <info> [<signoff>]
+
+DESCRIPTION
+-----------
+Takes three files <msg>, <patch>, and <info> prepared from an
+e-mail message by 'git-mailinfo', and creates a commit.  It is
+usually not necessary to use this command directly.
+
+This command can run `applypatch-msg`, `pre-applypatch`, and
+`post-applypatch` hooks.  See link:hooks.html[hooks] for more
+information.
+
+
+OPTIONS
+-------
+<msg>::
+       Commit log message (sans the first line, which comes
+       from e-mail Subject stored in <info>).
+
+<patch>::
+       The patch to apply.
+
+<info>::
+       Author and subject information extracted from e-mail,
+       used on "author" line and as the first line of the
+       commit log message.
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-archimport.html b/git-archimport.html
new file mode 100644 (file)
index 0000000..c904660
--- /dev/null
@@ -0,0 +1,417 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-archimport(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-archimport(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-archimport -\r
+   Import an Arch repository into git\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><tt>git-archimport</tt> [ -h ] [ -v ] [ -o ] [ -a ] [ -f ] [ -T ]\r
+                 [ -D depth ] [ -t tempdir ]\r
+                 &lt;archive/branch&gt; [ &lt;archive/branch&gt; ]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Imports a project from one or more Arch repositories. It will follow branches\r
+and repositories within the namespaces defined by the &lt;archive/branch&gt;\r
+parameters suppplied. If it cannot find the remote branch a merge comes from\r
+it will just import it as a regular commit. If it can find it, it will mark it\r
+as a merge whenever possible (see discussion below).</p>\r
+<p>The script expects you to provide the key roots where it can start the import\r
+from an <em>initial import</em> or <em>tag</em> type of Arch commit. It will follow and\r
+import new branches within the provided roots.</p>\r
+<p>It expects to be dealing with one project only. If it sees\r
+branches that have different roots, it will refuse to run. In that case,\r
+edit your &lt;archive/branch&gt; parameters to define clearly the scope of the\r
+import.</p>\r
+<p><tt>git-archimport</tt> uses <tt>tla</tt> extensively in the background to access the\r
+Arch repository.\r
+Make sure you have a recent version of <tt>tla</tt> available in the path. <tt>tla</tt> must\r
+know about the repositories you pass to <tt>git-archimport</tt>.</p>\r
+<p>For the initial import <tt>git-archimport</tt> expects to find itself in an empty\r
+directory. To follow the development of a project that uses Arch, rerun\r
+<tt>git-archimport</tt> with the same parameters as the initial import to perform\r
+incremental imports.</p>\r
+</div>\r
+<h2>MERGES</h2>\r
+<div class="sectionbody">\r
+<p>Patch merge data from Arch is used to mark merges in git as well. git\r
+does not care much about tracking patches, and only considers a merge when a\r
+branch incorporates all the commits since the point they forked. The end result\r
+is that git will have a good idea of how far branches have diverged. So the\r
+import process does lose some patch-trading metadata.</p>\r
+<p>Fortunately, when you try and merge branches imported from Arch,\r
+git will find a good merge base, and it has a good chance of identifying\r
+patches that have been traded out-of-sequence between the branches.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-h\r
+</dt>\r
+<dd>\r
+<p>\r
+        Display usage.\r
+</p>\r
+</dd>\r
+<dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+        Verbose output.\r
+</p>\r
+</dd>\r
+<dt>\r
+-T\r
+</dt>\r
+<dd>\r
+<p>\r
+        Many tags. Will create a tag for every commit, reflecting the commit\r
+        name in the Arch repository.\r
+</p>\r
+</dd>\r
+<dt>\r
+-f\r
+</dt>\r
+<dd>\r
+<p>\r
+        Use the fast patchset import strategy.  This can be significantly\r
+        faster for large trees, but cannot handle directory renames or\r
+        permissions changes.  The default strategy is slow and safe.\r
+</p>\r
+</dd>\r
+<dt>\r
+-o\r
+</dt>\r
+<dd>\r
+<p>\r
+        Use this for compatibility with old-style branch names used by\r
+        earlier versions of git-archimport.  Old-style branch names\r
+        were category--branch, whereas new-style branch names are\r
+        archive,category--branch--version.\r
+</p>\r
+</dd>\r
+<dt>\r
+-D &lt;depth&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Follow merge ancestry and attempt to import trees that have been\r
+        merged from.  Specify a depth greater than 1 if patch logs have been\r
+        pruned.\r
+</p>\r
+</dd>\r
+<dt>\r
+-a\r
+</dt>\r
+<dd>\r
+<p>\r
+        Attempt to auto-register archives at http://mirrors.sourcecontrol.net\r
+        This is particularly useful with the -D option.\r
+</p>\r
+</dd>\r
+<dt>\r
+-t &lt;tmpdir&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Override the default tempdir.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;archive/branch&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Archive/branch identifier in a format that <tt>tla log</tt> understands.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Martin Langhoff &lt;martin@catalyst.net.nz&gt;.</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano, Martin Langhoff and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:47 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-archimport.txt b/git-archimport.txt
new file mode 100644 (file)
index 0000000..a2bd788
--- /dev/null
@@ -0,0 +1,106 @@
+git-archimport(1)
+=================
+
+NAME
+----
+git-archimport - Import an Arch repository into git
+
+
+SYNOPSIS
+--------
+`git-archimport` [ -h ] [ -v ] [ -o ] [ -a ] [ -f ] [ -T ]
+                 [ -D depth ] [ -t tempdir ] 
+                 <archive/branch> [ <archive/branch> ]
+
+DESCRIPTION
+-----------
+Imports a project from one or more Arch repositories. It will follow branches
+and repositories within the namespaces defined by the <archive/branch>
+parameters suppplied. If it cannot find the remote branch a merge comes from
+it will just import it as a regular commit. If it can find it, it will mark it 
+as a merge whenever possible (see discussion below). 
+
+The script expects you to provide the key roots where it can start the import 
+from an 'initial import' or 'tag' type of Arch commit. It will follow and 
+import new branches within the provided roots. 
+
+It expects to be dealing with one project only. If it sees 
+branches that have different roots, it will refuse to run. In that case, 
+edit your <archive/branch> parameters to define clearly the scope of the 
+import. 
+
+`git-archimport` uses `tla` extensively in the background to access the 
+Arch repository.
+Make sure you have a recent version of `tla` available in the path. `tla` must
+know about the repositories you pass to `git-archimport`. 
+
+For the initial import `git-archimport` expects to find itself in an empty 
+directory. To follow the development of a project that uses Arch, rerun 
+`git-archimport` with the same parameters as the initial import to perform 
+incremental imports.
+
+MERGES
+------
+Patch merge data from Arch is used to mark merges in git as well. git 
+does not care much about tracking patches, and only considers a merge when a
+branch incorporates all the commits since the point they forked. The end result
+is that git will have a good idea of how far branches have diverged. So the 
+import process does lose some patch-trading metadata.
+
+Fortunately, when you try and merge branches imported from Arch, 
+git will find a good merge base, and it has a good chance of identifying 
+patches that have been traded out-of-sequence between the branches. 
+
+OPTIONS
+-------
+
+-h::
+       Display usage.
+
+-v::
+       Verbose output. 
+
+-T::
+       Many tags. Will create a tag for every commit, reflecting the commit 
+       name in the Arch repository.
+
+-f::
+       Use the fast patchset import strategy.  This can be significantly
+       faster for large trees, but cannot handle directory renames or
+       permissions changes.  The default strategy is slow and safe.
+
+-o::
+       Use this for compatibility with old-style branch names used by
+       earlier versions of git-archimport.  Old-style branch names
+       were category--branch, whereas new-style branch names are
+       archive,category--branch--version.
+
+-D <depth>::
+       Follow merge ancestry and attempt to import trees that have been
+       merged from.  Specify a depth greater than 1 if patch logs have been
+       pruned.
+
+-a::
+       Attempt to auto-register archives at http://mirrors.sourcecontrol.net
+       This is particularly useful with the -D option.
+
+-t <tmpdir>::
+       Override the default tempdir.
+
+
+<archive/branch>::
+       Archive/branch identifier in a format that `tla log` understands. 
+
+
+Author
+------
+Written by Martin Langhoff <martin@catalyst.net.nz>.
+
+Documentation
+--------------
+Documentation by Junio C Hamano, Martin Langhoff and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-bisect.html b/git-bisect.html
new file mode 100644 (file)
index 0000000..3665910
--- /dev/null
@@ -0,0 +1,392 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-bisect(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-bisect(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-bisect -\r
+   Find the change that introduced a bug\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git bisect</em> &lt;subcommand&gt; &lt;options&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>The command takes various subcommands, and different options\r
+depending on the subcommand:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git bisect start [&lt;paths&gt;...]\r
+git bisect bad &lt;rev&gt;\r
+git bisect good &lt;rev&gt;\r
+git bisect reset [&lt;branch&gt;]\r
+git bisect visualize\r
+git bisect replay &lt;logfile&gt;\r
+git bisect log</tt></pre>\r
+</div></div>\r
+<p>This command uses <em>git-rev-list --bisect</em> option to help drive\r
+the binary search process to find which change introduced a bug,\r
+given an old "good" commit object name and a later "bad" commit\r
+object name.</p>\r
+<p>The way you use it is:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git bisect start\r
+$ git bisect bad                        # Current version is bad\r
+$ git bisect good v2.6.13-rc2           # v2.6.13-rc2 was the last version\r
+                                        # tested that was good</tt></pre>\r
+</div></div>\r
+<p>When you give at least one bad and one good versions, it will\r
+bisect the revision tree and say something like:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>Bisecting: 675 revisions left to test after this</tt></pre>\r
+</div></div>\r
+<p>and check out the state in the middle. Now, compile that kernel, and boot\r
+it. Now, let's say that this booted kernel works fine, then just do</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git bisect good                       # this one is good</tt></pre>\r
+</div></div>\r
+<p>which will now say</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>Bisecting: 337 revisions left to test after this</tt></pre>\r
+</div></div>\r
+<p>and you continue along, compiling that one, testing it, and depending on\r
+whether it is good or bad, you say "git bisect good" or "git bisect bad",\r
+and ask for the next bisection.</p>\r
+<p>Until you have no more left, and you'll have been left with the first bad\r
+kernel rev in "refs/bisect/bad".</p>\r
+<p>Oh, and then after you want to reset to the original head, do a</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git bisect reset</tt></pre>\r
+</div></div>\r
+<p>to get back to the master branch, instead of being in one of the bisection\r
+branches ("git bisect start" will do that for you too, actually: it will\r
+reset the bisection state, and before it does that it checks that you're\r
+not using some old bisection branch).</p>\r
+<p>During the bisection process, you can say</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git bisect visualize</tt></pre>\r
+</div></div>\r
+<p>to see the currently remaining suspects in <tt>gitk</tt>.</p>\r
+<p>The good/bad input is logged, and <tt>git bisect\r
+log</tt> shows what you have done so far.  You can truncate its\r
+output somewhere and save it in a file, and run</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git bisect replay that-file</tt></pre>\r
+</div></div>\r
+<p>if you find later you made a mistake telling good/bad about a\r
+revision.</p>\r
+<p>If in a middle of bisect session, you know what the bisect\r
+suggested to try next is not a good one to test (e.g. the change\r
+the commit introduces is known not to work in your environment\r
+and you know it does not have anything to do with the bug you\r
+are chasing), you may want to find a near-by commit and try that\r
+instead.  It goes something like this:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git bisect good/bad                   # previous round was good/bad.\r
+Bisecting: 337 revisions left to test after this\r
+$ git bisect visualize                  # oops, that is uninteresting.\r
+$ git reset --hard HEAD~3               # try 3 revs before what\r
+                                        # was suggested</tt></pre>\r
+</div></div>\r
+<p>Then compile and test the one you chose to try.  After that,\r
+tell bisect what the result was as usual.</p>\r
+<p>You can further cut down the number of trials if you know what\r
+part of the tree is involved in the problem you are tracking\r
+down, by giving paths parameters when you say <tt>bisect start</tt>,\r
+like this:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git bisect start arch/i386 include/asm-i386</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:48 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-bisect.txt b/git-bisect.txt
new file mode 100644 (file)
index 0000000..ac4b496
--- /dev/null
@@ -0,0 +1,136 @@
+git-bisect(1)
+=============
+
+NAME
+----
+git-bisect - Find the change that introduced a bug
+
+
+SYNOPSIS
+--------
+'git bisect' <subcommand> <options> 
+
+DESCRIPTION
+-----------
+The command takes various subcommands, and different options
+depending on the subcommand:
+
+ git bisect start [<paths>...]
+ git bisect bad <rev>
+ git bisect good <rev>
+ git bisect reset [<branch>]
+ git bisect visualize
+ git bisect replay <logfile>
+ git bisect log
+
+This command uses 'git-rev-list --bisect' option to help drive
+the binary search process to find which change introduced a bug,
+given an old "good" commit object name and a later "bad" commit
+object name.
+
+The way you use it is:
+
+------------------------------------------------
+$ git bisect start
+$ git bisect bad                       # Current version is bad
+$ git bisect good v2.6.13-rc2          # v2.6.13-rc2 was the last version
+                                       # tested that was good
+------------------------------------------------
+
+When you give at least one bad and one good versions, it will
+bisect the revision tree and say something like:
+
+------------------------------------------------
+Bisecting: 675 revisions left to test after this
+------------------------------------------------
+
+and check out the state in the middle. Now, compile that kernel, and boot
+it. Now, let's say that this booted kernel works fine, then just do
+
+------------------------------------------------
+$ git bisect good                      # this one is good
+------------------------------------------------
+
+which will now say
+
+------------------------------------------------
+Bisecting: 337 revisions left to test after this
+------------------------------------------------
+
+and you continue along, compiling that one, testing it, and depending on
+whether it is good or bad, you say "git bisect good" or "git bisect bad",
+and ask for the next bisection.
+
+Until you have no more left, and you'll have been left with the first bad
+kernel rev in "refs/bisect/bad".
+
+Oh, and then after you want to reset to the original head, do a
+
+------------------------------------------------
+$ git bisect reset
+------------------------------------------------
+
+to get back to the master branch, instead of being in one of the bisection
+branches ("git bisect start" will do that for you too, actually: it will
+reset the bisection state, and before it does that it checks that you're
+not using some old bisection branch).
+
+During the bisection process, you can say
+
+------------
+$ git bisect visualize
+------------
+
+to see the currently remaining suspects in `gitk`.
+
+The good/bad input is logged, and `git bisect
+log` shows what you have done so far.  You can truncate its
+output somewhere and save it in a file, and run
+
+------------
+$ git bisect replay that-file
+------------
+
+if you find later you made a mistake telling good/bad about a
+revision.
+
+If in a middle of bisect session, you know what the bisect
+suggested to try next is not a good one to test (e.g. the change
+the commit introduces is known not to work in your environment
+and you know it does not have anything to do with the bug you
+are chasing), you may want to find a near-by commit and try that
+instead.  It goes something like this:
+
+------------
+$ git bisect good/bad                  # previous round was good/bad.
+Bisecting: 337 revisions left to test after this
+$ git bisect visualize                 # oops, that is uninteresting.
+$ git reset --hard HEAD~3              # try 3 revs before what
+                                       # was suggested
+------------
+
+Then compile and test the one you chose to try.  After that,
+tell bisect what the result was as usual.
+
+You can further cut down the number of trials if you know what
+part of the tree is involved in the problem you are tracking
+down, by giving paths parameters when you say `bisect start`,
+like this:
+
+------------
+$ git bisect start arch/i386 include/asm-i386
+------------
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+-------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-branch.html b/git-branch.html
new file mode 100644 (file)
index 0000000..fb41e08
--- /dev/null
@@ -0,0 +1,371 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-branch(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-branch(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-branch -\r
+   Create a new branch, or remove an old one.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-branch</em> [-d | -D] [&lt;branchname&gt; [start-point]]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>If no argument is provided, show available branches and mark current\r
+branch with star. Otherwise, create a new branch of name &lt;branchname&gt;.</p>\r
+<p>If a starting point is also specified, that will be where the branch is\r
+created, otherwise it will be created at the current HEAD.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-d\r
+</dt>\r
+<dd>\r
+<p>\r
+        Delete a branch. The branch must be fully merged.\r
+</p>\r
+</dd>\r
+<dt>\r
+-D\r
+</dt>\r
+<dd>\r
+<p>\r
+        Delete a branch irrespective of its index status.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;branchname&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The name of the branch to create or delete.\r
+</p>\r
+</dd>\r
+<dt>\r
+start-point\r
+</dt>\r
+<dd>\r
+<p>\r
+        Where to create the branch; defaults to HEAD. This\r
+        option has no meaning with -d and -D.\r
+</p>\r
+</dd>\r
+</dl>\r
+<h3>Examples</h3>\r
+<dl>\r
+<dt>\r
+Start development off of a know tag\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6\r
+$ cd my2.6\r
+$ git branch my2.6.14 v2.6.14 <b>(1)</b>\r
+$ git checkout my2.6.14\r
+\r
+<b>(1)</b> These two steps are the same as "checkout -b my2.6.14 v2.6.14".</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Delete unneeded branch\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git clone git://git.kernel.org/.../git.git my.git\r
+$ cd my.git\r
+$ git branch -D todo <b>(1)</b>\r
+\r
+<b>(1)</b> delete todo branch even if the "master" branch does not have all\r
+commits from todo branch.</tt></pre>\r
+</div></div>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt; and Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:49 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-branch.txt b/git-branch.txt
new file mode 100644 (file)
index 0000000..d20b475
--- /dev/null
@@ -0,0 +1,72 @@
+git-branch(1)
+=============
+
+NAME
+----
+git-branch - Create a new branch, or remove an old one.
+
+SYNOPSIS
+--------
+'git-branch' [-d | -D] [<branchname> [start-point]]
+
+DESCRIPTION
+-----------
+If no argument is provided, show available branches and mark current
+branch with star. Otherwise, create a new branch of name <branchname>.
+
+If a starting point is also specified, that will be where the branch is
+created, otherwise it will be created at the current HEAD.
+
+OPTIONS
+-------
+-d::
+       Delete a branch. The branch must be fully merged.
+
+-D::
+       Delete a branch irrespective of its index status.
+
+<branchname>::
+       The name of the branch to create or delete.
+
+start-point::
+       Where to create the branch; defaults to HEAD. This
+       option has no meaning with -d and -D.
+
+
+Examples
+~~~~~~~~
+
+Start development off of a know tag::
++
+------------
+$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
+$ cd my2.6
+$ git branch my2.6.14 v2.6.14 <1>
+$ git checkout my2.6.14
+
+<1> These two steps are the same as "checkout -b my2.6.14 v2.6.14".
+------------
+
+Delete unneeded branch::
++
+------------
+$ git clone git://git.kernel.org/.../git.git my.git
+$ cd my.git
+$ git branch -D todo <1>
+
+<1> delete todo branch even if the "master" branch does not have all
+commits from todo branch.
+------------
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org> and Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-cat-file.html b/git-cat-file.html
new file mode 100644 (file)
index 0000000..00b05e3
--- /dev/null
@@ -0,0 +1,362 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-cat-file(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-cat-file(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-cat-file -\r
+   Provide content or type information for repository objects\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-cat-file</em> (-t | -s | -e | &lt;type&gt;) &lt;object&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Provides content or type of objects in the repository. The type\r
+is required unless <em>-t</em> is used to find the object type,\r
+or <em>-s</em> is used to find the object size.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;object&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The sha1 identifier of the object.\r
+</p>\r
+</dd>\r
+<dt>\r
+-t\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of the content, show the object type identified by\r
+        &lt;object&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+-s\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of the content, show the object size identified by\r
+        &lt;object&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+-e\r
+</dt>\r
+<dd>\r
+<p>\r
+        Suppress all output; instead exit with zero status if &lt;object&gt;\r
+        exists and is a valid object.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;type&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Typically this matches the real type of &lt;object&gt; but asking\r
+        for a type that can trivially be dereferenced from the given\r
+        &lt;object&gt; is also permitted.  An example is to ask for a\r
+        "tree" with &lt;object&gt; being a commit object that contains it,\r
+        or to ask for a "blob" with &lt;object&gt; being a tag object that\r
+        points at it.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>OUTPUT</h2>\r
+<div class="sectionbody">\r
+<p>If <em>-t</em> is specified, one of the &lt;type&gt;.</p>\r
+<p>If <em>-s</em> is specified, the size of the &lt;object&gt; in bytes.</p>\r
+<p>If <em>-e</em> is specified, no output.</p>\r
+<p>Otherwise the raw (though uncompressed) contents of the &lt;object&gt; will\r
+be returned.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:49 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-cat-file.txt b/git-cat-file.txt
new file mode 100644 (file)
index 0000000..9a7700f
--- /dev/null
@@ -0,0 +1,67 @@
+git-cat-file(1)
+===============
+
+NAME
+----
+git-cat-file - Provide content or type information for repository objects
+
+
+SYNOPSIS
+--------
+'git-cat-file' (-t | -s | -e | <type>) <object>
+
+DESCRIPTION
+-----------
+Provides content or type of objects in the repository. The type
+is required unless '-t' is used to find the object type,
+or '-s' is used to find the object size.
+
+OPTIONS
+-------
+<object>::
+       The sha1 identifier of the object.
+
+-t::
+       Instead of the content, show the object type identified by
+       <object>.
+
+-s::
+       Instead of the content, show the object size identified by
+       <object>.
+
+-e::
+       Suppress all output; instead exit with zero status if <object>
+       exists and is a valid object.
+
+<type>::
+       Typically this matches the real type of <object> but asking
+       for a type that can trivially be dereferenced from the given
+       <object> is also permitted.  An example is to ask for a
+       "tree" with <object> being a commit object that contains it,
+       or to ask for a "blob" with <object> being a tag object that
+       points at it.
+
+OUTPUT
+------
+If '-t' is specified, one of the <type>.
+
+If '-s' is specified, the size of the <object> in bytes.
+
+If '-e' is specified, no output.
+
+Otherwise the raw (though uncompressed) contents of the <object> will
+be returned.
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-check-ref-format.html b/git-check-ref-format.html
new file mode 100644 (file)
index 0000000..fe0b6ca
--- /dev/null
@@ -0,0 +1,347 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-check-ref-format(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-check-ref-format(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-check-ref-format -\r
+   Make sure ref name is well formed.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-check-ref-format</em> &lt;refname&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Checks if a given <em>refname</em> is acceptable, and exits non-zero if\r
+it is not.</p>\r
+<p>A reference is used in git to specify branches and tags.  A\r
+branch head is stored under <tt>$GIT_DIR/refs/heads</tt> directory, and\r
+a tag is stored under <tt>$GIT_DIR/refs/tags</tt> directory.  git\r
+imposes the following rules on how refs are named:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+It could be named hierarchically (i.e. separated with slash\r
+  <tt>/</tt>), but each of its component cannot begin with a dot <tt>.</tt>;\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+It cannot have two consecutive dots <tt>..</tt> anywhere;\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+It cannot have ASCII control character (i.e. bytes whose\r
+  values are lower than \040, or \177 <tt>DEL</tt>), space, tilde <tt>~</tt>,\r
+  caret <tt>^</tt>, colon <tt>:</tt>, question-mark <tt>?</tt>, asterisk <tt>*</tt>,\r
+  or open bracket <tt>[</tt> anywhere;\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+It cannot end with a slash <tt>/</tt>.\r
+</p>\r
+</li>\r
+</ol>\r
+<p>These rules makes it easy for shell script based tools to parse\r
+refnames, pathname expansion by the shell when a refname is used\r
+unquoted (by mistake), and also avoids ambiguities in certain\r
+refname expressions (see <a href="git-rev-parse.html">git-rev-parse(1)</a>).  Namely:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+double-dot <tt>..</tt> are often used as in <tt>ref1..ref2</tt>, and in some\r
+  context this notation means <tt>^ref1 ref2</tt> (i.e. not in\r
+  ref1 and in ref2).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+tilde <tt>~</tt> and caret <tt>^</tt> are used to introduce postfix\r
+  <em>nth parent</em> and <em>peel onion</em> operation.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+colon <tt>:</tt> is used as in <tt>srcref:dstref</tt> to mean "use srcref's\r
+  value and store it in dstref" in fetch and push operations.\r
+</p>\r
+</li>\r
+</ol>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:50 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-check-ref-format.txt b/git-check-ref-format.txt
new file mode 100644 (file)
index 0000000..f7f84c6
--- /dev/null
@@ -0,0 +1,52 @@
+git-check-ref-format(1)
+=======================
+
+NAME
+----
+git-check-ref-format - Make sure ref name is well formed.
+
+SYNOPSIS
+--------
+'git-check-ref-format' <refname>
+
+DESCRIPTION
+-----------
+Checks if a given 'refname' is acceptable, and exits non-zero if
+it is not.
+
+A reference is used in git to specify branches and tags.  A
+branch head is stored under `$GIT_DIR/refs/heads` directory, and
+a tag is stored under `$GIT_DIR/refs/tags` directory.  git
+imposes the following rules on how refs are named:
+
+. It could be named hierarchically (i.e. separated with slash
+  `/`), but each of its component cannot begin with a dot `.`;
+
+. It cannot have two consecutive dots `..` anywhere;
+
+. It cannot have ASCII control character (i.e. bytes whose
+  values are lower than \040, or \177 `DEL`), space, tilde `~`,
+  caret `{caret}`, colon `:`, question-mark `?`, asterisk `*`,
+  or open bracket `[` anywhere;
+
+. It cannot end with a slash `/`.
+
+These rules makes it easy for shell script based tools to parse
+refnames, pathname expansion by the shell when a refname is used
+unquoted (by mistake), and also avoids ambiguities in certain
+refname expressions (see gitlink:git-rev-parse[1]).  Namely:
+
+. double-dot `..` are often used as in `ref1..ref2`, and in some
+  context this notation means `{caret}ref1 ref2` (i.e. not in
+  ref1 and in ref2).
+
+. tilde `~` and caret `{caret}` are used to introduce postfix
+  'nth parent' and 'peel onion' operation.
+
+. colon `:` is used as in `srcref:dstref` to mean "use srcref\'s
+  value and store it in dstref" in fetch and push operations.
+
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-checkout-index.html b/git-checkout-index.html
new file mode 100644 (file)
index 0000000..68483bd
--- /dev/null
@@ -0,0 +1,437 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-checkout-index(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-checkout-index(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-checkout-index -\r
+   Copy files from the index to the working directory\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-checkout-index</em> [-u] [-q] [-a] [-f] [-n] [--prefix=&lt;string&gt;]\r
+        [--stage=&lt;number&gt;] [--] &lt;file&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Will copy all files listed from the index to the working directory\r
+(not overwriting existing files).</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-u|--index\r
+</dt>\r
+<dd>\r
+<p>\r
+        update stat information for the checked out entries in\r
+        the index file.\r
+</p>\r
+</dd>\r
+<dt>\r
+-q|--quiet\r
+</dt>\r
+<dd>\r
+<p>\r
+        be quiet if files exist or are not in the index\r
+</p>\r
+</dd>\r
+<dt>\r
+-f|--force\r
+</dt>\r
+<dd>\r
+<p>\r
+        forces overwrite of existing files\r
+</p>\r
+</dd>\r
+<dt>\r
+-a|--all\r
+</dt>\r
+<dd>\r
+<p>\r
+        checks out all files in the index.  Cannot be used\r
+        together with explicit filenames.\r
+</p>\r
+</dd>\r
+<dt>\r
+-n|--no-create\r
+</dt>\r
+<dd>\r
+<p>\r
+        Don't checkout new files, only refresh files already checked\r
+        out.\r
+</p>\r
+</dd>\r
+<dt>\r
+--prefix=&lt;string&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        When creating files, prepend &lt;string&gt; (usually a directory\r
+        including a trailing /)\r
+</p>\r
+</dd>\r
+<dt>\r
+--stage=&lt;number&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of checking out unmerged entries, copy out the\r
+        files from named stage.  &lt;number&gt; must be between 1 and 3.\r
+</p>\r
+</dd>\r
+<dt>\r
+&#8212;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not interpret any more arguments as options.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>The order of the flags used to matter, but not anymore.</p>\r
+<p>Just doing <tt>git-checkout-index</tt> does nothing. You probably meant\r
+<tt>git-checkout-index -a</tt>. And if you want to force it, you want\r
+<tt>git-checkout-index -f -a</tt>.</p>\r
+<p>Intuitiveness is not the goal here. Repeatability is. The reason for\r
+the "no arguments means no work" behavior is that from scripts you are\r
+supposed to be able to do:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ find . -name '*.h' -print0 | xargs -0 git-checkout-index -f --</tt></pre>\r
+</div></div>\r
+<p>which will force all existing <tt>*.h</tt> files to be replaced with their\r
+cached copies. If an empty command line implied "all", then this would\r
+force-refresh everything in the index, which was not the point.</p>\r
+<p>The <tt>--</tt> is just a good idea when you know the rest will be filenames;\r
+it will prevent problems with a filename of, for example,  <tt>-a</tt>.\r
+Using <tt>--</tt> is probably a good policy in scripts.</p>\r
+</div>\r
+<h2>EXAMPLES</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+To update and refresh only the files already checked out\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-checkout-index -n -f -a &amp;&amp; git-update-index --ignore-missing --refresh</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Using <tt>git-checkout-index</tt> to "export an entire tree"\r
+</dt>\r
+<dd>\r
+<p>\r
+        The prefix ability basically makes it trivial to use\r
+        <tt>git-checkout-index</tt> as an "export as tree" function.\r
+        Just read the desired tree into the index, and do:\r
+</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-checkout-index --prefix=git-export-dir/ -a</tt></pre>\r
+</div></div>\r
+<p><tt>git-checkout-index</tt> will "export" the index into the specified\r
+directory.</p>\r
+<p>The final "/" is important. The exported name is literally just\r
+prefixed with the specified string.  Contrast this with the\r
+following example.</p>\r
+</dd>\r
+<dt>\r
+Export files with a prefix\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-checkout-index --prefix=.merged- Makefile</tt></pre>\r
+</div></div>\r
+<p>This will check out the currently cached copy of <tt>Makefile</tt>\r
+into the file <tt>.merged-Makefile</tt>.</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves,\r
+Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:51 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-checkout-index.txt b/git-checkout-index.txt
new file mode 100644 (file)
index 0000000..9f32c65
--- /dev/null
@@ -0,0 +1,121 @@
+git-checkout-index(1)
+=====================
+
+NAME
+----
+git-checkout-index - Copy files from the index to the working directory
+
+
+SYNOPSIS
+--------
+'git-checkout-index' [-u] [-q] [-a] [-f] [-n] [--prefix=<string>]
+       [--stage=<number>] [--] <file>...
+
+DESCRIPTION
+-----------
+Will copy all files listed from the index to the working directory
+(not overwriting existing files).
+
+OPTIONS
+-------
+-u|--index::
+       update stat information for the checked out entries in
+       the index file.
+
+-q|--quiet::
+       be quiet if files exist or are not in the index
+
+-f|--force::
+       forces overwrite of existing files
+
+-a|--all::
+       checks out all files in the index.  Cannot be used
+       together with explicit filenames.
+
+-n|--no-create::
+       Don't checkout new files, only refresh files already checked
+       out.
+
+--prefix=<string>::
+       When creating files, prepend <string> (usually a directory
+       including a trailing /)
+
+--stage=<number>::
+       Instead of checking out unmerged entries, copy out the
+       files from named stage.  <number> must be between 1 and 3.
+
+--::
+       Do not interpret any more arguments as options.
+
+The order of the flags used to matter, but not anymore.
+
+Just doing `git-checkout-index` does nothing. You probably meant
+`git-checkout-index -a`. And if you want to force it, you want
+`git-checkout-index -f -a`.
+
+Intuitiveness is not the goal here. Repeatability is. The reason for
+the "no arguments means no work" behavior is that from scripts you are
+supposed to be able to do:
+
+----------------
+$ find . -name '*.h' -print0 | xargs -0 git-checkout-index -f --
+----------------
+
+which will force all existing `*.h` files to be replaced with their
+cached copies. If an empty command line implied "all", then this would
+force-refresh everything in the index, which was not the point.
+
+The `--` is just a good idea when you know the rest will be filenames;
+it will prevent problems with a filename of, for example,  `-a`.
+Using `--` is probably a good policy in scripts.
+
+
+EXAMPLES
+--------
+To update and refresh only the files already checked out::
++
+----------------
+$ git-checkout-index -n -f -a && git-update-index --ignore-missing --refresh
+----------------
+
+Using `git-checkout-index` to "export an entire tree"::
+       The prefix ability basically makes it trivial to use
+       `git-checkout-index` as an "export as tree" function.
+       Just read the desired tree into the index, and do:
++
+----------------
+$ git-checkout-index --prefix=git-export-dir/ -a
+----------------
++
+`git-checkout-index` will "export" the index into the specified
+directory.
++
+The final "/" is important. The exported name is literally just
+prefixed with the specified string.  Contrast this with the
+following example.
+
+Export files with a prefix::
++
+----------------
+$ git-checkout-index --prefix=.merged- Makefile
+----------------
++
+This will check out the currently cached copy of `Makefile`
+into the file `.merged-Makefile`.
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+
+Documentation
+--------------
+Documentation by David Greaves,
+Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-checkout.html b/git-checkout.html
new file mode 100644 (file)
index 0000000..5c06d7a
--- /dev/null
@@ -0,0 +1,371 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-checkout(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-checkout(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-checkout -\r
+   Checkout and switch to a branch.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-checkout</em> [-f] [-b &lt;new_branch&gt;] [&lt;branch&gt;] [&lt;paths&gt;&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>When &lt;paths&gt; are not given, this command switches branches, by\r
+updating the index and working tree to reflect the specified\r
+branch, &lt;branch&gt;, and updating HEAD to be &lt;branch&gt; or, if\r
+specified, &lt;new_branch&gt;.</p>\r
+<p>When &lt;paths&gt; are given, this command does <strong>not</strong> switch\r
+branches.  It updates the named paths in the working tree from\r
+the index file (i.e. it runs <tt>git-checkout-index -f -u</tt>).  In\r
+this case, <tt>-f</tt> and <tt>-b</tt> options are meaningless and giving\r
+either of them results in an error.  &lt;branch&gt; argument can be\r
+used to specify a specific tree-ish to update the index for the\r
+given paths before updating the working tree.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-f\r
+</dt>\r
+<dd>\r
+<p>\r
+        Force an re-read of everything.\r
+</p>\r
+</dd>\r
+<dt>\r
+-b\r
+</dt>\r
+<dd>\r
+<p>\r
+        Create a new branch and start it at &lt;branch&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;new_branch&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Name for the new branch.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;branch&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Branch to checkout; may be any object ID that resolves to a\r
+        commit. Defaults to HEAD.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>EXAMPLE</h2>\r
+<div class="sectionbody">\r
+<p>The following sequence checks out the <tt>master</tt> branch, reverts\r
+the <tt>Makefile</tt> to two revisions back, deletes hello.c by\r
+mistake, and gets it back from the index.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout master <b>(1)</b>\r
+$ git checkout master~2 Makefile <b>(2)</b>\r
+$ rm -f hello.c\r
+$ git checkout hello.c <b>(3)</b>\r
+\r
+<b>(1)</b> switch branch\r
+<b>(2)</b> take out a file out of other commit\r
+<b>(3)</b> or "git checkout -- hello.c", as in the next example.</tt></pre>\r
+</div></div>\r
+<p>If you have an unfortunate branch that is named <tt>hello.c</tt>, the\r
+last step above would be confused as an instruction to switch to\r
+that branch.  You should instead write:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout -- hello.c</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:51 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-checkout.txt b/git-checkout.txt
new file mode 100644 (file)
index 0000000..9442c66
--- /dev/null
@@ -0,0 +1,83 @@
+git-checkout(1)
+===============
+
+NAME
+----
+git-checkout - Checkout and switch to a branch.
+
+SYNOPSIS
+--------
+'git-checkout' [-f] [-b <new_branch>] [<branch>] [<paths>...]
+
+DESCRIPTION
+-----------
+
+When <paths> are not given, this command switches branches, by
+updating the index and working tree to reflect the specified
+branch, <branch>, and updating HEAD to be <branch> or, if
+specified, <new_branch>.
+
+When <paths> are given, this command does *not* switch
+branches.  It updates the named paths in the working tree from
+the index file (i.e. it runs `git-checkout-index -f -u`).  In
+this case, `-f` and `-b` options are meaningless and giving
+either of them results in an error.  <branch> argument can be
+used to specify a specific tree-ish to update the index for the
+given paths before updating the working tree.
+
+
+OPTIONS
+-------
+-f::
+       Force an re-read of everything.
+
+-b::
+       Create a new branch and start it at <branch>.
+
+<new_branch>::
+       Name for the new branch.
+
+<branch>::
+       Branch to checkout; may be any object ID that resolves to a
+       commit. Defaults to HEAD.
+
+
+EXAMPLE
+-------
+
+The following sequence checks out the `master` branch, reverts
+the `Makefile` to two revisions back, deletes hello.c by
+mistake, and gets it back from the index.
+
+------------
+$ git checkout master <1>
+$ git checkout master~2 Makefile <2>
+$ rm -f hello.c
+$ git checkout hello.c <3>
+
+<1> switch branch
+<2> take out a file out of other commit
+<3> or "git checkout -- hello.c", as in the next example.
+------------
+
+If you have an unfortunate branch that is named `hello.c`, the
+last step above would be confused as an instruction to switch to
+that branch.  You should instead write:
+
+------------
+$ git checkout -- hello.c
+------------
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-cherry-pick.html b/git-cherry-pick.html
new file mode 100644 (file)
index 0000000..737ef56
--- /dev/null
@@ -0,0 +1,353 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-cherry-pick(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-cherry-pick(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-cherry-pick -\r
+   Apply the change introduced by an existing commit.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-cherry-pick</em> [--edit] [-n] [-r] &lt;commit&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Given one existing commit, apply the change the patch introduces, and record a\r
+new commit that records it.  This requires your working tree to be clean (no\r
+modifications from the HEAD commit).</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;commit&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Commit to cherry-pick.\r
+</p>\r
+</dd>\r
+<dt>\r
+-e|--edit\r
+</dt>\r
+<dd>\r
+<p>\r
+        With this option, <tt>git-cherry-pick</tt> will let you edit the commit\r
+        message prior committing.\r
+</p>\r
+</dd>\r
+<dt>\r
+-r|--replay\r
+</dt>\r
+<dd>\r
+<p>\r
+        Usually the command appends which commit was\r
+        cherry-picked after the original commit message when\r
+        making a commit.  This option, <em>--replay</em>, causes it to\r
+        use the original commit message intact.  This is useful\r
+        when you are reordering the patches in your private tree\r
+        before publishing.\r
+</p>\r
+</dd>\r
+<dt>\r
+-n|--no-commit\r
+</dt>\r
+<dd>\r
+<p>\r
+        Usually the command automatically creates a commit with\r
+        a commit log message stating which commit was\r
+        cherry-picked.  This flag applies the change necessary\r
+        to cherry-pick the named commit to your working tree,\r
+        but does not make the commit.  In addition, when this\r
+        option is used, your working tree does not have to match\r
+        the HEAD commit.  The cherry-pick is done against the\r
+        beginning state of your working tree.\r
+</p>\r
+<p>This is useful when cherry-picking more than one commits'\r
+effect to your working tree in a row.</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:52 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-cherry-pick.txt b/git-cherry-pick.txt
new file mode 100644 (file)
index 0000000..4f323fa
--- /dev/null
@@ -0,0 +1,60 @@
+git-cherry-pick(1)
+==================
+
+NAME
+----
+git-cherry-pick - Apply the change introduced by an existing commit.
+
+SYNOPSIS
+--------
+'git-cherry-pick' [--edit] [-n] [-r] <commit>
+
+DESCRIPTION
+-----------
+Given one existing commit, apply the change the patch introduces, and record a
+new commit that records it.  This requires your working tree to be clean (no
+modifications from the HEAD commit).
+
+OPTIONS
+-------
+<commit>::
+       Commit to cherry-pick.
+
+-e|--edit::
+       With this option, `git-cherry-pick` will let you edit the commit
+       message prior committing.
+
+-r|--replay::
+       Usually the command appends which commit was
+       cherry-picked after the original commit message when
+       making a commit.  This option, '--replay', causes it to
+       use the original commit message intact.  This is useful
+       when you are reordering the patches in your private tree
+       before publishing.
+
+-n|--no-commit::
+       Usually the command automatically creates a commit with
+       a commit log message stating which commit was
+       cherry-picked.  This flag applies the change necessary
+       to cherry-pick the named commit to your working tree,
+       but does not make the commit.  In addition, when this
+       option is used, your working tree does not have to match
+       the HEAD commit.  The cherry-pick is done against the
+       beginning state of your working tree.
++
+This is useful when cherry-picking more than one commits'
+effect to your working tree in a row.
+
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-cherry.html b/git-cherry.html
new file mode 100644 (file)
index 0000000..a78b8e0
--- /dev/null
@@ -0,0 +1,332 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-cherry(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-cherry(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-cherry -\r
+   Find commits not merged upstream.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-cherry</em> [-v] &lt;upstream&gt; [&lt;head&gt;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Each commit between the fork-point and &lt;head&gt; is examined, and compared against\r
+the change each commit between the fork-point and &lt;upstream&gt; introduces.\r
+Commits already included in upstream are prefixed with <em>-</em> (meaning "drop from\r
+my local pull"), while commits missing from upstream are prefixed with <em>+</em>\r
+(meaning "add to the updated upstream").</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+        Verbose.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;upstream&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Upstream branch to compare against.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;head&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Working branch; defaults to HEAD.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:53 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-cherry.txt b/git-cherry.txt
new file mode 100644 (file)
index 0000000..af87966
--- /dev/null
@@ -0,0 +1,42 @@
+git-cherry(1)
+=============
+
+NAME
+----
+git-cherry - Find commits not merged upstream.
+
+SYNOPSIS
+--------
+'git-cherry' [-v] <upstream> [<head>]
+
+DESCRIPTION
+-----------
+Each commit between the fork-point and <head> is examined, and compared against
+the change each commit between the fork-point and <upstream> introduces.
+Commits already included in upstream are prefixed with '-' (meaning "drop from
+my local pull"), while commits missing from upstream are prefixed with '+'
+(meaning "add to the updated upstream").
+
+OPTIONS
+-------
+-v::
+       Verbose.
+
+<upstream>::
+       Upstream branch to compare against.
+
+<head>::
+       Working branch; defaults to HEAD.
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-clone-pack.html b/git-clone-pack.html
new file mode 100644 (file)
index 0000000..a60c926
--- /dev/null
@@ -0,0 +1,356 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-clone-pack(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-clone-pack(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-clone-pack -\r
+   Clones a repository by receiving packed objects.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-clone-pack</em> [--exec=&lt;git-upload-pack&gt;] [&lt;host&gt;:]&lt;directory&gt; [&lt;head&gt;&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Clones a repository into the current repository by invoking\r
+<em>git-upload-pack</em>, possibly on the remote host via ssh, in\r
+the named repository, and stores the sent pack in the local\r
+repository.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--exec=&lt;git-upload-pack&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Use this to specify the path to <em>git-upload-pack</em> on the\r
+        remote side, if it is not found on your $PATH.\r
+        Installations of sshd ignore the user's environment\r
+        setup scripts for login shells (e.g. .bash_profile) and\r
+        your privately installed git may not be found on the system\r
+        default $PATH.  Another workaround suggested is to set\r
+        up your $PATH in ".bashrc", but this flag is for people\r
+        who do not want to pay the overhead for non-interactive\r
+        shells by having a lean .bashrc file (they set most of\r
+        the things up in .bash_profile).\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;host&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        A remote host that houses the repository.  When this\r
+        part is specified, <em>git-upload-pack</em> is invoked via\r
+        ssh.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;directory&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The repository to sync from.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;head&gt;&#8230;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The heads to update.  This is relative to $GIT_DIR\r
+        (e.g. "HEAD", "refs/heads/master").  When unspecified,\r
+        all heads are updated to match the remote repository.\r
+</p>\r
+<p>Usually all the refs from existing repository are stored\r
+under the same name in the new repository.  Giving explicit\r
+&lt;head&gt; arguments instead writes the object names and refs to\r
+the standard output, just like get-fetch-pack does.</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:53 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-clone-pack.txt b/git-clone-pack.txt
new file mode 100644 (file)
index 0000000..39906fc
--- /dev/null
@@ -0,0 +1,64 @@
+git-clone-pack(1)
+=================
+
+NAME
+----
+git-clone-pack - Clones a repository by receiving packed objects.
+
+
+SYNOPSIS
+--------
+'git-clone-pack' [--exec=<git-upload-pack>] [<host>:]<directory> [<head>...]
+
+DESCRIPTION
+-----------
+Clones a repository into the current repository by invoking
+'git-upload-pack', possibly on the remote host via ssh, in
+the named repository, and stores the sent pack in the local
+repository.
+
+OPTIONS
+-------
+--exec=<git-upload-pack>::
+       Use this to specify the path to 'git-upload-pack' on the
+       remote side, if it is not found on your $PATH.
+       Installations of sshd ignore the user's environment
+       setup scripts for login shells (e.g. .bash_profile) and
+       your privately installed git may not be found on the system
+       default $PATH.  Another workaround suggested is to set
+       up your $PATH in ".bashrc", but this flag is for people
+       who do not want to pay the overhead for non-interactive
+       shells by having a lean .bashrc file (they set most of
+       the things up in .bash_profile).
+
+<host>::
+       A remote host that houses the repository.  When this
+       part is specified, 'git-upload-pack' is invoked via
+       ssh.
+
+<directory>::
+       The repository to sync from.
+
+<head>...::
+       The heads to update.  This is relative to $GIT_DIR
+       (e.g. "HEAD", "refs/heads/master").  When unspecified,
+       all heads are updated to match the remote repository.
++
+Usually all the refs from existing repository are stored
+under the same name in the new repository.  Giving explicit
+<head> arguments instead writes the object names and refs to
+the standard output, just like get-fetch-pack does.
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano.
+
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-clone.html b/git-clone.html
new file mode 100644 (file)
index 0000000..f83caa1
--- /dev/null
@@ -0,0 +1,441 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-clone(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-clone(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-clone -\r
+   Clones a repository.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-clone</em> [-l [-s]] [-q] [-n] [-o &lt;name&gt;] [-u &lt;upload-pack&gt;] &lt;repository&gt; [&lt;directory&gt;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Clones a repository into a newly created directory.  All remote\r
+branch heads are copied under <tt>$GIT_DIR/refs/heads/</tt>, except\r
+that the remote <tt>master</tt> is also copied to <tt>origin</tt> branch.</p>\r
+<p>In addition, <tt>$GIT_DIR/remotes/origin</tt> file is set up to have\r
+this line:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>Pull: master:origin</tt></pre>\r
+</div></div>\r
+<p>This is to help the typical workflow of working off of the\r
+remote <tt>master</tt> branch.  Every time <tt>git pull</tt> without argument\r
+is run, the progress on the remote <tt>master</tt> branch is tracked by\r
+copying it into the local <tt>origin</tt> branch, and merged into the\r
+branch you are currently working on.  Remote branches other than\r
+<tt>master</tt> are also added there to be tracked.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--local\r
+</dt>\r
+<dt>\r
+-l\r
+</dt>\r
+<dd>\r
+<p>\r
+        When the repository to clone from is on a local machine,\r
+        this flag bypasses normal "git aware" transport\r
+        mechanism and clones the repository by making a copy of\r
+        HEAD and everything under objects and refs directories.\r
+        The files under .git/objects/ directory are hardlinked\r
+        to save space when possible.\r
+</p>\r
+</dd>\r
+<dt>\r
+--shared\r
+</dt>\r
+<dt>\r
+-s\r
+</dt>\r
+<dd>\r
+<p>\r
+        When the repository to clone is on the local machine,\r
+        instead of using hard links, automatically setup\r
+        .git/objects/info/alternatives to share the objects\r
+        with the source repository.  The resulting repository\r
+        starts out without any object of its own.\r
+</p>\r
+</dd>\r
+<dt>\r
+--quiet\r
+</dt>\r
+<dt>\r
+-q\r
+</dt>\r
+<dd>\r
+<p>\r
+        Operate quietly.  This flag is passed to "rsync" and\r
+        "git-clone-pack" commands when given.\r
+</p>\r
+</dd>\r
+<dt>\r
+-n\r
+</dt>\r
+<dd>\r
+<p>\r
+        No checkout of HEAD is performed after the clone is complete.\r
+</p>\r
+</dd>\r
+<dt>\r
+-o &lt;name&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of using the branch name <em>origin</em> to keep track\r
+        of the upstream repository, use &lt;name&gt; instead.  Note\r
+        that the shorthand name stored in <tt>remotes/origin</tt> is\r
+        not affected, but the local branch name to pull the\r
+        remote <tt>master</tt> branch into is.\r
+</p>\r
+</dd>\r
+<dt>\r
+--upload-pack &lt;upload-pack&gt;\r
+</dt>\r
+<dt>\r
+-u &lt;upload-pack&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        When given, and the repository to clone from is handled\r
+        by <em>git-clone-pack</em>, <em>--exec=&lt;upload-pack&gt;</em> is passed to\r
+        the command to specify non-default path for the command\r
+        run on the other end.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;repository&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The (possibly remote) repository to clone from.  It can\r
+        be any URL git-fetch supports.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;directory&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The name of a new directory to clone into.  The "humanish"\r
+        part of the source repository is used if no directory is\r
+        explicitly given ("repo" for "/path/to/repo.git" and "foo"\r
+        for "host.xz:foo/.git").  Cloning into an existing directory\r
+        is not allowed.\r
+</p>\r
+</dd>\r
+</dl>\r
+<h3>Examples</h3>\r
+<dl>\r
+<dt>\r
+Clone from upstream\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6\r
+$ cd my2.6\r
+$ make</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Make a local clone that borrows from the current directory, without checking things out\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git clone -l -s -n . ../copy\r
+$ cd copy\r
+$ git show-branch</tt></pre>\r
+</div></div>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:54 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-clone.txt b/git-clone.txt
new file mode 100644 (file)
index 0000000..f943f26
--- /dev/null
@@ -0,0 +1,117 @@
+git-clone(1)
+============
+
+NAME
+----
+git-clone - Clones a repository.
+
+
+SYNOPSIS
+--------
+'git-clone' [-l [-s]] [-q] [-n] [-o <name>] [-u <upload-pack>] <repository> [<directory>]
+
+DESCRIPTION
+-----------
+Clones a repository into a newly created directory.  All remote
+branch heads are copied under `$GIT_DIR/refs/heads/`, except
+that the remote `master` is also copied to `origin` branch.
+
+In addition, `$GIT_DIR/remotes/origin` file is set up to have
+this line:
+
+       Pull: master:origin
+
+This is to help the typical workflow of working off of the
+remote `master` branch.  Every time `git pull` without argument
+is run, the progress on the remote `master` branch is tracked by
+copying it into the local `origin` branch, and merged into the
+branch you are currently working on.  Remote branches other than
+`master` are also added there to be tracked.
+
+
+OPTIONS
+-------
+--local::
+-l::
+       When the repository to clone from is on a local machine,
+       this flag bypasses normal "git aware" transport
+       mechanism and clones the repository by making a copy of
+       HEAD and everything under objects and refs directories.
+       The files under .git/objects/ directory are hardlinked
+       to save space when possible.
+
+--shared::
+-s::
+       When the repository to clone is on the local machine,
+       instead of using hard links, automatically setup
+       .git/objects/info/alternatives to share the objects
+       with the source repository.  The resulting repository
+       starts out without any object of its own.
+
+--quiet::
+-q::
+       Operate quietly.  This flag is passed to "rsync" and
+       "git-clone-pack" commands when given.
+
+-n::
+       No checkout of HEAD is performed after the clone is complete.
+
+-o <name>::
+       Instead of using the branch name 'origin' to keep track
+       of the upstream repository, use <name> instead.  Note
+       that the shorthand name stored in `remotes/origin` is
+       not affected, but the local branch name to pull the
+       remote `master` branch into is.
+
+--upload-pack <upload-pack>::
+-u <upload-pack>::
+       When given, and the repository to clone from is handled
+       by 'git-clone-pack', '--exec=<upload-pack>' is passed to
+       the command to specify non-default path for the command
+       run on the other end.
+
+<repository>::
+       The (possibly remote) repository to clone from.  It can
+       be any URL git-fetch supports.
+
+<directory>::
+       The name of a new directory to clone into.  The "humanish"
+       part of the source repository is used if no directory is
+       explicitly given ("repo" for "/path/to/repo.git" and "foo"
+       for "host.xz:foo/.git").  Cloning into an existing directory
+       is not allowed.
+
+Examples
+~~~~~~~~
+
+Clone from upstream::
++
+------------
+$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
+$ cd my2.6
+$ make
+------------
+
+
+Make a local clone that borrows from the current directory, without checking things out::
++
+------------
+$ git clone -l -s -n . ../copy
+$ cd copy
+$ git show-branch
+------------
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-commit-tree.html b/git-commit-tree.html
new file mode 100644 (file)
index 0000000..6e0bc36
--- /dev/null
@@ -0,0 +1,409 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-commit-tree(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-commit-tree(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-commit-tree -\r
+   Creates a new commit object\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-commit-tree</em> &lt;tree&gt; [-p &lt;parent commit&gt;]* &lt; changelog</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Creates a new commit object based on the provided tree object and\r
+emits the new commit object id on stdout. If no parent is given then\r
+it is considered to be an initial tree.</p>\r
+<p>A commit object usually has 1 parent (a commit after a change) or up\r
+to 16 parents.  More than one parent represents a merge of branches\r
+that led to them.</p>\r
+<p>While a tree represents a particular directory state of a working\r
+directory, a commit represents that state in "time", and explains how\r
+to get there.</p>\r
+<p>Normally a commit would identify a new "HEAD" state, and while git\r
+doesn't care where you save the note about that state, in practice we\r
+tend to just write the result to the file that is pointed at by\r
+<tt>.git/HEAD</tt>, so that we can always see what the last committed\r
+state was.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;tree&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        An existing tree object\r
+</p>\r
+</dd>\r
+<dt>\r
+-p &lt;parent commit&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Each <em>-p</em> indicates the id of a parent commit object.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Commit Information</h2>\r
+<div class="sectionbody">\r
+<p>A commit encapsulates:</p>\r
+<ul>\r
+<li>\r
+<p>\r
+all parent object ids\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+author name, email and date\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+committer name and email and the commit time.\r
+</p>\r
+</li>\r
+</ul>\r
+<p>If not provided, "git-commit-tree" uses your name, hostname and domain to\r
+provide author and committer info. This can be overridden by\r
+either <tt>.git/config</tt> file, or using the following environment variables.</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>GIT_AUTHOR_NAME\r
+GIT_AUTHOR_EMAIL\r
+GIT_AUTHOR_DATE\r
+GIT_COMMITTER_NAME\r
+GIT_COMMITTER_EMAIL</tt></pre>\r
+</div></div>\r
+<p>(nb "&lt;", "&gt;" and "\n"s are stripped)</p>\r
+<p>In <tt>.git/config</tt> file, the following items are used:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>[user]\r
+        name = "Your Name"\r
+        email = "your@email.address.xz"</tt></pre>\r
+</div></div>\r
+<p>A commit comment is read from stdin (max 999 chars). If a changelog\r
+entry is not provided via "&lt;" redirection, "git-commit-tree" will just wait\r
+for one to be entered and terminated with ^D.</p>\r
+</div>\r
+<h2>Diagnostics</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+You don't exist. Go away!\r
+</dt>\r
+<dd>\r
+<p>\r
+    The passwd(5) gecos field couldn't be read\r
+</p>\r
+</dd>\r
+<dt>\r
+Your parents must have hated you!\r
+</dt>\r
+<dd>\r
+<p>\r
+    The password(5) gecos field is longer than a giant static buffer.\r
+</p>\r
+</dd>\r
+<dt>\r
+Your sysadmin must hate you!\r
+</dt>\r
+<dd>\r
+<p>\r
+    The password(5) name field is longer than a giant static buffer.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>See Also</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-write-tree.html">git-write-tree(1)</a></p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:55 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-commit-tree.txt b/git-commit-tree.txt
new file mode 100644 (file)
index 0000000..a794192
--- /dev/null
@@ -0,0 +1,99 @@
+git-commit-tree(1)
+==================
+
+NAME
+----
+git-commit-tree - Creates a new commit object
+
+
+SYNOPSIS
+--------
+'git-commit-tree' <tree> [-p <parent commit>]\* < changelog
+
+DESCRIPTION
+-----------
+Creates a new commit object based on the provided tree object and
+emits the new commit object id on stdout. If no parent is given then
+it is considered to be an initial tree.
+
+A commit object usually has 1 parent (a commit after a change) or up
+to 16 parents.  More than one parent represents a merge of branches
+that led to them.
+
+While a tree represents a particular directory state of a working
+directory, a commit represents that state in "time", and explains how
+to get there.
+
+Normally a commit would identify a new "HEAD" state, and while git
+doesn't care where you save the note about that state, in practice we
+tend to just write the result to the file that is pointed at by
+`.git/HEAD`, so that we can always see what the last committed
+state was.
+
+OPTIONS
+-------
+<tree>::
+       An existing tree object
+
+-p <parent commit>::
+       Each '-p' indicates the id of a parent commit object.
+       
+
+Commit Information
+------------------
+
+A commit encapsulates:
+
+- all parent object ids
+- author name, email and date
+- committer name and email and the commit time.
+
+If not provided, "git-commit-tree" uses your name, hostname and domain to
+provide author and committer info. This can be overridden by
+either `.git/config` file, or using the following environment variables.
+
+       GIT_AUTHOR_NAME
+       GIT_AUTHOR_EMAIL
+       GIT_AUTHOR_DATE
+       GIT_COMMITTER_NAME
+       GIT_COMMITTER_EMAIL
+
+(nb "<", ">" and "\n"s are stripped)
+
+In `.git/config` file, the following items are used:
+
+       [user]
+               name = "Your Name"
+               email = "your@email.address.xz"
+
+A commit comment is read from stdin (max 999 chars). If a changelog
+entry is not provided via "<" redirection, "git-commit-tree" will just wait
+for one to be entered and terminated with ^D.
+
+
+Diagnostics
+-----------
+You don't exist. Go away!::
+    The passwd(5) gecos field couldn't be read
+Your parents must have hated you!::
+    The password(5) gecos field is longer than a giant static buffer.
+Your sysadmin must hate you!::
+    The password(5) name field is longer than a giant static buffer.
+
+See Also
+--------
+gitlink:git-write-tree[1]
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-commit.html b/git-commit.html
new file mode 100644 (file)
index 0000000..7dfc309
--- /dev/null
@@ -0,0 +1,402 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-commit(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-commit(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-commit -\r
+   Record your changes\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-commit</em> [-a] [-s] [-v] [(-c | -C) &lt;commit&gt; | -F &lt;file&gt; | -m &lt;msg&gt;] [-e] [--] &lt;file&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Updates the index file for given paths, or all modified files if\r
+<em>-a</em> is specified, and makes a commit object.  The command\r
+VISUAL and EDITOR environment variables to edit the commit log\r
+message.</p>\r
+<p>This command can run <tt>commit-msg</tt>, <tt>pre-commit</tt>, and\r
+<tt>post-commit</tt> hooks.  See <a href="hooks.html">hooks</a> for more\r
+information.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-a|--all\r
+</dt>\r
+<dd>\r
+<p>\r
+        Update all paths in the index file.\r
+</p>\r
+</dd>\r
+<dt>\r
+-c or -C &lt;commit&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Take existing commit object, and reuse the log message\r
+        and the authorship information (including the timestamp)\r
+        when creating the commit.  With <em>-C</em>, the editor is not\r
+        invoked; with <em>-c</em> the user can further edit the commit\r
+        message.\r
+</p>\r
+</dd>\r
+<dt>\r
+-F &lt;file&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Take the commit message from the given file.  Use <em>-</em> to\r
+        read the message from the standard input.\r
+</p>\r
+</dd>\r
+<dt>\r
+-m &lt;msg&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Use the given &lt;msg&gt; as the commit message.\r
+</p>\r
+</dd>\r
+<dt>\r
+-s|--signoff\r
+</dt>\r
+<dd>\r
+<p>\r
+        Add Signed-off-by line at the end of the commit message.\r
+</p>\r
+</dd>\r
+<dt>\r
+-v|--verify\r
+</dt>\r
+<dd>\r
+<p>\r
+        Look for suspicious lines the commit introduces, and\r
+        abort committing if there is one.  The definition of\r
+        <em>suspicious lines</em> is currently the lines that has\r
+        trailing whitespaces, and the lines whose indentation\r
+        has a SP character immediately followed by a TAB\r
+        character.  This is the default.\r
+</p>\r
+</dd>\r
+<dt>\r
+-n|--no-verify\r
+</dt>\r
+<dd>\r
+<p>\r
+        The opposite of <tt>--verify</tt>.\r
+</p>\r
+</dd>\r
+<dt>\r
+-e|--edit\r
+</dt>\r
+<dd>\r
+<p>\r
+        The message taken from file with <tt>-F</tt>, command line with\r
+        <tt>-m</tt>, and from file with <tt>-C</tt> are usually used as the\r
+        commit log message unmodified.  This option lets you\r
+        further edit the message taken from these sources.\r
+</p>\r
+</dd>\r
+<dt>\r
+&#8212;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not interpret any more arguments as options.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;file&gt;&#8230;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Update specified paths in the index file before committing.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>If you make a commit and then found a mistake immediately after\r
+that, you can recover from it with <a href="git-reset.html">git-reset(1)</a>.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt; and\r
+Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:56 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-commit.txt b/git-commit.txt
new file mode 100644 (file)
index 0000000..8b91f22
--- /dev/null
@@ -0,0 +1,81 @@
+git-commit(1)
+=============
+
+NAME
+----
+git-commit - Record your changes
+
+SYNOPSIS
+--------
+'git-commit' [-a] [-s] [-v] [(-c | -C) <commit> | -F <file> | -m <msg>] [-e] [--] <file>...
+
+DESCRIPTION
+-----------
+Updates the index file for given paths, or all modified files if
+'-a' is specified, and makes a commit object.  The command
+VISUAL and EDITOR environment variables to edit the commit log
+message.
+
+This command can run `commit-msg`, `pre-commit`, and
+`post-commit` hooks.  See link:hooks.html[hooks] for more
+information.
+
+OPTIONS
+-------
+-a|--all::
+       Update all paths in the index file.
+
+-c or -C <commit>::
+       Take existing commit object, and reuse the log message
+       and the authorship information (including the timestamp)
+       when creating the commit.  With '-C', the editor is not
+       invoked; with '-c' the user can further edit the commit
+       message.
+
+-F <file>::
+       Take the commit message from the given file.  Use '-' to
+       read the message from the standard input.
+
+-m <msg>::
+       Use the given <msg> as the commit message.
+
+-s|--signoff::
+       Add Signed-off-by line at the end of the commit message.
+
+-v|--verify::
+       Look for suspicious lines the commit introduces, and
+       abort committing if there is one.  The definition of
+       'suspicious lines' is currently the lines that has
+       trailing whitespaces, and the lines whose indentation
+       has a SP character immediately followed by a TAB
+       character.  This is the default.
+
+-n|--no-verify::
+       The opposite of `--verify`.
+
+-e|--edit::
+       The message taken from file with `-F`, command line with
+       `-m`, and from file with `-C` are usually used as the
+       commit log message unmodified.  This option lets you
+       further edit the message taken from these sources.
+
+--::
+       Do not interpret any more arguments as options.
+
+<file>...::
+       Update specified paths in the index file before committing.
+
+
+If you make a commit and then found a mistake immediately after
+that, you can recover from it with gitlink:git-reset[1].
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org> and
+Junio C Hamano <junkio@cox.net>
+
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-convert-objects.html b/git-convert-objects.html
new file mode 100644 (file)
index 0000000..9d2d35a
--- /dev/null
@@ -0,0 +1,299 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-convert-objects(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-convert-objects(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-convert-objects -\r
+   Converts old-style git repository\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-convert-objects</em></p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Converts old-style git repository to the latest format</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:57 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-convert-objects.txt b/git-convert-objects.txt
new file mode 100644 (file)
index 0000000..b1220c0
--- /dev/null
@@ -0,0 +1,29 @@
+git-convert-objects(1)
+======================
+
+NAME
+----
+git-convert-objects - Converts old-style git repository
+
+
+SYNOPSIS
+--------
+'git-convert-objects'
+
+DESCRIPTION
+-----------
+Converts old-style git repository to the latest format
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-count-objects.html b/git-count-objects.html
new file mode 100644 (file)
index 0000000..b084b6a
--- /dev/null
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-count-objects(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-count-objects(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-count-objects -\r
+   Reports on unpacked objects.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-count-objects</em></p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>This counts the number of unpacked object files and disk space consumed by\r
+them, to help you decide when it is a good time to repack.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:57 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-count-objects.txt b/git-count-objects.txt
new file mode 100644 (file)
index 0000000..36888d9
--- /dev/null
@@ -0,0 +1,28 @@
+git-count-objects(1)
+====================
+
+NAME
+----
+git-count-objects - Reports on unpacked objects.
+
+SYNOPSIS
+--------
+'git-count-objects'
+
+DESCRIPTION
+-----------
+This counts the number of unpacked object files and disk space consumed by
+them, to help you decide when it is a good time to repack.
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-cvsexportcommit.html b/git-cvsexportcommit.html
new file mode 100644 (file)
index 0000000..bf23276
--- /dev/null
@@ -0,0 +1,339 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-cvsexportcommit(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-cvsexportcommit(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-cvsexportcommit -\r
+   Export a commit to a CVS checkout\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p>git-cvsexportcommmit.perl\r
+                        [ -h ] [ -v ] [ -c ] [ -p ] [PARENTCOMMIT] COMMITID</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Exports a commit from GIT to a CVS checkout, making it easier\r
+to merge patches from a git repository into a CVS repository.</p>\r
+<p>Execute it from the root of the CVS working copy. GIT_DIR must be defined.</p>\r
+<p>It does its best to do the safe thing, it will check that the files are\r
+unchanged and up to date in the CVS checkout, and it will not autocommit\r
+by default.</p>\r
+<p>Supports file additions, removals, and commits that affect binary files.</p>\r
+<p>If the commit is a merge commit, you must tell git-cvsapplycommit what parent\r
+should the changeset be done against.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-c\r
+</dt>\r
+<dd>\r
+<p>\r
+        Commit automatically if the patch applied cleanly. It will not\r
+        commit if any hunks fail to apply or there were other problems.\r
+</p>\r
+</dd>\r
+<dt>\r
+-p\r
+</dt>\r
+<dd>\r
+<p>\r
+        Be pedantic (paranoid) when applying patches. Invokes patch with\r
+        --fuzz=0\r
+</p>\r
+</dd>\r
+<dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+        Verbose.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Martin Langhoff &lt;martin@catalyst.net.nz&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Martin Langhoff &lt;martin@catalyst.net.nz&gt;</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:58 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-cvsexportcommit.txt b/git-cvsexportcommit.txt
new file mode 100644 (file)
index 0000000..91def2b
--- /dev/null
@@ -0,0 +1,56 @@
+git-cvsexportcommit(1)
+======================
+
+NAME
+----
+git-cvsexportcommit - Export a commit to a CVS checkout
+
+
+SYNOPSIS
+--------
+git-cvsexportcommmit.perl 
+                        [ -h ] [ -v ] [ -c ] [ -p ] [PARENTCOMMIT] COMMITID 
+
+
+DESCRIPTION
+-----------
+Exports a commit from GIT to a CVS checkout, making it easier
+to merge patches from a git repository into a CVS repository. 
+
+Execute it from the root of the CVS working copy. GIT_DIR must be defined. 
+
+It does its best to do the safe thing, it will check that the files are 
+unchanged and up to date in the CVS checkout, and it will not autocommit 
+by default.
+
+Supports file additions, removals, and commits that affect binary files.
+
+If the commit is a merge commit, you must tell git-cvsapplycommit what parent
+should the changeset be done against. 
+
+OPTIONS
+-------
+
+-c::
+       Commit automatically if the patch applied cleanly. It will not
+       commit if any hunks fail to apply or there were other problems.
+
+-p::
+       Be pedantic (paranoid) when applying patches. Invokes patch with 
+       --fuzz=0
+
+-v::
+       Verbose.
+
+Author
+------
+Written by Martin Langhoff <martin@catalyst.net.nz>
+
+Documentation
+--------------
+Documentation by Martin Langhoff <martin@catalyst.net.nz>
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-cvsimport.html b/git-cvsimport.html
new file mode 100644 (file)
index 0000000..b3974f9
--- /dev/null
@@ -0,0 +1,455 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-cvsimport(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-cvsimport(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-cvsimport -\r
+   Import a CVS repository into git\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-cvsimport</em> [ -o &lt;branch-for-HEAD&gt; ] [ -h ] [ -v ]\r
+                        [ -d &lt;CVSROOT&gt; ] [ -p &lt;options-for-cvsps&gt; ]\r
+                        [ -C &lt;git_repository&gt; ] [ -i ] [ -P &lt;file&gt; ] [ -k ]\r
+                        [ -s &lt;subst&gt; ] [ -m ] [ -M regex ] [ &lt;CVS_module&gt; ]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Imports a CVS repository into git. It will either create a new\r
+repository, or incrementally import into an existing one.</p>\r
+<p>Splitting the CVS log into patch sets is done by <em>cvsps</em>.\r
+At least version 2.1 is required.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-d &lt;CVSROOT&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The root of the CVS archive. May be local (a simple path) or remote;\r
+        currently, only the :local:, :ext: and :pserver: access methods\r
+        are supported.\r
+</p>\r
+</dd>\r
+<dt>\r
+-C &lt;target-dir&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The git repository to import to.  If the directory doesn't\r
+        exist, it will be created.  Default is the current directory.\r
+</p>\r
+</dd>\r
+<dt>\r
+-i\r
+</dt>\r
+<dd>\r
+<p>\r
+        Import-only: don't perform a checkout after importing.  This option\r
+        ensures the working directory and index remain untouched and will\r
+        not create them if they do not exist.\r
+</p>\r
+</dd>\r
+<dt>\r
+-k\r
+</dt>\r
+<dd>\r
+<p>\r
+        Kill keywords: will extract files with -kk from the CVS archive\r
+        to avoid noisy changesets. Highly recommended, but off by default\r
+        to preserve compatibility with early imported trees.\r
+</p>\r
+</dd>\r
+<dt>\r
+-u\r
+</dt>\r
+<dd>\r
+<p>\r
+        Convert underscores in tag and branch names to dots.\r
+</p>\r
+</dd>\r
+<dt>\r
+-o &lt;branch-for-HEAD&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The <em>HEAD</em> branch from CVS is imported to the <em>origin</em> branch within\r
+        the git repository, as <em>HEAD</em> already has a special meaning for git.\r
+        Use this option if you want to import into a different branch.\r
+</p>\r
+<p>Use <em>-o master</em> for continuing an import that was initially done by\r
+the old cvs2git tool.</p>\r
+</dd>\r
+<dt>\r
+-p &lt;options-for-cvsps&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Additional options for cvsps.\r
+        The options <em>-u</em> and <em>-A</em> are implicit and should not be used here.\r
+</p>\r
+<p>If you need to pass multiple options, separate them with a comma.</p>\r
+</dd>\r
+<dt>\r
+-P &lt;cvsps-output-file&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of calling cvsps, read the provided cvsps output file. Useful\r
+        for debugging or when cvsps is being handled outside cvsimport.\r
+</p>\r
+</dd>\r
+<dt>\r
+-m\r
+</dt>\r
+<dd>\r
+<p>\r
+        Attempt to detect merges based on the commit message. This option\r
+        will enable default regexes that try to capture the name source\r
+        branch name from the commit message.\r
+</p>\r
+</dd>\r
+<dt>\r
+-M &lt;regex&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Attempt to detect merges based on the commit message with a custom\r
+        regex. It can be used with -m to also see the default regexes.\r
+        You must escape forward slashes.\r
+</p>\r
+</dd>\r
+<dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+        Verbosity: let <em>cvsimport</em> report what it is doing.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;CVS_module&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The CVS module you want to import. Relative to &lt;CVSROOT&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+-h\r
+</dt>\r
+<dd>\r
+<p>\r
+        Print a short usage message and exit.\r
+</p>\r
+</dd>\r
+<dt>\r
+-z &lt;fuzz&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Pass the timestamp fuzz factor to cvsps.\r
+</p>\r
+</dd>\r
+<dt>\r
+-s &lt;subst&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Substitute the character "/" in branch names with &lt;subst&gt;\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>OUTPUT</h2>\r
+<div class="sectionbody">\r
+<p>If <em>-v</em> is specified, the script reports what it is doing.</p>\r
+<p>Otherwise, success is indicated the Unix way, i.e. by simply exiting with\r
+a zero exit status.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Matthias Urlichs &lt;smurf@smurf.noris.de&gt;, with help from\r
+various participants of the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Matthias Urlichs &lt;smurf@smurf.noris.de&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:58 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-cvsimport.txt b/git-cvsimport.txt
new file mode 100644 (file)
index 0000000..f89b251
--- /dev/null
@@ -0,0 +1,112 @@
+git-cvsimport(1)
+================
+
+NAME
+----
+git-cvsimport - Import a CVS repository into git
+
+
+SYNOPSIS
+--------
+'git-cvsimport' [ -o <branch-for-HEAD> ] [ -h ] [ -v ]
+                       [ -d <CVSROOT> ] [ -p <options-for-cvsps> ]
+                       [ -C <git_repository> ] [ -i ] [ -P <file> ] [ -k ]
+                       [ -s <subst> ] [ -m ] [ -M regex ] [ <CVS_module> ]
+
+
+DESCRIPTION
+-----------
+Imports a CVS repository into git. It will either create a new
+repository, or incrementally import into an existing one.
+
+Splitting the CVS log into patch sets is done by 'cvsps'.
+At least version 2.1 is required.
+
+OPTIONS
+-------
+-d <CVSROOT>::
+       The root of the CVS archive. May be local (a simple path) or remote;
+       currently, only the :local:, :ext: and :pserver: access methods 
+       are supported.
+
+-C <target-dir>::
+        The git repository to import to.  If the directory doesn't
+        exist, it will be created.  Default is the current directory.
+
+-i::
+       Import-only: don't perform a checkout after importing.  This option
+       ensures the working directory and index remain untouched and will
+       not create them if they do not exist.
+
+-k::
+       Kill keywords: will extract files with -kk from the CVS archive
+       to avoid noisy changesets. Highly recommended, but off by default
+       to preserve compatibility with early imported trees. 
+
+-u::
+       Convert underscores in tag and branch names to dots.
+
+-o <branch-for-HEAD>::
+       The 'HEAD' branch from CVS is imported to the 'origin' branch within
+       the git repository, as 'HEAD' already has a special meaning for git.
+       Use this option if you want to import into a different branch.
++
+Use '-o master' for continuing an import that was initially done by
+the old cvs2git tool.
+
+-p <options-for-cvsps>::
+       Additional options for cvsps.
+       The options '-u' and '-A' are implicit and should not be used here.
++
+If you need to pass multiple options, separate them with a comma.
+
+-P <cvsps-output-file>::
+       Instead of calling cvsps, read the provided cvsps output file. Useful
+       for debugging or when cvsps is being handled outside cvsimport.
+
+-m::    
+       Attempt to detect merges based on the commit message. This option
+       will enable default regexes that try to capture the name source 
+       branch name from the commit message. 
+
+-M <regex>::
+       Attempt to detect merges based on the commit message with a custom
+       regex. It can be used with -m to also see the default regexes. 
+       You must escape forward slashes. 
+
+-v::
+       Verbosity: let 'cvsimport' report what it is doing.
+
+<CVS_module>::
+       The CVS module you want to import. Relative to <CVSROOT>.
+
+-h::
+       Print a short usage message and exit.
+
+-z <fuzz>::
+        Pass the timestamp fuzz factor to cvsps.
+
+-s <subst>::
+       Substitute the character "/" in branch names with <subst>
+
+OUTPUT
+------
+If '-v' is specified, the script reports what it is doing.
+
+Otherwise, success is indicated the Unix way, i.e. by simply exiting with
+a zero exit status.
+
+
+Author
+------
+Written by Matthias Urlichs <smurf@smurf.noris.de>, with help from
+various participants of the git-list <git@vger.kernel.org>.
+
+Documentation
+--------------
+Documentation by Matthias Urlichs <smurf@smurf.noris.de>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-daemon.html b/git-daemon.html
new file mode 100644 (file)
index 0000000..7aecf64
--- /dev/null
@@ -0,0 +1,400 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-daemon(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-daemon(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-daemon -\r
+   A really simple server for git repositories.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-daemon</em> [--verbose] [--syslog] [--inetd | --port=n] [--export-all]\r
+             [--timeout=n] [--init-timeout=n] [--strict-paths] [directory&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>A really simple TCP git daemon that normally listens on port "DEFAULT_GIT_PORT"\r
+aka 9418. It waits for a connection, and will just execute "git-upload-pack"\r
+when it gets one.</p>\r
+<p>It's careful in that there's a magic request-line that gives the command and\r
+what directory to upload, and it verifies that the directory is ok.</p>\r
+<p>It verifies that the directory has the magic file "git-daemon-export-ok", and\r
+it will refuse to export any git directory that hasn't explicitly been marked\r
+for export this way (unless the <em>--export-all</em> parameter is specified). If you\r
+pass some directory paths as <em>git-daemon</em> arguments, you can further restrict\r
+the offers to a whitelist comprising of those.</p>\r
+<p>This is ideally suited for read-only updates, ie pulling from git repositories.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--strict-paths\r
+</dt>\r
+<dd>\r
+<p>\r
+        Match paths exactly (i.e. don't allow "/foo/repo" when the real path is\r
+        "/foo/repo.git" or "/foo/repo/.git") and don't do user-relative paths.\r
+        git-daemon will refuse to start when this option is enabled and no\r
+        whitelist is specified.\r
+</p>\r
+</dd>\r
+<dt>\r
+--export-all\r
+</dt>\r
+<dd>\r
+<p>\r
+        Allow pulling from all directories that look like GIT repositories\r
+        (have the <em>objects</em> and <em>refs</em> subdirectories), even if they\r
+        do not have the <em>git-daemon-export-ok</em> file.\r
+</p>\r
+</dd>\r
+<dt>\r
+--inetd\r
+</dt>\r
+<dd>\r
+<p>\r
+        Have the server run as an inetd service. Implies --syslog.\r
+</p>\r
+</dd>\r
+<dt>\r
+--port\r
+</dt>\r
+<dd>\r
+<p>\r
+        Listen on an alternative port.\r
+</p>\r
+</dd>\r
+<dt>\r
+--init-timeout\r
+</dt>\r
+<dd>\r
+<p>\r
+        Timeout between the moment the connection is established and the\r
+        client request is received (typically a rather low value, since\r
+        that should be basically immediate).\r
+</p>\r
+</dd>\r
+<dt>\r
+--timeout\r
+</dt>\r
+<dd>\r
+<p>\r
+        Timeout for specific client sub-requests. This includes the time\r
+        it takes for the server to process the sub-request and time spent\r
+        waiting for next client's request.\r
+</p>\r
+</dd>\r
+<dt>\r
+--syslog\r
+</dt>\r
+<dd>\r
+<p>\r
+        Log to syslog instead of stderr. Note that this option does not imply\r
+        --verbose, thus by default only error conditions will be logged.\r
+</p>\r
+</dd>\r
+<dt>\r
+--verbose\r
+</dt>\r
+<dd>\r
+<p>\r
+        Log details about the incoming connections and requested files.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;directory&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        A directory to add to the whitelist of allowed directories. Unless\r
+        --strict-paths is specified this will also include subdirectories\r
+        of each named directory.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;, YOSHIFUJI Hideaki\r
+&lt;yoshfuji@linux-ipv6.org&gt; and the git-list &lt;git@vger.kernel.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:15:59 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-daemon.txt b/git-daemon.txt
new file mode 100644 (file)
index 0000000..2a8f371
--- /dev/null
@@ -0,0 +1,83 @@
+git-daemon(1)
+=============
+
+NAME
+----
+git-daemon - A really simple server for git repositories.
+
+SYNOPSIS
+--------
+'git-daemon' [--verbose] [--syslog] [--inetd | --port=n] [--export-all]
+             [--timeout=n] [--init-timeout=n] [--strict-paths] [directory...]
+
+DESCRIPTION
+-----------
+A really simple TCP git daemon that normally listens on port "DEFAULT_GIT_PORT"
+aka 9418. It waits for a connection, and will just execute "git-upload-pack"
+when it gets one.
+
+It's careful in that there's a magic request-line that gives the command and
+what directory to upload, and it verifies that the directory is ok.
+
+It verifies that the directory has the magic file "git-daemon-export-ok", and
+it will refuse to export any git directory that hasn't explicitly been marked
+for export this way (unless the '--export-all' parameter is specified). If you
+pass some directory paths as 'git-daemon' arguments, you can further restrict
+the offers to a whitelist comprising of those.
+
+This is ideally suited for read-only updates, ie pulling from git repositories.
+
+OPTIONS
+-------
+--strict-paths::
+       Match paths exactly (i.e. don't allow "/foo/repo" when the real path is
+       "/foo/repo.git" or "/foo/repo/.git") and don't do user-relative paths.
+       git-daemon will refuse to start when this option is enabled and no
+       whitelist is specified.
+
+--export-all::
+       Allow pulling from all directories that look like GIT repositories
+       (have the 'objects' and 'refs' subdirectories), even if they
+       do not have the 'git-daemon-export-ok' file.
+
+--inetd::
+       Have the server run as an inetd service. Implies --syslog.
+
+--port::
+       Listen on an alternative port.
+
+--init-timeout::
+       Timeout between the moment the connection is established and the
+       client request is received (typically a rather low value, since
+       that should be basically immediate).
+
+--timeout::
+       Timeout for specific client sub-requests. This includes the time
+       it takes for the server to process the sub-request and time spent
+       waiting for next client's request.
+
+--syslog::
+       Log to syslog instead of stderr. Note that this option does not imply
+       --verbose, thus by default only error conditions will be logged.
+
+--verbose::
+       Log details about the incoming connections and requested files.
+
+<directory>::
+       A directory to add to the whitelist of allowed directories. Unless
+       --strict-paths is specified this will also include subdirectories
+       of each named directory.
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>, YOSHIFUJI Hideaki
+<yoshfuji@linux-ipv6.org> and the git-list <git@vger.kernel.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-diff-files.html b/git-diff-files.html
new file mode 100644 (file)
index 0000000..afe1914
--- /dev/null
@@ -0,0 +1,743 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-diff-files(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-diff-files(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-diff-files -\r
+   Compares files in the working tree and the index\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-diff-files</em> [-q] [&lt;common diff options&gt;] [&lt;path&gt;&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Compares the files in the working tree and the index.  When paths\r
+are specified, compares only those named paths.  Otherwise all\r
+entries in the index are compared.  The output format is the\r
+same as "git-diff-index" and "git-diff-tree".</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-p\r
+</dt>\r
+<dd>\r
+<p>\r
+        Generate patch (see section on generating patches)\r
+</p>\r
+</dd>\r
+<dt>\r
+-u\r
+</dt>\r
+<dd>\r
+<p>\r
+        Synonym for "-p".\r
+</p>\r
+</dd>\r
+<dt>\r
+-z\r
+</dt>\r
+<dd>\r
+<p>\r
+        \0 line termination on output\r
+</p>\r
+</dd>\r
+<dt>\r
+--name-only\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show only names of changed files.\r
+</p>\r
+</dd>\r
+<dt>\r
+--name-status\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show only names and status of changed files.\r
+</p>\r
+</dd>\r
+<dt>\r
+--full-index\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of the first handful characters, show full\r
+        object name of pre- and post-image blob on the "index"\r
+        line when generating a patch format output.\r
+</p>\r
+</dd>\r
+<dt>\r
+--abbrev[=&lt;n&gt;]\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of showing the full 40-byte hexadecimal object\r
+        name in diff-raw format output and diff-tree header\r
+        lines, show only handful dhexigits prefix.  This is\r
+        independent of --full-index option above, which controls\r
+        the diff-patch output format.  Non default number of\r
+        digits can be specified with --abbrev=&lt;n&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+-B\r
+</dt>\r
+<dd>\r
+<p>\r
+        Break complete rewrite changes into pairs of delete and create.\r
+</p>\r
+</dd>\r
+<dt>\r
+-M\r
+</dt>\r
+<dd>\r
+<p>\r
+        Detect renames.\r
+</p>\r
+</dd>\r
+<dt>\r
+-C\r
+</dt>\r
+<dd>\r
+<p>\r
+        Detect copies as well as renames.\r
+</p>\r
+</dd>\r
+<dt>\r
+--find-copies-harder\r
+</dt>\r
+<dd>\r
+<p>\r
+        For performance reasons, by default, -C option finds copies only\r
+        if the original file of the copy was modified in the same\r
+        changeset.  This flag makes the command\r
+        inspect unmodified files as candidates for the source of\r
+        copy.  This is a very expensive operation for large\r
+        projects, so use it with caution.\r
+</p>\r
+</dd>\r
+<dt>\r
+-l&lt;num&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        -M and -C options require O(n^2) processing time where n\r
+        is the number of potential rename/copy targets.  This\r
+        option prevents rename/copy detection from running if\r
+        the number of rename/copy targets exceeds the specified\r
+        number.\r
+</p>\r
+</dd>\r
+<dt>\r
+-S&lt;string&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Look for differences that contain the change in &lt;string&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+--pickaxe-all\r
+</dt>\r
+<dd>\r
+<p>\r
+        When -S finds a change, show all the changes in that\r
+        changeset, not just the files that contain the change\r
+        in &lt;string&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+-O&lt;orderfile&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Output the patch in the order specified in the\r
+        &lt;orderfile&gt;, which has one shell glob pattern per line.\r
+</p>\r
+</dd>\r
+<dt>\r
+-R\r
+</dt>\r
+<dd>\r
+<p>\r
+        Swap two inputs; that is, show differences from index or\r
+        on-disk file to tree contents.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>For more detailed explanation on these common options, see also\r
+<a href="diffcore.html">diffcore documentation</a>.</p>\r
+<dl>\r
+<dt>\r
+-1 -2 -3 or --base --ours --theirs, and -0\r
+</dt>\r
+<dd>\r
+<p>\r
+        Diff against the "base" version, "our branch" or "their\r
+        branch" respectively.  With these options, diffs for\r
+        merged entries are not shown.\r
+</p>\r
+<p>The default is to diff against our branch (-2) and the\r
+cleanly resolved paths.  The option -0 can be given to\r
+omit diff output for unmerged entries and just show "Unmerged".</p>\r
+</dd>\r
+<dt>\r
+-q\r
+</dt>\r
+<dd>\r
+<p>\r
+        Remain silent even on nonexisting files\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Output format</h2>\r
+<div class="sectionbody">\r
+<p>The output format from "git-diff-index", "git-diff-tree" and\r
+"git-diff-files" are very similar.</p>\r
+<p>These commands all compare two sets of things; what is\r
+compared differs:</p>\r
+<dl>\r
+<dt>\r
+git-diff-index &lt;tree-ish&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the &lt;tree-ish&gt; and the files on the filesystem.\r
+</p>\r
+</dd>\r
+<dt>\r
+git-diff-index --cached &lt;tree-ish&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the &lt;tree-ish&gt; and the index.\r
+</p>\r
+</dd>\r
+<dt>\r
+git-diff-tree [-r] &lt;tree-ish-1&gt; &lt;tree-ish-2&gt; [&lt;pattern&gt;&#8230;]\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the trees named by the two arguments.\r
+</p>\r
+</dd>\r
+<dt>\r
+git-diff-files [&lt;pattern&gt;&#8230;]\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the index and the files on the filesystem.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>An output line is formatted this way:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>in-place edit  :100644 100644 bcd1234... 0123456... M file0\r
+copy-edit      :100644 100644 abcd123... 1234567... C68 file1 file2\r
+rename-edit    :100644 100644 abcd123... 1234567... R86 file1 file3\r
+create         :000000 100644 0000000... 1234567... A file4\r
+delete         :100644 000000 1234567... 0000000... D file5\r
+unmerged       :000000 000000 0000000... 0000000... U file6</tt></pre>\r
+</div></div>\r
+<p>That is, from the left to the right:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+a colon.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+mode for "src"; 000000 if creation or unmerged.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+mode for "dst"; 000000 if deletion or unmerged.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+sha1 for "src"; 0{40} if creation or unmerged.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+sha1 for "dst"; 0{40} if creation, unmerged or "look at work tree".\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+status, followed by optional "score" number.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a tab or a NUL when <em>-z</em> option is used.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+path for "src"\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a tab or a NUL when <em>-z</em> option is used; only exists for C or R.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+path for "dst"; only exists for C or R.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+an LF or a NUL when <em>-z</em> option is used, to terminate the record.\r
+</p>\r
+</li>\r
+</ol>\r
+<p>&lt;sha1&gt; is shown as all 0's if a file is new on the filesystem\r
+and it is out of sync with the index.</p>\r
+<p>Example:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>:100644 100644 5be4a4...... 000000...... M file.c</tt></pre>\r
+</div></div>\r
+<p>When <tt>-z</tt> option is not used, TAB, LF, and backslash characters\r
+in pathnames are represented as <tt>\t</tt>, <tt>\n</tt>, and <tt>\\</tt>,\r
+respectively.</p>\r
+</div>\r
+<h2>Generating patches with -p</h2>\r
+<div class="sectionbody">\r
+<p>When "git-diff-index", "git-diff-tree", or "git-diff-files" are run\r
+with a <em>-p</em> option, they do not produce the output described above;\r
+instead they produce a patch file.</p>\r
+<p>The patch generation can be customized at two levels.</p>\r
+<ol>\r
+<li>\r
+<p>\r
+When the environment variable <em>GIT_EXTERNAL_DIFF</em> is not set,\r
+   these commands internally invoke "diff" like this:\r
+</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>diff -L a/&lt;path&gt; -L b/&lt;path&gt; -pu &lt;old&gt; &lt;new&gt;</tt></pre>\r
+</div></div>\r
+<p>For added files, <tt>/dev/null</tt> is used for &lt;old&gt;.  For removed\r
+files, <tt>/dev/null</tt> is used for &lt;new&gt;</p>\r
+<p>The "diff" formatting options can be customized via the\r
+environment variable <em>GIT_DIFF_OPTS</em>.  For example, if you\r
+prefer context diff:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>GIT_DIFF_OPTS=-c git-diff-index -p HEAD</tt></pre>\r
+</div></div>\r
+</li>\r
+<li>\r
+<p>\r
+When the environment variable <em>GIT_EXTERNAL_DIFF</em> is set, the\r
+   program named by it is called, instead of the diff invocation\r
+   described above.\r
+</p>\r
+<p>For a path that is added, removed, or modified,\r
+<em>GIT_EXTERNAL_DIFF</em> is called with 7 parameters:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>path old-file old-hex old-mode new-file new-hex new-mode</tt></pre>\r
+</div></div>\r
+<p>where:</p>\r
+<div class="hlist"><table>\r
+<tr>\r
+<td class="hlist1">\r
+&lt;old|new&gt;-file\r
+</td>\r
+<td class="hlist2">\r
+are files GIT_EXTERNAL_DIFF can use to read the\r
+                      contents of &lt;old|new&gt;,\r
+</td>\r
+</tr>\r
+<tr>\r
+<td class="hlist1">\r
+&lt;old|new&gt;-hex\r
+</td>\r
+<td class="hlist2">\r
+are the 40-hexdigit SHA1 hashes,\r
+</td>\r
+</tr>\r
+<tr>\r
+<td class="hlist1">\r
+&lt;old|new&gt;-mode\r
+</td>\r
+<td class="hlist2">\r
+are the octal representation of the file modes.\r
+</td>\r
+</tr>\r
+</table></div>\r
+<p>The file parameters can point at the user's working file\r
+(e.g. <tt>new-file</tt> in "git-diff-files"), <tt>/dev/null</tt> (e.g. <tt>old-file</tt>\r
+when a new file is added), or a temporary file (e.g. <tt>old-file</tt> in the\r
+index).  <em>GIT_EXTERNAL_DIFF</em> should not worry about unlinking the\r
+temporary file --- it is removed when <em>GIT_EXTERNAL_DIFF</em> exits.</p>\r
+</li>\r
+</ol>\r
+<p>For a path that is unmerged, <em>GIT_EXTERNAL_DIFF</em> is called with 1\r
+parameter, &lt;path&gt;.</p>\r
+</div>\r
+<h2>git specific extension to diff format</h2>\r
+<div class="sectionbody">\r
+<p>What -p option produces is slightly different from the\r
+traditional diff format.</p>\r
+<ol>\r
+<li>\r
+<p>\r
+It is preceeded with a "git diff" header, that looks like\r
+     this:\r
+</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>diff --git a/file1 b/file2</tt></pre>\r
+</div></div>\r
+<p>The <tt>a/</tt> and <tt>b/</tt> filenames are the same unless rename/copy is\r
+involved.  Especially, even for a creation or a deletion,\r
+<tt>/dev/null</tt> is _not_ used in place of <tt>a/</tt> or <tt>b/</tt> filenames.</p>\r
+<p>When rename/copy is involved, <tt>file1</tt> and <tt>file2</tt> show the\r
+name of the source file of the rename/copy and the name of\r
+the file that rename/copy produces, respectively.</p>\r
+</li>\r
+<li>\r
+<p>\r
+It is followed by one or more extended header lines:\r
+</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>old mode &lt;mode&gt;\r
+new mode &lt;mode&gt;\r
+deleted file mode &lt;mode&gt;\r
+new file mode &lt;mode&gt;\r
+copy from &lt;path&gt;\r
+copy to &lt;path&gt;\r
+rename from &lt;path&gt;\r
+rename to &lt;path&gt;\r
+similarity index &lt;number&gt;\r
+dissimilarity index &lt;number&gt;\r
+index &lt;hash&gt;..&lt;hash&gt; &lt;mode&gt;</tt></pre>\r
+</div></div>\r
+</li>\r
+<li>\r
+<p>\r
+TAB, LF, and backslash characters in pathnames are\r
+    represented as <tt>\t</tt>, <tt>\n</tt>, and <tt>\\</tt>, respectively.\r
+</p>\r
+</li>\r
+</ol>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:00 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-diff-files.txt b/git-diff-files.txt
new file mode 100644 (file)
index 0000000..67f5126
--- /dev/null
@@ -0,0 +1,52 @@
+git-diff-files(1)
+=================
+
+NAME
+----
+git-diff-files - Compares files in the working tree and the index
+
+
+SYNOPSIS
+--------
+'git-diff-files' [-q] [<common diff options>] [<path>...]
+
+DESCRIPTION
+-----------
+Compares the files in the working tree and the index.  When paths
+are specified, compares only those named paths.  Otherwise all
+entries in the index are compared.  The output format is the
+same as "git-diff-index" and "git-diff-tree".
+
+OPTIONS
+-------
+include::diff-options.txt[]
+
+-1 -2 -3 or --base --ours --theirs, and -0::
+       Diff against the "base" version, "our branch" or "their
+       branch" respectively.  With these options, diffs for
+       merged entries are not shown.
++
+The default is to diff against our branch (-2) and the 
+cleanly resolved paths.  The option -0 can be given to
+omit diff output for unmerged entries and just show "Unmerged".
+
+-q::
+       Remain silent even on nonexisting files
+
+Output format
+-------------
+include::diff-format.txt[]
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-diff-index.html b/git-diff-index.html
new file mode 100644 (file)
index 0000000..e1a787e
--- /dev/null
@@ -0,0 +1,844 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-diff-index(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-diff-index(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-diff-index -\r
+   Compares content and mode of blobs between the index and repository\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-diff-index</em> [-m] [--cached] [&lt;common diff options&gt;] &lt;tree-ish&gt; [&lt;path&gt;&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Compares the content and mode of the blobs found via a tree\r
+object with the content of the current index and, optionally\r
+ignoring the stat state of the file on disk.  When paths are\r
+specified, compares only those named paths.  Otherwise all\r
+entries in the index are compared.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-p\r
+</dt>\r
+<dd>\r
+<p>\r
+        Generate patch (see section on generating patches)\r
+</p>\r
+</dd>\r
+<dt>\r
+-u\r
+</dt>\r
+<dd>\r
+<p>\r
+        Synonym for "-p".\r
+</p>\r
+</dd>\r
+<dt>\r
+-z\r
+</dt>\r
+<dd>\r
+<p>\r
+        \0 line termination on output\r
+</p>\r
+</dd>\r
+<dt>\r
+--name-only\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show only names of changed files.\r
+</p>\r
+</dd>\r
+<dt>\r
+--name-status\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show only names and status of changed files.\r
+</p>\r
+</dd>\r
+<dt>\r
+--full-index\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of the first handful characters, show full\r
+        object name of pre- and post-image blob on the "index"\r
+        line when generating a patch format output.\r
+</p>\r
+</dd>\r
+<dt>\r
+--abbrev[=&lt;n&gt;]\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of showing the full 40-byte hexadecimal object\r
+        name in diff-raw format output and diff-tree header\r
+        lines, show only handful dhexigits prefix.  This is\r
+        independent of --full-index option above, which controls\r
+        the diff-patch output format.  Non default number of\r
+        digits can be specified with --abbrev=&lt;n&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+-B\r
+</dt>\r
+<dd>\r
+<p>\r
+        Break complete rewrite changes into pairs of delete and create.\r
+</p>\r
+</dd>\r
+<dt>\r
+-M\r
+</dt>\r
+<dd>\r
+<p>\r
+        Detect renames.\r
+</p>\r
+</dd>\r
+<dt>\r
+-C\r
+</dt>\r
+<dd>\r
+<p>\r
+        Detect copies as well as renames.\r
+</p>\r
+</dd>\r
+<dt>\r
+--find-copies-harder\r
+</dt>\r
+<dd>\r
+<p>\r
+        For performance reasons, by default, -C option finds copies only\r
+        if the original file of the copy was modified in the same\r
+        changeset.  This flag makes the command\r
+        inspect unmodified files as candidates for the source of\r
+        copy.  This is a very expensive operation for large\r
+        projects, so use it with caution.\r
+</p>\r
+</dd>\r
+<dt>\r
+-l&lt;num&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        -M and -C options require O(n^2) processing time where n\r
+        is the number of potential rename/copy targets.  This\r
+        option prevents rename/copy detection from running if\r
+        the number of rename/copy targets exceeds the specified\r
+        number.\r
+</p>\r
+</dd>\r
+<dt>\r
+-S&lt;string&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Look for differences that contain the change in &lt;string&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+--pickaxe-all\r
+</dt>\r
+<dd>\r
+<p>\r
+        When -S finds a change, show all the changes in that\r
+        changeset, not just the files that contain the change\r
+        in &lt;string&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+-O&lt;orderfile&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Output the patch in the order specified in the\r
+        &lt;orderfile&gt;, which has one shell glob pattern per line.\r
+</p>\r
+</dd>\r
+<dt>\r
+-R\r
+</dt>\r
+<dd>\r
+<p>\r
+        Swap two inputs; that is, show differences from index or\r
+        on-disk file to tree contents.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>For more detailed explanation on these common options, see also\r
+<a href="diffcore.html">diffcore documentation</a>.</p>\r
+<dl>\r
+<dt>\r
+&lt;tree-ish&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The id of a tree object to diff against.\r
+</p>\r
+</dd>\r
+<dt>\r
+--cached\r
+</dt>\r
+<dd>\r
+<p>\r
+        do not consider the on-disk file at all\r
+</p>\r
+</dd>\r
+<dt>\r
+-m\r
+</dt>\r
+<dd>\r
+<p>\r
+        By default, files recorded in the index but not checked\r
+        out are reported as deleted.  This flag makes\r
+        "git-diff-index" say that all non-checked-out files are up\r
+        to date.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Output format</h2>\r
+<div class="sectionbody">\r
+<p>The output format from "git-diff-index", "git-diff-tree" and\r
+"git-diff-files" are very similar.</p>\r
+<p>These commands all compare two sets of things; what is\r
+compared differs:</p>\r
+<dl>\r
+<dt>\r
+git-diff-index &lt;tree-ish&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the &lt;tree-ish&gt; and the files on the filesystem.\r
+</p>\r
+</dd>\r
+<dt>\r
+git-diff-index --cached &lt;tree-ish&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the &lt;tree-ish&gt; and the index.\r
+</p>\r
+</dd>\r
+<dt>\r
+git-diff-tree [-r] &lt;tree-ish-1&gt; &lt;tree-ish-2&gt; [&lt;pattern&gt;&#8230;]\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the trees named by the two arguments.\r
+</p>\r
+</dd>\r
+<dt>\r
+git-diff-files [&lt;pattern&gt;&#8230;]\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the index and the files on the filesystem.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>An output line is formatted this way:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>in-place edit  :100644 100644 bcd1234... 0123456... M file0\r
+copy-edit      :100644 100644 abcd123... 1234567... C68 file1 file2\r
+rename-edit    :100644 100644 abcd123... 1234567... R86 file1 file3\r
+create         :000000 100644 0000000... 1234567... A file4\r
+delete         :100644 000000 1234567... 0000000... D file5\r
+unmerged       :000000 000000 0000000... 0000000... U file6</tt></pre>\r
+</div></div>\r
+<p>That is, from the left to the right:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+a colon.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+mode for "src"; 000000 if creation or unmerged.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+mode for "dst"; 000000 if deletion or unmerged.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+sha1 for "src"; 0{40} if creation or unmerged.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+sha1 for "dst"; 0{40} if creation, unmerged or "look at work tree".\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+status, followed by optional "score" number.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a tab or a NUL when <em>-z</em> option is used.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+path for "src"\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a tab or a NUL when <em>-z</em> option is used; only exists for C or R.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+path for "dst"; only exists for C or R.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+an LF or a NUL when <em>-z</em> option is used, to terminate the record.\r
+</p>\r
+</li>\r
+</ol>\r
+<p>&lt;sha1&gt; is shown as all 0's if a file is new on the filesystem\r
+and it is out of sync with the index.</p>\r
+<p>Example:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>:100644 100644 5be4a4...... 000000...... M file.c</tt></pre>\r
+</div></div>\r
+<p>When <tt>-z</tt> option is not used, TAB, LF, and backslash characters\r
+in pathnames are represented as <tt>\t</tt>, <tt>\n</tt>, and <tt>\\</tt>,\r
+respectively.</p>\r
+</div>\r
+<h2>Generating patches with -p</h2>\r
+<div class="sectionbody">\r
+<p>When "git-diff-index", "git-diff-tree", or "git-diff-files" are run\r
+with a <em>-p</em> option, they do not produce the output described above;\r
+instead they produce a patch file.</p>\r
+<p>The patch generation can be customized at two levels.</p>\r
+<ol>\r
+<li>\r
+<p>\r
+When the environment variable <em>GIT_EXTERNAL_DIFF</em> is not set,\r
+   these commands internally invoke "diff" like this:\r
+</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>diff -L a/&lt;path&gt; -L b/&lt;path&gt; -pu &lt;old&gt; &lt;new&gt;</tt></pre>\r
+</div></div>\r
+<p>For added files, <tt>/dev/null</tt> is used for &lt;old&gt;.  For removed\r
+files, <tt>/dev/null</tt> is used for &lt;new&gt;</p>\r
+<p>The "diff" formatting options can be customized via the\r
+environment variable <em>GIT_DIFF_OPTS</em>.  For example, if you\r
+prefer context diff:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>GIT_DIFF_OPTS=-c git-diff-index -p HEAD</tt></pre>\r
+</div></div>\r
+</li>\r
+<li>\r
+<p>\r
+When the environment variable <em>GIT_EXTERNAL_DIFF</em> is set, the\r
+   program named by it is called, instead of the diff invocation\r
+   described above.\r
+</p>\r
+<p>For a path that is added, removed, or modified,\r
+<em>GIT_EXTERNAL_DIFF</em> is called with 7 parameters:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>path old-file old-hex old-mode new-file new-hex new-mode</tt></pre>\r
+</div></div>\r
+<p>where:</p>\r
+<div class="hlist"><table>\r
+<tr>\r
+<td class="hlist1">\r
+&lt;old|new&gt;-file\r
+</td>\r
+<td class="hlist2">\r
+are files GIT_EXTERNAL_DIFF can use to read the\r
+                      contents of &lt;old|new&gt;,\r
+</td>\r
+</tr>\r
+<tr>\r
+<td class="hlist1">\r
+&lt;old|new&gt;-hex\r
+</td>\r
+<td class="hlist2">\r
+are the 40-hexdigit SHA1 hashes,\r
+</td>\r
+</tr>\r
+<tr>\r
+<td class="hlist1">\r
+&lt;old|new&gt;-mode\r
+</td>\r
+<td class="hlist2">\r
+are the octal representation of the file modes.\r
+</td>\r
+</tr>\r
+</table></div>\r
+<p>The file parameters can point at the user's working file\r
+(e.g. <tt>new-file</tt> in "git-diff-files"), <tt>/dev/null</tt> (e.g. <tt>old-file</tt>\r
+when a new file is added), or a temporary file (e.g. <tt>old-file</tt> in the\r
+index).  <em>GIT_EXTERNAL_DIFF</em> should not worry about unlinking the\r
+temporary file --- it is removed when <em>GIT_EXTERNAL_DIFF</em> exits.</p>\r
+</li>\r
+</ol>\r
+<p>For a path that is unmerged, <em>GIT_EXTERNAL_DIFF</em> is called with 1\r
+parameter, &lt;path&gt;.</p>\r
+</div>\r
+<h2>git specific extension to diff format</h2>\r
+<div class="sectionbody">\r
+<p>What -p option produces is slightly different from the\r
+traditional diff format.</p>\r
+<ol>\r
+<li>\r
+<p>\r
+It is preceeded with a "git diff" header, that looks like\r
+     this:\r
+</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>diff --git a/file1 b/file2</tt></pre>\r
+</div></div>\r
+<p>The <tt>a/</tt> and <tt>b/</tt> filenames are the same unless rename/copy is\r
+involved.  Especially, even for a creation or a deletion,\r
+<tt>/dev/null</tt> is _not_ used in place of <tt>a/</tt> or <tt>b/</tt> filenames.</p>\r
+<p>When rename/copy is involved, <tt>file1</tt> and <tt>file2</tt> show the\r
+name of the source file of the rename/copy and the name of\r
+the file that rename/copy produces, respectively.</p>\r
+</li>\r
+<li>\r
+<p>\r
+It is followed by one or more extended header lines:\r
+</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>old mode &lt;mode&gt;\r
+new mode &lt;mode&gt;\r
+deleted file mode &lt;mode&gt;\r
+new file mode &lt;mode&gt;\r
+copy from &lt;path&gt;\r
+copy to &lt;path&gt;\r
+rename from &lt;path&gt;\r
+rename to &lt;path&gt;\r
+similarity index &lt;number&gt;\r
+dissimilarity index &lt;number&gt;\r
+index &lt;hash&gt;..&lt;hash&gt; &lt;mode&gt;</tt></pre>\r
+</div></div>\r
+</li>\r
+<li>\r
+<p>\r
+TAB, LF, and backslash characters in pathnames are\r
+    represented as <tt>\t</tt>, <tt>\n</tt>, and <tt>\\</tt>, respectively.\r
+</p>\r
+</li>\r
+</ol>\r
+</div>\r
+<h2>Operating Modes</h2>\r
+<div class="sectionbody">\r
+<p>You can choose whether you want to trust the index file entirely\r
+(using the <em>--cached</em> flag) or ask the diff logic to show any files\r
+that don't match the stat state as being "tentatively changed".  Both\r
+of these operations are very useful indeed.</p>\r
+</div>\r
+<h2>Cached Mode</h2>\r
+<div class="sectionbody">\r
+<p>If <em>--cached</em> is specified, it allows you to ask:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>show me the differences between HEAD and the current index\r
+contents (the ones I'd write with a "git-write-tree")</tt></pre>\r
+</div></div>\r
+<p>For example, let's say that you have worked on your working directory, updated\r
+some files in the index and are ready to commit. You want to see eactly\r
+<strong>what</strong> you are going to commit is without having to write a new tree\r
+object and compare it that way, and to do that, you just do</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-diff-index --cached HEAD</tt></pre>\r
+</div></div>\r
+<p>Example: let's say I had renamed <tt>commit.c</tt> to <tt>git-commit.c</tt>, and I had\r
+done an "git-update-index" to make that effective in the index file.\r
+"git-diff-files" wouldn't show anything at all, since the index file\r
+matches my working directory. But doing a "git-diff-index" does:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>torvalds@ppc970:~/git&gt; git-diff-index --cached HEAD\r
+-100644 blob    4161aecc6700a2eb579e842af0b7f22b98443f74        commit.c\r
++100644 blob    4161aecc6700a2eb579e842af0b7f22b98443f74        git-commit.c</tt></pre>\r
+</div></div>\r
+<p>You can trivially see that the above is a rename.</p>\r
+<p>In fact, "git-diff-index --cached" <strong>should</strong> always be entirely equivalent to\r
+actually doing a "git-write-tree" and comparing that. Except this one is much\r
+nicer for the case where you just want to check where you are.</p>\r
+<p>So doing a "git-diff-index --cached" is basically very useful when you are\r
+asking yourself "what have I already marked for being committed, and\r
+what's the difference to a previous tree".</p>\r
+</div>\r
+<h2>Non-cached Mode</h2>\r
+<div class="sectionbody">\r
+<p>The "non-cached" mode takes a different approach, and is potentially\r
+the more useful of the two in that what it does can't be emulated with\r
+a "git-write-tree" + "git-diff-tree". Thus that's the default mode.\r
+The non-cached version asks the question:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>show me the differences between HEAD and the currently checked out\r
+tree - index contents _and_ files that aren't up-to-date</tt></pre>\r
+</div></div>\r
+<p>which is obviously a very useful question too, since that tells you what\r
+you <strong>could</strong> commit. Again, the output matches the "git-diff-tree -r"\r
+output to a tee, but with a twist.</p>\r
+<p>The twist is that if some file doesn't match the index, we don't have\r
+a backing store thing for it, and we use the magic "all-zero" sha1 to\r
+show that. So let's say that you have edited <tt>kernel/sched.c</tt>, but\r
+have not actually done a "git-update-index" on it yet - there is no\r
+"object" associated with the new state, and you get:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>torvalds@ppc970:~/v2.6/linux&gt; git-diff-index HEAD\r
+*100644-&gt;100664 blob    7476bb......-&gt;000000......      kernel/sched.c</tt></pre>\r
+</div></div>\r
+<p>ie it shows that the tree has changed, and that <tt>kernel/sched.c</tt> has is\r
+not up-to-date and may contain new stuff. The all-zero sha1 means that to\r
+get the real diff, you need to look at the object in the working directory\r
+directly rather than do an object-to-object diff.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">As with other commands of this type, "git-diff-index" does not\r
+actually look at the contents of the file at all. So maybe\r
+<tt>kernel/sched.c</tt> hasn't actually changed, and it's just that you\r
+touched it. In either case, it's a note that you need to\r
+"git-upate-index" it to make the index be in sync.</td>\r
+</tr></table>\r
+</div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">You can have a mixture of files show up as "has been updated"\r
+and "is still dirty in the working directory" together. You can always\r
+tell which file is in which state, since the "has been updated" ones\r
+show a valid sha1, and the "not in sync with the index" ones will\r
+always have the special all-zero sha1.</td>\r
+</tr></table>\r
+</div>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:01 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-diff-index.txt b/git-diff-index.txt
new file mode 100644 (file)
index 0000000..dba6d30
--- /dev/null
@@ -0,0 +1,133 @@
+git-diff-index(1)
+=================
+
+NAME
+----
+git-diff-index - Compares content and mode of blobs between the index and repository
+
+
+SYNOPSIS
+--------
+'git-diff-index' [-m] [--cached] [<common diff options>] <tree-ish> [<path>...]
+
+DESCRIPTION
+-----------
+Compares the content and mode of the blobs found via a tree
+object with the content of the current index and, optionally
+ignoring the stat state of the file on disk.  When paths are
+specified, compares only those named paths.  Otherwise all
+entries in the index are compared.
+
+OPTIONS
+-------
+include::diff-options.txt[]
+
+<tree-ish>::
+       The id of a tree object to diff against.
+
+--cached::
+       do not consider the on-disk file at all
+
+-m::
+       By default, files recorded in the index but not checked
+       out are reported as deleted.  This flag makes
+       "git-diff-index" say that all non-checked-out files are up
+       to date.
+
+Output format
+-------------
+include::diff-format.txt[]
+
+Operating Modes
+---------------
+You can choose whether you want to trust the index file entirely
+(using the '--cached' flag) or ask the diff logic to show any files
+that don't match the stat state as being "tentatively changed".  Both
+of these operations are very useful indeed.
+
+Cached Mode
+-----------
+If '--cached' is specified, it allows you to ask:
+
+       show me the differences between HEAD and the current index
+       contents (the ones I'd write with a "git-write-tree")
+
+For example, let's say that you have worked on your working directory, updated
+some files in the index and are ready to commit. You want to see eactly
+*what* you are going to commit is without having to write a new tree
+object and compare it that way, and to do that, you just do
+
+       git-diff-index --cached HEAD
+
+Example: let's say I had renamed `commit.c` to `git-commit.c`, and I had
+done an "git-update-index" to make that effective in the index file.
+"git-diff-files" wouldn't show anything at all, since the index file
+matches my working directory. But doing a "git-diff-index" does:
+
+  torvalds@ppc970:~/git> git-diff-index --cached HEAD
+  -100644 blob    4161aecc6700a2eb579e842af0b7f22b98443f74        commit.c
+  +100644 blob    4161aecc6700a2eb579e842af0b7f22b98443f74        git-commit.c
+
+You can trivially see that the above is a rename.
+
+In fact, "git-diff-index --cached" *should* always be entirely equivalent to
+actually doing a "git-write-tree" and comparing that. Except this one is much
+nicer for the case where you just want to check where you are.
+
+So doing a "git-diff-index --cached" is basically very useful when you are
+asking yourself "what have I already marked for being committed, and 
+what's the difference to a previous tree".
+
+Non-cached Mode
+---------------
+The "non-cached" mode takes a different approach, and is potentially
+the more useful of the two in that what it does can't be emulated with
+a "git-write-tree" + "git-diff-tree". Thus that's the default mode.
+The non-cached version asks the question:
+
+  show me the differences between HEAD and the currently checked out
+  tree - index contents _and_ files that aren't up-to-date
+
+which is obviously a very useful question too, since that tells you what
+you *could* commit. Again, the output matches the "git-diff-tree -r"
+output to a tee, but with a twist.
+
+The twist is that if some file doesn't match the index, we don't have
+a backing store thing for it, and we use the magic "all-zero" sha1 to
+show that. So let's say that you have edited `kernel/sched.c`, but
+have not actually done a "git-update-index" on it yet - there is no
+"object" associated with the new state, and you get:
+
+  torvalds@ppc970:~/v2.6/linux> git-diff-index HEAD
+  *100644->100664 blob    7476bb......->000000......      kernel/sched.c
+
+ie it shows that the tree has changed, and that `kernel/sched.c` has is
+not up-to-date and may contain new stuff. The all-zero sha1 means that to
+get the real diff, you need to look at the object in the working directory
+directly rather than do an object-to-object diff.
+
+NOTE: As with other commands of this type, "git-diff-index" does not
+actually look at the contents of the file at all. So maybe
+`kernel/sched.c` hasn't actually changed, and it's just that you
+touched it. In either case, it's a note that you need to
+"git-upate-index" it to make the index be in sync.
+
+NOTE: You can have a mixture of files show up as "has been updated"
+and "is still dirty in the working directory" together. You can always
+tell which file is in which state, since the "has been updated" ones
+show a valid sha1, and the "not in sync with the index" ones will
+always have the special all-zero sha1.
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-diff-stages.html b/git-diff-stages.html
new file mode 100644 (file)
index 0000000..c6eba5d
--- /dev/null
@@ -0,0 +1,728 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-diff-stages(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-diff-stages(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-diff-stages -\r
+   Compares content and mode of blobs between stages in an unmerged index file.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-diff-stages</em> [&lt;common diff options&gt;] &lt;stage1&gt; &lt;stage2&gt; [&lt;path&gt;&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Compares the content and mode of the blobs in two stages in an\r
+unmerged index file.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-p\r
+</dt>\r
+<dd>\r
+<p>\r
+        Generate patch (see section on generating patches)\r
+</p>\r
+</dd>\r
+<dt>\r
+-u\r
+</dt>\r
+<dd>\r
+<p>\r
+        Synonym for "-p".\r
+</p>\r
+</dd>\r
+<dt>\r
+-z\r
+</dt>\r
+<dd>\r
+<p>\r
+        \0 line termination on output\r
+</p>\r
+</dd>\r
+<dt>\r
+--name-only\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show only names of changed files.\r
+</p>\r
+</dd>\r
+<dt>\r
+--name-status\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show only names and status of changed files.\r
+</p>\r
+</dd>\r
+<dt>\r
+--full-index\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of the first handful characters, show full\r
+        object name of pre- and post-image blob on the "index"\r
+        line when generating a patch format output.\r
+</p>\r
+</dd>\r
+<dt>\r
+--abbrev[=&lt;n&gt;]\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of showing the full 40-byte hexadecimal object\r
+        name in diff-raw format output and diff-tree header\r
+        lines, show only handful dhexigits prefix.  This is\r
+        independent of --full-index option above, which controls\r
+        the diff-patch output format.  Non default number of\r
+        digits can be specified with --abbrev=&lt;n&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+-B\r
+</dt>\r
+<dd>\r
+<p>\r
+        Break complete rewrite changes into pairs of delete and create.\r
+</p>\r
+</dd>\r
+<dt>\r
+-M\r
+</dt>\r
+<dd>\r
+<p>\r
+        Detect renames.\r
+</p>\r
+</dd>\r
+<dt>\r
+-C\r
+</dt>\r
+<dd>\r
+<p>\r
+        Detect copies as well as renames.\r
+</p>\r
+</dd>\r
+<dt>\r
+--find-copies-harder\r
+</dt>\r
+<dd>\r
+<p>\r
+        For performance reasons, by default, -C option finds copies only\r
+        if the original file of the copy was modified in the same\r
+        changeset.  This flag makes the command\r
+        inspect unmodified files as candidates for the source of\r
+        copy.  This is a very expensive operation for large\r
+        projects, so use it with caution.\r
+</p>\r
+</dd>\r
+<dt>\r
+-l&lt;num&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        -M and -C options require O(n^2) processing time where n\r
+        is the number of potential rename/copy targets.  This\r
+        option prevents rename/copy detection from running if\r
+        the number of rename/copy targets exceeds the specified\r
+        number.\r
+</p>\r
+</dd>\r
+<dt>\r
+-S&lt;string&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Look for differences that contain the change in &lt;string&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+--pickaxe-all\r
+</dt>\r
+<dd>\r
+<p>\r
+        When -S finds a change, show all the changes in that\r
+        changeset, not just the files that contain the change\r
+        in &lt;string&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+-O&lt;orderfile&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Output the patch in the order specified in the\r
+        &lt;orderfile&gt;, which has one shell glob pattern per line.\r
+</p>\r
+</dd>\r
+<dt>\r
+-R\r
+</dt>\r
+<dd>\r
+<p>\r
+        Swap two inputs; that is, show differences from index or\r
+        on-disk file to tree contents.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>For more detailed explanation on these common options, see also\r
+<a href="diffcore.html">diffcore documentation</a>.</p>\r
+<dl>\r
+<dt>\r
+&lt;stage1&gt;,&lt;stage2&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The stage number to be compared.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Output format</h2>\r
+<div class="sectionbody">\r
+<p>The output format from "git-diff-index", "git-diff-tree" and\r
+"git-diff-files" are very similar.</p>\r
+<p>These commands all compare two sets of things; what is\r
+compared differs:</p>\r
+<dl>\r
+<dt>\r
+git-diff-index &lt;tree-ish&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the &lt;tree-ish&gt; and the files on the filesystem.\r
+</p>\r
+</dd>\r
+<dt>\r
+git-diff-index --cached &lt;tree-ish&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the &lt;tree-ish&gt; and the index.\r
+</p>\r
+</dd>\r
+<dt>\r
+git-diff-tree [-r] &lt;tree-ish-1&gt; &lt;tree-ish-2&gt; [&lt;pattern&gt;&#8230;]\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the trees named by the two arguments.\r
+</p>\r
+</dd>\r
+<dt>\r
+git-diff-files [&lt;pattern&gt;&#8230;]\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the index and the files on the filesystem.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>An output line is formatted this way:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>in-place edit  :100644 100644 bcd1234... 0123456... M file0\r
+copy-edit      :100644 100644 abcd123... 1234567... C68 file1 file2\r
+rename-edit    :100644 100644 abcd123... 1234567... R86 file1 file3\r
+create         :000000 100644 0000000... 1234567... A file4\r
+delete         :100644 000000 1234567... 0000000... D file5\r
+unmerged       :000000 000000 0000000... 0000000... U file6</tt></pre>\r
+</div></div>\r
+<p>That is, from the left to the right:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+a colon.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+mode for "src"; 000000 if creation or unmerged.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+mode for "dst"; 000000 if deletion or unmerged.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+sha1 for "src"; 0{40} if creation or unmerged.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+sha1 for "dst"; 0{40} if creation, unmerged or "look at work tree".\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+status, followed by optional "score" number.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a tab or a NUL when <em>-z</em> option is used.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+path for "src"\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a tab or a NUL when <em>-z</em> option is used; only exists for C or R.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+path for "dst"; only exists for C or R.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+an LF or a NUL when <em>-z</em> option is used, to terminate the record.\r
+</p>\r
+</li>\r
+</ol>\r
+<p>&lt;sha1&gt; is shown as all 0's if a file is new on the filesystem\r
+and it is out of sync with the index.</p>\r
+<p>Example:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>:100644 100644 5be4a4...... 000000...... M file.c</tt></pre>\r
+</div></div>\r
+<p>When <tt>-z</tt> option is not used, TAB, LF, and backslash characters\r
+in pathnames are represented as <tt>\t</tt>, <tt>\n</tt>, and <tt>\\</tt>,\r
+respectively.</p>\r
+</div>\r
+<h2>Generating patches with -p</h2>\r
+<div class="sectionbody">\r
+<p>When "git-diff-index", "git-diff-tree", or "git-diff-files" are run\r
+with a <em>-p</em> option, they do not produce the output described above;\r
+instead they produce a patch file.</p>\r
+<p>The patch generation can be customized at two levels.</p>\r
+<ol>\r
+<li>\r
+<p>\r
+When the environment variable <em>GIT_EXTERNAL_DIFF</em> is not set,\r
+   these commands internally invoke "diff" like this:\r
+</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>diff -L a/&lt;path&gt; -L b/&lt;path&gt; -pu &lt;old&gt; &lt;new&gt;</tt></pre>\r
+</div></div>\r
+<p>For added files, <tt>/dev/null</tt> is used for &lt;old&gt;.  For removed\r
+files, <tt>/dev/null</tt> is used for &lt;new&gt;</p>\r
+<p>The "diff" formatting options can be customized via the\r
+environment variable <em>GIT_DIFF_OPTS</em>.  For example, if you\r
+prefer context diff:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>GIT_DIFF_OPTS=-c git-diff-index -p HEAD</tt></pre>\r
+</div></div>\r
+</li>\r
+<li>\r
+<p>\r
+When the environment variable <em>GIT_EXTERNAL_DIFF</em> is set, the\r
+   program named by it is called, instead of the diff invocation\r
+   described above.\r
+</p>\r
+<p>For a path that is added, removed, or modified,\r
+<em>GIT_EXTERNAL_DIFF</em> is called with 7 parameters:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>path old-file old-hex old-mode new-file new-hex new-mode</tt></pre>\r
+</div></div>\r
+<p>where:</p>\r
+<div class="hlist"><table>\r
+<tr>\r
+<td class="hlist1">\r
+&lt;old|new&gt;-file\r
+</td>\r
+<td class="hlist2">\r
+are files GIT_EXTERNAL_DIFF can use to read the\r
+                      contents of &lt;old|new&gt;,\r
+</td>\r
+</tr>\r
+<tr>\r
+<td class="hlist1">\r
+&lt;old|new&gt;-hex\r
+</td>\r
+<td class="hlist2">\r
+are the 40-hexdigit SHA1 hashes,\r
+</td>\r
+</tr>\r
+<tr>\r
+<td class="hlist1">\r
+&lt;old|new&gt;-mode\r
+</td>\r
+<td class="hlist2">\r
+are the octal representation of the file modes.\r
+</td>\r
+</tr>\r
+</table></div>\r
+<p>The file parameters can point at the user's working file\r
+(e.g. <tt>new-file</tt> in "git-diff-files"), <tt>/dev/null</tt> (e.g. <tt>old-file</tt>\r
+when a new file is added), or a temporary file (e.g. <tt>old-file</tt> in the\r
+index).  <em>GIT_EXTERNAL_DIFF</em> should not worry about unlinking the\r
+temporary file --- it is removed when <em>GIT_EXTERNAL_DIFF</em> exits.</p>\r
+</li>\r
+</ol>\r
+<p>For a path that is unmerged, <em>GIT_EXTERNAL_DIFF</em> is called with 1\r
+parameter, &lt;path&gt;.</p>\r
+</div>\r
+<h2>git specific extension to diff format</h2>\r
+<div class="sectionbody">\r
+<p>What -p option produces is slightly different from the\r
+traditional diff format.</p>\r
+<ol>\r
+<li>\r
+<p>\r
+It is preceeded with a "git diff" header, that looks like\r
+     this:\r
+</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>diff --git a/file1 b/file2</tt></pre>\r
+</div></div>\r
+<p>The <tt>a/</tt> and <tt>b/</tt> filenames are the same unless rename/copy is\r
+involved.  Especially, even for a creation or a deletion,\r
+<tt>/dev/null</tt> is _not_ used in place of <tt>a/</tt> or <tt>b/</tt> filenames.</p>\r
+<p>When rename/copy is involved, <tt>file1</tt> and <tt>file2</tt> show the\r
+name of the source file of the rename/copy and the name of\r
+the file that rename/copy produces, respectively.</p>\r
+</li>\r
+<li>\r
+<p>\r
+It is followed by one or more extended header lines:\r
+</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>old mode &lt;mode&gt;\r
+new mode &lt;mode&gt;\r
+deleted file mode &lt;mode&gt;\r
+new file mode &lt;mode&gt;\r
+copy from &lt;path&gt;\r
+copy to &lt;path&gt;\r
+rename from &lt;path&gt;\r
+rename to &lt;path&gt;\r
+similarity index &lt;number&gt;\r
+dissimilarity index &lt;number&gt;\r
+index &lt;hash&gt;..&lt;hash&gt; &lt;mode&gt;</tt></pre>\r
+</div></div>\r
+</li>\r
+<li>\r
+<p>\r
+TAB, LF, and backslash characters in pathnames are\r
+    represented as <tt>\t</tt>, <tt>\n</tt>, and <tt>\\</tt>, respectively.\r
+</p>\r
+</li>\r
+</ol>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:03 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-diff-stages.txt b/git-diff-stages.txt
new file mode 100644 (file)
index 0000000..28c60fc
--- /dev/null
@@ -0,0 +1,40 @@
+git-diff-stages(1)
+==================
+
+NAME
+----
+git-diff-stages - Compares content and mode of blobs between stages in an unmerged index file.
+
+
+SYNOPSIS
+--------
+'git-diff-stages' [<common diff options>] <stage1> <stage2> [<path>...]
+
+DESCRIPTION
+-----------
+Compares the content and mode of the blobs in two stages in an
+unmerged index file.
+
+OPTIONS
+-------
+include::diff-options.txt[]
+
+<stage1>,<stage2>::
+       The stage number to be compared.
+
+Output format
+-------------
+include::diff-format.txt[]
+
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano.
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-diff-tree.html b/git-diff-tree.html
new file mode 100644 (file)
index 0000000..27362c2
--- /dev/null
@@ -0,0 +1,873 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-diff-tree(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-diff-tree(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-diff-tree -\r
+   Compares the content and mode of blobs found via two tree objects\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-diff-tree</em> [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty] [-t] [-r] [--root] [&lt;common diff options&gt;] &lt;tree-ish&gt; [&lt;tree-ish&gt;] [&lt;path&gt;&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Compares the content and mode of the blobs found via two tree objects.</p>\r
+<p>If there is only one &lt;tree-ish&gt; given, the commit is compared with its parents\r
+(see --stdin below).</p>\r
+<p>Note that "git-diff-tree" can use the tree encapsulated in a commit object.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-p\r
+</dt>\r
+<dd>\r
+<p>\r
+        Generate patch (see section on generating patches)\r
+</p>\r
+</dd>\r
+<dt>\r
+-u\r
+</dt>\r
+<dd>\r
+<p>\r
+        Synonym for "-p".\r
+</p>\r
+</dd>\r
+<dt>\r
+-z\r
+</dt>\r
+<dd>\r
+<p>\r
+        \0 line termination on output\r
+</p>\r
+</dd>\r
+<dt>\r
+--name-only\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show only names of changed files.\r
+</p>\r
+</dd>\r
+<dt>\r
+--name-status\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show only names and status of changed files.\r
+</p>\r
+</dd>\r
+<dt>\r
+--full-index\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of the first handful characters, show full\r
+        object name of pre- and post-image blob on the "index"\r
+        line when generating a patch format output.\r
+</p>\r
+</dd>\r
+<dt>\r
+--abbrev[=&lt;n&gt;]\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of showing the full 40-byte hexadecimal object\r
+        name in diff-raw format output and diff-tree header\r
+        lines, show only handful dhexigits prefix.  This is\r
+        independent of --full-index option above, which controls\r
+        the diff-patch output format.  Non default number of\r
+        digits can be specified with --abbrev=&lt;n&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+-B\r
+</dt>\r
+<dd>\r
+<p>\r
+        Break complete rewrite changes into pairs of delete and create.\r
+</p>\r
+</dd>\r
+<dt>\r
+-M\r
+</dt>\r
+<dd>\r
+<p>\r
+        Detect renames.\r
+</p>\r
+</dd>\r
+<dt>\r
+-C\r
+</dt>\r
+<dd>\r
+<p>\r
+        Detect copies as well as renames.\r
+</p>\r
+</dd>\r
+<dt>\r
+--find-copies-harder\r
+</dt>\r
+<dd>\r
+<p>\r
+        For performance reasons, by default, -C option finds copies only\r
+        if the original file of the copy was modified in the same\r
+        changeset.  This flag makes the command\r
+        inspect unmodified files as candidates for the source of\r
+        copy.  This is a very expensive operation for large\r
+        projects, so use it with caution.\r
+</p>\r
+</dd>\r
+<dt>\r
+-l&lt;num&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        -M and -C options require O(n^2) processing time where n\r
+        is the number of potential rename/copy targets.  This\r
+        option prevents rename/copy detection from running if\r
+        the number of rename/copy targets exceeds the specified\r
+        number.\r
+</p>\r
+</dd>\r
+<dt>\r
+-S&lt;string&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Look for differences that contain the change in &lt;string&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+--pickaxe-all\r
+</dt>\r
+<dd>\r
+<p>\r
+        When -S finds a change, show all the changes in that\r
+        changeset, not just the files that contain the change\r
+        in &lt;string&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+-O&lt;orderfile&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Output the patch in the order specified in the\r
+        &lt;orderfile&gt;, which has one shell glob pattern per line.\r
+</p>\r
+</dd>\r
+<dt>\r
+-R\r
+</dt>\r
+<dd>\r
+<p>\r
+        Swap two inputs; that is, show differences from index or\r
+        on-disk file to tree contents.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>For more detailed explanation on these common options, see also\r
+<a href="diffcore.html">diffcore documentation</a>.</p>\r
+<dl>\r
+<dt>\r
+&lt;tree-ish&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The id of a tree object.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;path&gt;&#8230;\r
+</dt>\r
+<dd>\r
+<p>\r
+        If provided, the results are limited to a subset of files\r
+        matching one of these prefix strings.\r
+        ie file matches <tt>/^&lt;pattern1&gt;|&lt;pattern2&gt;|&#8230;/</tt>\r
+        Note that this parameter does not provide any wildcard or regexp\r
+        features.\r
+</p>\r
+</dd>\r
+<dt>\r
+-r\r
+</dt>\r
+<dd>\r
+<p>\r
+        recurse into sub-trees\r
+</p>\r
+</dd>\r
+<dt>\r
+-t\r
+</dt>\r
+<dd>\r
+<p>\r
+        show tree entry itself as well as subtrees.  Implies -r.\r
+</p>\r
+</dd>\r
+<dt>\r
+--root\r
+</dt>\r
+<dd>\r
+<p>\r
+        When <em>--root</em> is specified the initial commit will be showed as a big\r
+        creation event. This is equivalent to a diff against the NULL tree.\r
+</p>\r
+</dd>\r
+<dt>\r
+--stdin\r
+</dt>\r
+<dd>\r
+<p>\r
+        When <em>--stdin</em> is specified, the command does not take\r
+        &lt;tree-ish&gt; arguments from the command line.  Instead, it\r
+        reads either one &lt;commit&gt; or a pair of &lt;tree-ish&gt;\r
+        separated with a single space from its standard input.\r
+</p>\r
+<p>When a single commit is given on one line of such input, it compares\r
+the commit with its parents.  The following flags further affects its\r
+behaviour.  This does not apply to the case where two &lt;tree-ish&gt;\r
+separated with a single space are given.</p>\r
+</dd>\r
+<dt>\r
+-m\r
+</dt>\r
+<dd>\r
+<p>\r
+        By default, "git-diff-tree --stdin" does not show\r
+        differences for merge commits.  With this flag, it shows\r
+        differences to that commit from all of its parents.\r
+</p>\r
+</dd>\r
+<dt>\r
+-s\r
+</dt>\r
+<dd>\r
+<p>\r
+        By default, "git-diff-tree --stdin" shows differences,\r
+        either in machine-readable form (without <em>-p</em>) or in patch\r
+        form (with <em>-p</em>).  This output can be supressed.  It is\r
+        only useful with <em>-v</em> flag.\r
+</p>\r
+</dd>\r
+<dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+        This flag causes "git-diff-tree --stdin" to also show\r
+        the commit message before the differences.\r
+</p>\r
+</dd>\r
+<dt>\r
+--pretty[=(raw|medium|short)]\r
+</dt>\r
+<dd>\r
+<p>\r
+        This is used to control "pretty printing" format of the\r
+        commit message.  Without "=&lt;style&gt;", it defaults to\r
+        medium.\r
+</p>\r
+</dd>\r
+<dt>\r
+--no-commit-id\r
+</dt>\r
+<dd>\r
+<p>\r
+        git-diff-tree outputs a line with the commit ID when\r
+        applicable.  This flag suppressed the commit ID output.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Limiting Output</h2>\r
+<div class="sectionbody">\r
+<p>If you're only interested in differences in a subset of files, for\r
+example some architecture-specific files, you might do:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-diff-tree -r &lt;tree-ish&gt; &lt;tree-ish&gt; arch/ia64 include/asm-ia64</tt></pre>\r
+</div></div>\r
+<p>and it will only show you what changed in those two directories.</p>\r
+<p>Or if you are searching for what changed in just <tt>kernel/sched.c</tt>, just do</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-diff-tree -r &lt;tree-ish&gt; &lt;tree-ish&gt; kernel/sched.c</tt></pre>\r
+</div></div>\r
+<p>and it will ignore all differences to other files.</p>\r
+<p>The pattern is always the prefix, and is matched exactly.  There are no\r
+wildcards.  Even stricter, it has to match a complete path component.\r
+I.e. "foo" does not pick up <tt>foobar.h</tt>.  "foo" does match <tt>foo/bar.h</tt>\r
+so it can be used to name subdirectories.</p>\r
+<p>An example of normal usage is:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>torvalds@ppc970:~/git&gt; git-diff-tree 5319e4......\r
+*100664-&gt;100664 blob    ac348b.......-&gt;a01513.......      git-fsck-objects.c</tt></pre>\r
+</div></div>\r
+<p>which tells you that the last commit changed just one file (it's from\r
+this one:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>commit 3c6f7ca19ad4043e9e72fa94106f352897e651a8\r
+tree 5319e4d609cdd282069cc4dce33c1db559539b03\r
+parent b4e628ea30d5ab3606119d2ea5caeab141d38df7\r
+author Linus Torvalds &lt;torvalds@ppc970.osdl.org&gt; Sat Apr 9 12:02:30 2005\r
+committer Linus Torvalds &lt;torvalds@ppc970.osdl.org&gt; Sat Apr 9 12:02:30 2005\r
+\r
+Make "git-fsck-objects" print out all the root commits it finds.\r
+\r
+Once I do the reference tracking, I'll also make it print out all the\r
+HEAD commits it finds, which is even more interesting.</tt></pre>\r
+</div></div>\r
+<p>in case you care).</p>\r
+</div>\r
+<h2>Output format</h2>\r
+<div class="sectionbody">\r
+<p>The output format from "git-diff-index", "git-diff-tree" and\r
+"git-diff-files" are very similar.</p>\r
+<p>These commands all compare two sets of things; what is\r
+compared differs:</p>\r
+<dl>\r
+<dt>\r
+git-diff-index &lt;tree-ish&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the &lt;tree-ish&gt; and the files on the filesystem.\r
+</p>\r
+</dd>\r
+<dt>\r
+git-diff-index --cached &lt;tree-ish&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the &lt;tree-ish&gt; and the index.\r
+</p>\r
+</dd>\r
+<dt>\r
+git-diff-tree [-r] &lt;tree-ish-1&gt; &lt;tree-ish-2&gt; [&lt;pattern&gt;&#8230;]\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the trees named by the two arguments.\r
+</p>\r
+</dd>\r
+<dt>\r
+git-diff-files [&lt;pattern&gt;&#8230;]\r
+</dt>\r
+<dd>\r
+<p>\r
+        compares the index and the files on the filesystem.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>An output line is formatted this way:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>in-place edit  :100644 100644 bcd1234... 0123456... M file0\r
+copy-edit      :100644 100644 abcd123... 1234567... C68 file1 file2\r
+rename-edit    :100644 100644 abcd123... 1234567... R86 file1 file3\r
+create         :000000 100644 0000000... 1234567... A file4\r
+delete         :100644 000000 1234567... 0000000... D file5\r
+unmerged       :000000 000000 0000000... 0000000... U file6</tt></pre>\r
+</div></div>\r
+<p>That is, from the left to the right:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+a colon.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+mode for "src"; 000000 if creation or unmerged.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+mode for "dst"; 000000 if deletion or unmerged.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+sha1 for "src"; 0{40} if creation or unmerged.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+sha1 for "dst"; 0{40} if creation, unmerged or "look at work tree".\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a space.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+status, followed by optional "score" number.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a tab or a NUL when <em>-z</em> option is used.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+path for "src"\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a tab or a NUL when <em>-z</em> option is used; only exists for C or R.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+path for "dst"; only exists for C or R.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+an LF or a NUL when <em>-z</em> option is used, to terminate the record.\r
+</p>\r
+</li>\r
+</ol>\r
+<p>&lt;sha1&gt; is shown as all 0's if a file is new on the filesystem\r
+and it is out of sync with the index.</p>\r
+<p>Example:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>:100644 100644 5be4a4...... 000000...... M file.c</tt></pre>\r
+</div></div>\r
+<p>When <tt>-z</tt> option is not used, TAB, LF, and backslash characters\r
+in pathnames are represented as <tt>\t</tt>, <tt>\n</tt>, and <tt>\\</tt>,\r
+respectively.</p>\r
+</div>\r
+<h2>Generating patches with -p</h2>\r
+<div class="sectionbody">\r
+<p>When "git-diff-index", "git-diff-tree", or "git-diff-files" are run\r
+with a <em>-p</em> option, they do not produce the output described above;\r
+instead they produce a patch file.</p>\r
+<p>The patch generation can be customized at two levels.</p>\r
+<ol>\r
+<li>\r
+<p>\r
+When the environment variable <em>GIT_EXTERNAL_DIFF</em> is not set,\r
+   these commands internally invoke "diff" like this:\r
+</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>diff -L a/&lt;path&gt; -L b/&lt;path&gt; -pu &lt;old&gt; &lt;new&gt;</tt></pre>\r
+</div></div>\r
+<p>For added files, <tt>/dev/null</tt> is used for &lt;old&gt;.  For removed\r
+files, <tt>/dev/null</tt> is used for &lt;new&gt;</p>\r
+<p>The "diff" formatting options can be customized via the\r
+environment variable <em>GIT_DIFF_OPTS</em>.  For example, if you\r
+prefer context diff:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>GIT_DIFF_OPTS=-c git-diff-index -p HEAD</tt></pre>\r
+</div></div>\r
+</li>\r
+<li>\r
+<p>\r
+When the environment variable <em>GIT_EXTERNAL_DIFF</em> is set, the\r
+   program named by it is called, instead of the diff invocation\r
+   described above.\r
+</p>\r
+<p>For a path that is added, removed, or modified,\r
+<em>GIT_EXTERNAL_DIFF</em> is called with 7 parameters:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>path old-file old-hex old-mode new-file new-hex new-mode</tt></pre>\r
+</div></div>\r
+<p>where:</p>\r
+<div class="hlist"><table>\r
+<tr>\r
+<td class="hlist1">\r
+&lt;old|new&gt;-file\r
+</td>\r
+<td class="hlist2">\r
+are files GIT_EXTERNAL_DIFF can use to read the\r
+                      contents of &lt;old|new&gt;,\r
+</td>\r
+</tr>\r
+<tr>\r
+<td class="hlist1">\r
+&lt;old|new&gt;-hex\r
+</td>\r
+<td class="hlist2">\r
+are the 40-hexdigit SHA1 hashes,\r
+</td>\r
+</tr>\r
+<tr>\r
+<td class="hlist1">\r
+&lt;old|new&gt;-mode\r
+</td>\r
+<td class="hlist2">\r
+are the octal representation of the file modes.\r
+</td>\r
+</tr>\r
+</table></div>\r
+<p>The file parameters can point at the user's working file\r
+(e.g. <tt>new-file</tt> in "git-diff-files"), <tt>/dev/null</tt> (e.g. <tt>old-file</tt>\r
+when a new file is added), or a temporary file (e.g. <tt>old-file</tt> in the\r
+index).  <em>GIT_EXTERNAL_DIFF</em> should not worry about unlinking the\r
+temporary file --- it is removed when <em>GIT_EXTERNAL_DIFF</em> exits.</p>\r
+</li>\r
+</ol>\r
+<p>For a path that is unmerged, <em>GIT_EXTERNAL_DIFF</em> is called with 1\r
+parameter, &lt;path&gt;.</p>\r
+</div>\r
+<h2>git specific extension to diff format</h2>\r
+<div class="sectionbody">\r
+<p>What -p option produces is slightly different from the\r
+traditional diff format.</p>\r
+<ol>\r
+<li>\r
+<p>\r
+It is preceeded with a "git diff" header, that looks like\r
+     this:\r
+</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>diff --git a/file1 b/file2</tt></pre>\r
+</div></div>\r
+<p>The <tt>a/</tt> and <tt>b/</tt> filenames are the same unless rename/copy is\r
+involved.  Especially, even for a creation or a deletion,\r
+<tt>/dev/null</tt> is _not_ used in place of <tt>a/</tt> or <tt>b/</tt> filenames.</p>\r
+<p>When rename/copy is involved, <tt>file1</tt> and <tt>file2</tt> show the\r
+name of the source file of the rename/copy and the name of\r
+the file that rename/copy produces, respectively.</p>\r
+</li>\r
+<li>\r
+<p>\r
+It is followed by one or more extended header lines:\r
+</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>old mode &lt;mode&gt;\r
+new mode &lt;mode&gt;\r
+deleted file mode &lt;mode&gt;\r
+new file mode &lt;mode&gt;\r
+copy from &lt;path&gt;\r
+copy to &lt;path&gt;\r
+rename from &lt;path&gt;\r
+rename to &lt;path&gt;\r
+similarity index &lt;number&gt;\r
+dissimilarity index &lt;number&gt;\r
+index &lt;hash&gt;..&lt;hash&gt; &lt;mode&gt;</tt></pre>\r
+</div></div>\r
+</li>\r
+<li>\r
+<p>\r
+TAB, LF, and backslash characters in pathnames are\r
+    represented as <tt>\t</tt>, <tt>\n</tt>, and <tt>\\</tt>, respectively.\r
+</p>\r
+</li>\r
+</ol>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:04 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-diff-tree.txt b/git-diff-tree.txt
new file mode 100644 (file)
index 0000000..9a2947e
--- /dev/null
@@ -0,0 +1,141 @@
+git-diff-tree(1)
+================
+
+NAME
+----
+git-diff-tree - Compares the content and mode of blobs found via two tree objects
+
+
+SYNOPSIS
+--------
+'git-diff-tree' [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty] [-t] [-r] [--root] [<common diff options>] <tree-ish> [<tree-ish>] [<path>...]
+
+DESCRIPTION
+-----------
+Compares the content and mode of the blobs found via two tree objects.
+
+If there is only one <tree-ish> given, the commit is compared with its parents
+(see --stdin below).
+
+Note that "git-diff-tree" can use the tree encapsulated in a commit object.
+
+OPTIONS
+-------
+include::diff-options.txt[]
+
+<tree-ish>::
+       The id of a tree object.
+
+<path>...::
+       If provided, the results are limited to a subset of files
+       matching one of these prefix strings.
+       ie file matches `/^<pattern1>|<pattern2>|.../`
+       Note that this parameter does not provide any wildcard or regexp
+       features.
+
+-r::
+        recurse into sub-trees
+
+-t::
+       show tree entry itself as well as subtrees.  Implies -r.
+
+--root::
+       When '--root' is specified the initial commit will be showed as a big
+       creation event. This is equivalent to a diff against the NULL tree.
+
+--stdin::
+       When '--stdin' is specified, the command does not take
+       <tree-ish> arguments from the command line.  Instead, it
+       reads either one <commit> or a pair of <tree-ish>
+       separated with a single space from its standard input.
++
+When a single commit is given on one line of such input, it compares
+the commit with its parents.  The following flags further affects its
+behaviour.  This does not apply to the case where two <tree-ish>
+separated with a single space are given.
+
+-m::
+       By default, "git-diff-tree --stdin" does not show
+       differences for merge commits.  With this flag, it shows
+       differences to that commit from all of its parents.
+
+-s::
+       By default, "git-diff-tree --stdin" shows differences,
+       either in machine-readable form (without '-p') or in patch
+       form (with '-p').  This output can be supressed.  It is
+       only useful with '-v' flag.
+
+-v::
+       This flag causes "git-diff-tree --stdin" to also show
+       the commit message before the differences.
+
+--pretty[=(raw|medium|short)]::
+       This is used to control "pretty printing" format of the
+       commit message.  Without "=<style>", it defaults to
+       medium.
+
+--no-commit-id::
+       git-diff-tree outputs a line with the commit ID when
+       applicable.  This flag suppressed the commit ID output.
+
+
+Limiting Output
+---------------
+If you're only interested in differences in a subset of files, for
+example some architecture-specific files, you might do:
+
+       git-diff-tree -r <tree-ish> <tree-ish> arch/ia64 include/asm-ia64
+
+and it will only show you what changed in those two directories.
+
+Or if you are searching for what changed in just `kernel/sched.c`, just do
+
+       git-diff-tree -r <tree-ish> <tree-ish> kernel/sched.c
+
+and it will ignore all differences to other files.
+
+The pattern is always the prefix, and is matched exactly.  There are no
+wildcards.  Even stricter, it has to match a complete path component.
+I.e. "foo" does not pick up `foobar.h`.  "foo" does match `foo/bar.h`
+so it can be used to name subdirectories.
+
+An example of normal usage is:
+
+  torvalds@ppc970:~/git> git-diff-tree 5319e4......
+  *100664->100664 blob    ac348b.......->a01513.......      git-fsck-objects.c
+
+which tells you that the last commit changed just one file (it's from
+this one:
+
+-----------------------------------------------------------------------------
+commit 3c6f7ca19ad4043e9e72fa94106f352897e651a8
+tree 5319e4d609cdd282069cc4dce33c1db559539b03
+parent b4e628ea30d5ab3606119d2ea5caeab141d38df7
+author Linus Torvalds <torvalds@ppc970.osdl.org> Sat Apr 9 12:02:30 2005
+committer Linus Torvalds <torvalds@ppc970.osdl.org> Sat Apr 9 12:02:30 2005
+
+Make "git-fsck-objects" print out all the root commits it finds.
+
+Once I do the reference tracking, I'll also make it print out all the
+HEAD commits it finds, which is even more interesting.
+-----------------------------------------------------------------------------
+
+in case you care).
+
+Output format
+-------------
+include::diff-format.txt[]
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-diff.html b/git-diff.html
new file mode 100644 (file)
index 0000000..a22074c
--- /dev/null
@@ -0,0 +1,422 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-diff(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-diff(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-diff -\r
+   Show changes between commits, commit and working tree, etc.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-diff</em> [ --diff-options ] &lt;ent&gt;{0,2} [&lt;path&gt;&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Show changes between two ents, an ent and the working tree, an\r
+ent and the index file, or the index file and the working tree.\r
+The combination of what is compared with what is determined by\r
+the number of ents given to the command.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+When no &lt;ent&gt; is given, the working tree and the index\r
+  file is compared, using <tt>git-diff-files</tt>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+When one &lt;ent&gt; is given, the working tree and the named\r
+  tree is compared, using <tt>git-diff-index</tt>.  The option\r
+  <tt>--cached</tt> can be given to compare the index file and\r
+  the named tree.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+When two &lt;ent&gt;s are given, these two trees are compared\r
+  using <tt>git-diff-tree</tt>.\r
+</p>\r
+</li>\r
+</ul>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--diff-options\r
+</dt>\r
+<dd>\r
+<p>\r
+        <em>--diff-options</em> are passed to the <tt>git-diff-files</tt>,\r
+        <tt>git-diff-index</tt>, and <tt>git-diff-tree</tt> commands.  See the\r
+        documentation for these commands for description.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;path&gt;&#8230;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The &lt;path&gt; arguments are also passed to <tt>git-diff-*</tt>\r
+        commands.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>EXAMPLES</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+Various ways to check your working tree\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git diff <b>(1)</b>\r
+$ git diff --cached <b>(2)</b>\r
+$ git diff HEAD <b>(3)</b>\r
+\r
+<b>(1)</b> changes in the working tree since your last git-update-index.\r
+<b>(2)</b> changes between the index and your last commit; what you\r
+would be committing if you run "git commit" without "-a" option.\r
+<b>(3)</b> changes in the working tree since your last commit; what you\r
+would be committing if you run "git commit -a"</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Comparing with arbitrary commits\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git diff test <b>(1)</b>\r
+$ git diff HEAD -- ./test <b>(2)</b>\r
+$ git diff HEAD^ HEAD <b>(3)</b>\r
+\r
+<b>(1)</b> instead of using the tip of the current branch, compare with the\r
+tip of "test" branch.\r
+<b>(2)</b> instead of comparing with the tip of "test" branch, compare with\r
+the tip of the curren branch, but limit the comparison to the\r
+file "test".\r
+<b>(3)</b> compare the version before the last commit and the last commit.</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Limiting the diff output\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git diff --diff-filter=MRC <b>(1)</b>\r
+$ git diff --name-status -r <b>(2)</b>\r
+$ git diff arch/i386 include/asm-i386 <b>(3)</b>\r
+\r
+<b>(1)</b> show only modification, rename and copy, but not addition\r
+nor deletion.\r
+<b>(2)</b> show only names and the nature of change, but not actual\r
+diff output.  --name-status disables usual patch generation\r
+which in turn also disables recursive behaviour, so without -r\r
+you would only see the directory name if there is a change in a\r
+file in a subdirectory.\r
+<b>(3)</b> limit diff output to named subtrees.</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Munging the diff output\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git diff --find-copies-harder -B -C <b>(1)</b>\r
+$ git diff -R <b>(2)</b>\r
+\r
+<b>(1)</b> spend extra cycles to find renames, copies and complete\r
+rewrites (very expensive).\r
+<b>(2)</b> output diff in reverse.</tt></pre>\r
+</div></div>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:05 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-diff.txt b/git-diff.txt
new file mode 100644 (file)
index 0000000..b04f393
--- /dev/null
@@ -0,0 +1,116 @@
+git-diff(1)
+===========
+
+NAME
+----
+git-diff - Show changes between commits, commit and working tree, etc.
+
+
+SYNOPSIS
+--------
+'git-diff' [ --diff-options ] <ent>{0,2} [<path>...]
+
+DESCRIPTION
+-----------
+Show changes between two ents, an ent and the working tree, an
+ent and the index file, or the index file and the working tree.
+The combination of what is compared with what is determined by
+the number of ents given to the command.
+
+* When no <ent> is given, the working tree and the index
+  file is compared, using `git-diff-files`.
+
+* When one <ent> is given, the working tree and the named
+  tree is compared, using `git-diff-index`.  The option
+  `--cached` can be given to compare the index file and
+  the named tree.
+
+* When two <ent>s are given, these two trees are compared
+  using `git-diff-tree`.
+
+OPTIONS
+-------
+--diff-options::
+       '--diff-options' are passed to the `git-diff-files`,
+       `git-diff-index`, and `git-diff-tree` commands.  See the
+       documentation for these commands for description.
+
+<path>...::
+       The <path> arguments are also passed to `git-diff-\*`
+       commands.
+
+
+EXAMPLES
+--------
+
+Various ways to check your working tree::
++
+------------
+$ git diff <1>
+$ git diff --cached <2>
+$ git diff HEAD <3>
+
+<1> changes in the working tree since your last git-update-index.
+<2> changes between the index and your last commit; what you
+would be committing if you run "git commit" without "-a" option.
+<3> changes in the working tree since your last commit; what you
+would be committing if you run "git commit -a"
+------------
+
+Comparing with arbitrary commits::
++
+------------
+$ git diff test <1>
+$ git diff HEAD -- ./test <2>
+$ git diff HEAD^ HEAD <3>
+
+<1> instead of using the tip of the current branch, compare with the
+tip of "test" branch.
+<2> instead of comparing with the tip of "test" branch, compare with
+the tip of the curren branch, but limit the comparison to the
+file "test".
+<3> compare the version before the last commit and the last commit.
+------------
+
+
+Limiting the diff output::
++
+------------
+$ git diff --diff-filter=MRC <1>
+$ git diff --name-status -r <2>
+$ git diff arch/i386 include/asm-i386 <3>
+
+<1> show only modification, rename and copy, but not addition
+nor deletion.
+<2> show only names and the nature of change, but not actual
+diff output.  --name-status disables usual patch generation
+which in turn also disables recursive behaviour, so without -r
+you would only see the directory name if there is a change in a
+file in a subdirectory.
+<3> limit diff output to named subtrees.
+------------
+
+Munging the diff output::
++
+------------
+$ git diff --find-copies-harder -B -C <1>
+$ git diff -R <2>
+
+<1> spend extra cycles to find renames, copies and complete
+rewrites (very expensive).
+<2> output diff in reverse.
+------------
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-fetch-pack.html b/git-fetch-pack.html
new file mode 100644 (file)
index 0000000..b9ba9bd
--- /dev/null
@@ -0,0 +1,375 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-fetch-pack(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-fetch-pack(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-fetch-pack -\r
+   Receive missing objects from another repository.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p>git-fetch-pack [-q] [-k] [--exec=&lt;git-upload-pack&gt;] [&lt;host&gt;:]&lt;directory&gt; [&lt;refs&gt;&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Invokes <em>git-upload-pack</em> on a potentially remote repository,\r
+and asks it to send objects missing from this repository, to\r
+update the named heads.  The list of commits available locally\r
+is found out by scanning local $GIT_DIR/refs/ and sent to\r
+<em>git-upload-pack</em> running on the other end.</p>\r
+<p>This command degenerates to download everything to complete the\r
+asked refs from the remote side when the local side does not\r
+have a common ancestor commit.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-q\r
+</dt>\r
+<dd>\r
+<p>\r
+        Pass <em>-q</em> flag to <em>git-unpack-objects</em>; this makes the\r
+        cloning process less verbose.\r
+</p>\r
+</dd>\r
+<dt>\r
+-k\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not invoke <em>git-unpack-objects</em> on received data, but\r
+        create a single packfile out of it instead, and store it\r
+        in the object database.\r
+</p>\r
+</dd>\r
+<dt>\r
+--exec=&lt;git-upload-pack&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Use this to specify the path to <em>git-upload-pack</em> on the\r
+        remote side, if is not found on your $PATH.\r
+        Installations of sshd ignores the user's environment\r
+        setup scripts for login shells (e.g. .bash_profile) and\r
+        your privately installed git may not be found on the system\r
+        default $PATH.  Another workaround suggested is to set\r
+        up your $PATH in ".bashrc", but this flag is for people\r
+        who do not want to pay the overhead for non-interactive\r
+        shells by having a lean .bashrc file (they set most of\r
+        the things up in .bash_profile).\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;host&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        A remote host that houses the repository.  When this\r
+        part is specified, <em>git-upload-pack</em> is invoked via\r
+        ssh.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;directory&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The repository to sync from.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;refs&gt;&#8230;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The remote heads to update from. This is relative to\r
+        $GIT_DIR (e.g. "HEAD", "refs/heads/master").  When\r
+        unspecified, update from all heads the remote side has.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:06 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-fetch-pack.txt b/git-fetch-pack.txt
new file mode 100644 (file)
index 0000000..b507e9b
--- /dev/null
@@ -0,0 +1,73 @@
+git-fetch-pack(1)
+=================
+
+NAME
+----
+git-fetch-pack - Receive missing objects from another repository.
+
+
+SYNOPSIS
+--------
+git-fetch-pack [-q] [-k] [--exec=<git-upload-pack>] [<host>:]<directory> [<refs>...]
+
+DESCRIPTION
+-----------
+Invokes 'git-upload-pack' on a potentially remote repository,
+and asks it to send objects missing from this repository, to
+update the named heads.  The list of commits available locally
+is found out by scanning local $GIT_DIR/refs/ and sent to
+'git-upload-pack' running on the other end.
+
+This command degenerates to download everything to complete the
+asked refs from the remote side when the local side does not
+have a common ancestor commit.
+
+
+OPTIONS
+-------
+-q::
+       Pass '-q' flag to 'git-unpack-objects'; this makes the
+       cloning process less verbose.
+
+-k::
+       Do not invoke 'git-unpack-objects' on received data, but
+       create a single packfile out of it instead, and store it
+       in the object database.
+
+--exec=<git-upload-pack>::
+       Use this to specify the path to 'git-upload-pack' on the
+       remote side, if is not found on your $PATH.
+       Installations of sshd ignores the user's environment
+       setup scripts for login shells (e.g. .bash_profile) and
+       your privately installed git may not be found on the system
+       default $PATH.  Another workaround suggested is to set
+       up your $PATH in ".bashrc", but this flag is for people
+       who do not want to pay the overhead for non-interactive
+       shells by having a lean .bashrc file (they set most of
+       the things up in .bash_profile).
+
+<host>::
+       A remote host that houses the repository.  When this
+       part is specified, 'git-upload-pack' is invoked via
+       ssh.
+
+<directory>::
+       The repository to sync from.
+
+<refs>...::
+       The remote heads to update from. This is relative to
+       $GIT_DIR (e.g. "HEAD", "refs/heads/master").  When
+       unspecified, update from all heads the remote side has.
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano.
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-fetch.html b/git-fetch.html
new file mode 100644 (file)
index 0000000..9d38bb1
--- /dev/null
@@ -0,0 +1,586 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-fetch(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-fetch(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-fetch -\r
+   Download objects and a head from another repository.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-fetch</em> &lt;options&gt; &lt;repository&gt; &lt;refspec&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Fetches named heads or tags from another repository, along with\r
+the objects necessary to complete them.</p>\r
+<p>The ref names and their object names of fetched refs are stored\r
+in <tt>.git/FETCH_HEAD</tt>.  This information is left for a later merge\r
+operation done by "git merge".</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-a, --append\r
+</dt>\r
+<dd>\r
+<p>\r
+        Append ref names and object names of fetched refs to the\r
+        existing contents of <tt>.git/FETCH_HEAD</tt>.  Without this\r
+        option old data in <tt>.git/FETCH_HEAD</tt> will be overwritten.\r
+</p>\r
+</dd>\r
+<dt>\r
+-f, --force\r
+</dt>\r
+<dd>\r
+<p>\r
+        When <tt>git-fetch</tt> is used with <tt>&lt;rbranch&gt;:&lt;lbranch&gt;</tt>\r
+        refspec, it refuses to update the local branch\r
+        <tt>&lt;lbranch&gt;</tt> unless the remote branch <tt>&lt;rbranch&gt;</tt> it\r
+        fetches is a descendant of <tt>&lt;lbranch&gt;</tt>.  This option\r
+        overrides that check.\r
+</p>\r
+</dd>\r
+<dt>\r
+-t, --tags\r
+</dt>\r
+<dd>\r
+<p>\r
+        By default, the git core utilities will not fetch and store\r
+        tags under the same name as the remote repository;  ask it\r
+        to do so using <tt>--tags</tt>.  Using this option will bound the\r
+        list of objects pulled to the remote tags.  Commits in branches\r
+        beyond the tags will be ignored.\r
+</p>\r
+</dd>\r
+<dt>\r
+-u, --update-head-ok\r
+</dt>\r
+<dd>\r
+<p>\r
+        By default <tt>git-fetch</tt> refuses to update the head which\r
+        corresponds to the current branch.  This flag disables the\r
+        check.  Note that fetching into the current branch will not\r
+        update the index and working directory, so use it with care.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;repository&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The "remote" repository that is the source of a fetch\r
+        or pull operation, or the destination of a push operation.\r
+        One of the following notations can be used\r
+        to name the remote repository:\r
+</p>\r
+<div class="exampleblock">\r
+<div class="exampleblock-content">\r
+<ul>\r
+<li>\r
+<p>\r
+rsync://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+http://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+https://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+git://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+git://host.xz/~user/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ssh://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ssh://host.xz/~user/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ssh://host.xz/~/path/to/repo.git\r
+</p>\r
+</li>\r
+</ul>\r
+</div></div>\r
+<p>SSH Is the default transport protocol and also supports an\r
+scp-like syntax.  Both syntaxes support username expansion,\r
+as does the native git protocol. The following three are\r
+identical to the last three above, respectively:</p>\r
+<div class="exampleblock">\r
+<div class="exampleblock-content">\r
+<ul>\r
+<li>\r
+<p>\r
+host.xz:/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+host.xz:~user/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+host.xz:path/to/repo.git\r
+</p>\r
+</li>\r
+</ul>\r
+</div></div>\r
+<p>To sync with a local directory, use:</p>\r
+<div class="exampleblock">\r
+<div class="exampleblock-content">\r
+<ul>\r
+<li>\r
+<p>\r
+/path/to/repo.git/\r
+</p>\r
+</li>\r
+</ul>\r
+</div></div>\r
+<p>In addition to the above, as a short-hand, the name of a\r
+file in <tt>$GIT_DIR/remotes</tt> directory can be given; the\r
+named file should be in the following format:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>URL: one of the above URL format\r
+Push: &lt;refspec&gt;\r
+Pull: &lt;refspec&gt;</tt></pre>\r
+</div></div>\r
+<p>When such a short-hand is specified in place of\r
+&lt;repository&gt; without &lt;refspec&gt; parameters on the command\r
+line, &lt;refspec&gt; specified on <tt>Push:</tt> lines or <tt>Pull:</tt>\r
+lines are used for <tt>git-push</tt> and <tt>git-fetch</tt>/<tt>git-pull</tt>,\r
+respectively.  Multiple <tt>Push:</tt> and and <tt>Pull:</tt> lines may\r
+be specified for additional branch mappings.</p>\r
+<p>The name of a file in <tt>$GIT_DIR/branches</tt> directory can be\r
+specified as an older notation short-hand; the named\r
+file should contain a single line, a URL in one of the\r
+above formats, optionally followed by a hash <tt>#</tt> and the\r
+name of remote head (URL fragment notation).\r
+<tt>$GIT_DIR/branches/&lt;remote&gt;</tt> file that stores a &lt;url&gt;\r
+without the fragment is equivalent to have this in the\r
+corresponding file in the <tt>$GIT_DIR/remotes/</tt> directory.</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>URL: &lt;url&gt;\r
+Pull: refs/heads/master:&lt;remote&gt;</tt></pre>\r
+</div></div>\r
+<p>while having <tt>&lt;url&gt;#&lt;head&gt;</tt> is equivalent to</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>URL: &lt;url&gt;\r
+Pull: refs/heads/&lt;head&gt;:&lt;remote&gt;</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+&lt;refspec&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The canonical format of a &lt;refspec&gt; parameter is\r
+        <tt>+?&lt;src&gt;:&lt;dst&gt;</tt>; that is, an optional plus <tt>+</tt>, followed\r
+        by the source ref, followed by a colon <tt>:</tt>, followed by\r
+        the destination ref.\r
+</p>\r
+<p>When used in <tt>git-push</tt>, the &lt;src&gt; side can be an\r
+arbitrary "SHA1 expression" that can be used as an\r
+argument to <tt>git-cat-file -t</tt>.  E.g. <tt>master~4</tt> (push\r
+four parents before the current master head).</p>\r
+<p>For <tt>git-push</tt>, the local ref that matches &lt;src&gt; is used\r
+to fast forward the remote ref that matches &lt;dst&gt;.  If\r
+the optional plus <tt>+</tt> is used, the remote ref is updated\r
+even if it does not result in a fast forward update.</p>\r
+<p>For <tt>git-fetch</tt> and <tt>git-pull</tt>, the remote ref that matches &lt;src&gt;\r
+is fetched, and if &lt;dst&gt; is not empty string, the local\r
+ref that matches it is fast forwarded using &lt;src&gt;.\r
+Again, if the optional plus <tt>+</tt> is used, the local ref\r
+is updated even if it does not result in a fast forward\r
+update.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">If the remote branch from which you want to pull is\r
+modified in non-linear ways such as being rewound and\r
+rebased frequently, then a pull will attempt a merge with\r
+an older version of itself, likely conflict, and fail.\r
+It is under these conditions that you would want to use\r
+the <tt>+</tt> sign to indicate non-fast-forward updates will\r
+be needed.  There is currently no easy way to determine\r
+or declare that a branch will be made available in a\r
+repository with this behavior; the pulling user simply\r
+must know this is the expected usage pattern for a branch.</td>\r
+</tr></table>\r
+</div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">You never do your own development on branches that appear\r
+on the right hand side of a &lt;refspec&gt; colon on <tt>Pull:</tt> lines;\r
+they are to be updated by <tt>git-fetch</tt>.  If you intend to do\r
+development derived from a remote branch <tt>B</tt>, have a <tt>Pull:</tt>\r
+line to track it (i.e. <tt>Pull: B:remote-B</tt>), and have a separate\r
+branch <tt>my-B</tt> to do your development on top of it.  The latter\r
+is created by <tt>git branch my-B remote-B</tt> (or its equivalent <tt>git\r
+checkout -b my-B remote-B</tt>).  Run <tt>git fetch</tt> to keep track of\r
+the progress of the remote side, and when you see something new\r
+on the remote branch, merge it into your development branch with\r
+<tt>git pull . remote-B</tt>, while you are on <tt>my-B</tt> branch.\r
+The common <tt>Pull: master:origin</tt> mapping of a remote <tt>master</tt>\r
+branch to a local <tt>origin</tt> branch, which is then merged to a\r
+local development branch, again typically named <tt>master</tt>, is made\r
+when you run <tt>git clone</tt> for you to follow this pattern.</td>\r
+</tr></table>\r
+</div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">There is a difference between listing multiple &lt;refspec&gt;\r
+directly on <tt>git-pull</tt> command line and having multiple\r
+<tt>Pull:</tt> &lt;refspec&gt; lines for a &lt;repository&gt; and running\r
+<tt>git-pull</tt> command without any explicit &lt;refspec&gt; parameters.\r
+&lt;refspec&gt; listed explicitly on the command line are always\r
+merged into the current branch after fetching.  In other words,\r
+if you list more than one remote refs, you would be making\r
+an Octopus.  While <tt>git-pull</tt> run without any explicit &lt;refspec&gt;\r
+parameter takes default &lt;refspec&gt;s from <tt>Pull:</tt> lines, it\r
+merges only the first &lt;refspec&gt; found into the current branch,\r
+after fetching all the remote refs.  This is because making an\r
+Octopus from remote refs is rarely done, while keeping track\r
+of multiple remote heads in one-go by fetching more than one\r
+is often useful.</td>\r
+</tr></table>\r
+</div>\r
+<p>Some short-cut notations are also supported.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+For backward compatibility, <tt>tag</tt> is almost ignored;\r
+  it just makes the following parameter &lt;tag&gt; to mean a\r
+  refspec <tt>refs/tags/&lt;tag&gt;:refs/tags/&lt;tag&gt;</tt>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+A parameter &lt;ref&gt; without a colon is equivalent to\r
+  &lt;ref&gt;: when pulling/fetching, and &lt;ref&gt;<tt>:</tt>&lt;ref&gt; when\r
+  pushing.  That is, do not store it locally if\r
+  fetching, and update the same name if pushing.\r
+</p>\r
+</li>\r
+</ul>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-pull.html">git-pull(1)</a></p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt; and\r
+Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:06 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-fetch.txt b/git-fetch.txt
new file mode 100644 (file)
index 0000000..d1b45f9
--- /dev/null
@@ -0,0 +1,48 @@
+git-fetch(1)
+============
+
+NAME
+----
+git-fetch - Download objects and a head from another repository.
+
+
+SYNOPSIS
+--------
+'git-fetch' <options> <repository> <refspec>...
+
+
+DESCRIPTION
+-----------
+Fetches named heads or tags from another repository, along with
+the objects necessary to complete them.
+
+The ref names and their object names of fetched refs are stored
+in `.git/FETCH_HEAD`.  This information is left for a later merge
+operation done by "git merge".
+
+
+OPTIONS
+-------
+include::fetch-options.txt[]
+
+include::pull-fetch-param.txt[]
+
+
+
+SEE ALSO
+--------
+gitlink:git-pull[1]
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org> and
+Junio C Hamano <junkio@cox.net>
+
+Documentation
+-------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-fmt-merge-msg.html b/git-fmt-merge-msg.html
new file mode 100644 (file)
index 0000000..4497155
--- /dev/null
@@ -0,0 +1,307 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-fmt-merge-msg(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-fmt-merge-msg(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-fmt-merge-msg -\r
+   Produce a merge commit message\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-fmt-merge-msg</em> &lt;$GIT_DIR/FETCH_HEAD</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Takes the list of merged objects on stdin and produces a suitable\r
+commit message to be used for the merge commit, usually to be\r
+passed as the <em>&lt;merge-message&gt;</em> argument of <tt>git-merge</tt>.</p>\r
+<p>This script is intended mostly for internal use by scripts\r
+automatically invoking <tt>git-merge</tt>.</p>\r
+</div>\r
+<h2>SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-merge.html">git-merge(1)</a></p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Petr Baudis, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:07 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-fmt-merge-msg.txt b/git-fmt-merge-msg.txt
new file mode 100644 (file)
index 0000000..a70eb39
--- /dev/null
@@ -0,0 +1,39 @@
+git-fmt-merge-msg(1)
+====================
+
+NAME
+----
+git-fmt-merge-msg - Produce a merge commit message
+
+
+SYNOPSIS
+--------
+'git-fmt-merge-msg' <$GIT_DIR/FETCH_HEAD
+
+DESCRIPTION
+-----------
+Takes the list of merged objects on stdin and produces a suitable
+commit message to be used for the merge commit, usually to be
+passed as the '<merge-message>' argument of `git-merge`.
+
+This script is intended mostly for internal use by scripts
+automatically invoking `git-merge`.
+
+
+SEE ALSO
+--------
+gitlink:git-merge[1]
+
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Petr Baudis, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-format-patch.html b/git-format-patch.html
new file mode 100644 (file)
index 0000000..3ecdbad
--- /dev/null
@@ -0,0 +1,437 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-format-patch(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-format-patch(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-format-patch -\r
+   Prepare patches for e-mail submission.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-format-patch</em> [-n | -k] [-o &lt;dir&gt; | --stdout] [-s] [-c] [--mbox] [--diff-options] &lt;his&gt; [&lt;mine&gt;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Prepare each commit with its patch since &lt;mine&gt; head forked from\r
+&lt;his&gt; head, one file per patch, for e-mail submission.  Each\r
+output file is numbered sequentially from 1, and uses the first\r
+line of the commit message (massaged for pathname safety) as the\r
+filename.</p>\r
+<p>When -o is specified, output files are created in that\r
+directory; otherwise in the current working directory.</p>\r
+<p>When -n is specified, instead of "[PATCH] Subject", the first\r
+line is formatted as "[PATCH N/M] Subject", unless you have only\r
+one patch.</p>\r
+<p>When --mbox is specified, the output is formatted to resemble\r
+UNIX mailbox format, and can be concatenated together for\r
+processing with applymbox.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-o|--output-directory &lt;dir&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Use &lt;dir&gt; to store the resulting files, instead of the\r
+        current working directory.\r
+</p>\r
+</dd>\r
+<dt>\r
+-n|--numbered\r
+</dt>\r
+<dd>\r
+<p>\r
+        Name output in <em>[PATCH n/m]</em> format.\r
+</p>\r
+</dd>\r
+<dt>\r
+-k|--keep-subject\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not strip/add <em>[PATCH]</em> from the first line of the\r
+        commit log message.\r
+</p>\r
+</dd>\r
+<dt>\r
+-a|--author, -d|--date\r
+</dt>\r
+<dd>\r
+<p>\r
+        Output From: and Date: headers for commits made by\r
+        yourself as well.  Usually these are output only for\r
+        commits made by people other than yourself.\r
+</p>\r
+</dd>\r
+<dt>\r
+-s|--signoff\r
+</dt>\r
+<dd>\r
+<p>\r
+        Add <tt>Signed-off-by:</tt> line to the commit message, using\r
+        the committer identity of yourself.\r
+</p>\r
+</dd>\r
+<dt>\r
+-c|--check\r
+</dt>\r
+<dd>\r
+<p>\r
+        Display suspicious lines in the patch.  The definition\r
+        of <em>suspicious lines</em> is currently the lines that has\r
+        trailing whitespaces, and the lines whose indentation\r
+        has a SP character immediately followed by a TAB\r
+        character.\r
+</p>\r
+</dd>\r
+<dt>\r
+-m|--mbox\r
+</dt>\r
+<dd>\r
+<p>\r
+        Format the output files for closer to mbox format by\r
+        adding a phony Unix "From " line, so they can be\r
+        concatenated together and fed to <tt>git-applymbox</tt>.\r
+        Implies --author and --date.\r
+</p>\r
+</dd>\r
+<dt>\r
+--stdout\r
+</dt>\r
+<dd>\r
+<p>\r
+        This flag generates the mbox formatted output to the\r
+        standard output, instead of saving them into a file per\r
+        patch and implies --mbox.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>EXAMPLES</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+git-format-patch -k --stdout R1..R2 | git-am -3 -k\r
+</dt>\r
+<dd>\r
+<p>\r
+        Extract commits between revisions R1 and R2, and apply\r
+        them on top of the current branch using <tt>git-am</tt> to\r
+        cherry-pick them.\r
+</p>\r
+</dd>\r
+<dt>\r
+git-format-patch origin\r
+</dt>\r
+<dd>\r
+<p>\r
+        Extract commits the current branch accumulated since it\r
+        pulled from origin the last time in a patch form for\r
+        e-mail submission.\r
+</p>\r
+</dd>\r
+<dt>\r
+git-format-patch -M -B origin\r
+</dt>\r
+<dd>\r
+<p>\r
+        The same as the previous one, except detect and handle\r
+        renames and complete rewrites intelligently to produce\r
+        renaming patch.  A renaming patch reduces the amount of\r
+        text output, and generally makes it easier to review\r
+        it.  Note that the "patch" program does not understand\r
+        renaming patch well, so use it only when you know the\r
+        recipient uses git to apply your patch.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>See Also</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-am.html">git-am(1)</a>, gitlink:git-send-email</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:08 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-format-patch.txt b/git-format-patch.txt
new file mode 100644 (file)
index 0000000..d7ca2db
--- /dev/null
@@ -0,0 +1,113 @@
+git-format-patch(1)
+===================
+
+NAME
+----
+git-format-patch - Prepare patches for e-mail submission.
+
+
+SYNOPSIS
+--------
+'git-format-patch' [-n | -k] [-o <dir> | --stdout] [-s] [-c] [--mbox] [--diff-options] <his> [<mine>]
+
+DESCRIPTION
+-----------
+Prepare each commit with its patch since <mine> head forked from
+<his> head, one file per patch, for e-mail submission.  Each
+output file is numbered sequentially from 1, and uses the first
+line of the commit message (massaged for pathname safety) as the
+filename.
+
+When -o is specified, output files are created in that
+directory; otherwise in the current working directory.
+
+When -n is specified, instead of "[PATCH] Subject", the first
+line is formatted as "[PATCH N/M] Subject", unless you have only
+one patch.
+
+When --mbox is specified, the output is formatted to resemble
+UNIX mailbox format, and can be concatenated together for
+processing with applymbox.
+
+
+OPTIONS
+-------
+-o|--output-directory <dir>::
+       Use <dir> to store the resulting files, instead of the
+       current working directory.
+
+-n|--numbered::
+       Name output in '[PATCH n/m]' format.
+
+-k|--keep-subject::
+       Do not strip/add '[PATCH]' from the first line of the
+       commit log message.
+
+-a|--author, -d|--date::
+       Output From: and Date: headers for commits made by
+       yourself as well.  Usually these are output only for
+       commits made by people other than yourself.
+
+-s|--signoff::
+       Add `Signed-off-by:` line to the commit message, using
+       the committer identity of yourself.
+
+-c|--check::
+        Display suspicious lines in the patch.  The definition
+        of 'suspicious lines' is currently the lines that has
+        trailing whitespaces, and the lines whose indentation
+        has a SP character immediately followed by a TAB
+        character.
+
+-m|--mbox::
+       Format the output files for closer to mbox format by
+       adding a phony Unix "From " line, so they can be
+       concatenated together and fed to `git-applymbox`.
+       Implies --author and --date.
+
+--stdout::
+       This flag generates the mbox formatted output to the
+       standard output, instead of saving them into a file per
+       patch and implies --mbox.
+
+
+EXAMPLES
+--------
+
+git-format-patch -k --stdout R1..R2 | git-am -3 -k::
+       Extract commits between revisions R1 and R2, and apply
+       them on top of the current branch using `git-am` to
+       cherry-pick them.
+
+git-format-patch origin::
+       Extract commits the current branch accumulated since it
+       pulled from origin the last time in a patch form for
+       e-mail submission.
+
+git-format-patch -M -B origin::
+       The same as the previous one, except detect and handle
+       renames and complete rewrites intelligently to produce
+       renaming patch.  A renaming patch reduces the amount of
+       text output, and generally makes it easier to review
+       it.  Note that the "patch" program does not understand
+       renaming patch well, so use it only when you know the
+       recipient uses git to apply your patch.
+
+
+See Also
+--------
+gitlink:git-am[1], gitlink:git-send-email
+
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-fsck-objects.html b/git-fsck-objects.html
new file mode 100644 (file)
index 0000000..5158820
--- /dev/null
@@ -0,0 +1,508 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-fsck-objects(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-fsck-objects(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-fsck-objects -\r
+   Verifies the connectivity and validity of the objects in the database\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-fsck-objects</em> [--tags] [--root] [--unreachable] [--cache] [--standalone | --full] [--strict] [&lt;object&gt;*]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Verifies the connectivity and validity of the objects in the database.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;object&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        An object to treat as the head of an unreachability trace.\r
+</p>\r
+<p>If no objects are given, git-fsck-objects defaults to using the\r
+index file and all SHA1 references in .git/refs/* as heads.</p>\r
+</dd>\r
+<dt>\r
+--unreachable\r
+</dt>\r
+<dd>\r
+<p>\r
+        Print out objects that exist but that aren't readable from any\r
+        of the reference nodes.\r
+</p>\r
+</dd>\r
+<dt>\r
+--root\r
+</dt>\r
+<dd>\r
+<p>\r
+        Report root nodes.\r
+</p>\r
+</dd>\r
+<dt>\r
+--tags\r
+</dt>\r
+<dd>\r
+<p>\r
+        Report tags.\r
+</p>\r
+</dd>\r
+<dt>\r
+--cache\r
+</dt>\r
+<dd>\r
+<p>\r
+        Consider any object recorded in the index also as a head node for\r
+        an unreachability trace.\r
+</p>\r
+</dd>\r
+<dt>\r
+--standalone\r
+</dt>\r
+<dd>\r
+<p>\r
+        Limit checks to the contents of GIT_OBJECT_DIRECTORY\r
+        ($GIT_DIR/objects), making sure that it is consistent and\r
+        complete without referring to objects found in alternate\r
+        object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES,\r
+        nor packed git archives found in $GIT_DIR/objects/pack;\r
+        cannot be used with --full.\r
+</p>\r
+</dd>\r
+<dt>\r
+--full\r
+</dt>\r
+<dd>\r
+<p>\r
+        Check not just objects in GIT_OBJECT_DIRECTORY\r
+        ($GIT_DIR/objects), but also the ones found in alternate\r
+        object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES,\r
+        and in packed git archives found in $GIT_DIR/objects/pack\r
+        and corresponding pack subdirectories in alternate\r
+        object pools; cannot be used with --standalone.\r
+</p>\r
+</dd>\r
+<dt>\r
+--strict\r
+</dt>\r
+<dd>\r
+<p>\r
+        Enable more strict checking, namely to catch a file mode\r
+        recorded with g+w bit set, which was created by older\r
+        versions of git.  Existing repositories, including the\r
+        Linux kernel, git itself, and sparse repository have old\r
+        objects that triggers this check, but it is recommended\r
+        to check new projects with this flag.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>It tests SHA1 and general object sanity, and it does full tracking of\r
+the resulting reachability and everything else. It prints out any\r
+corruption it finds (missing or bad objects), and if you use the\r
+<em>--unreachable</em> flag it will also print out objects that exist but\r
+that aren't readable from any of the specified head nodes.</p>\r
+<p>So for example</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-fsck-objects --unreachable HEAD $(cat .git/refs/heads/*)</tt></pre>\r
+</div></div>\r
+<p>will do quite a _lot_ of verification on the tree. There are a few\r
+extra validity tests to be added (make sure that tree objects are\r
+sorted properly etc), but on the whole if "git-fsck-objects" is happy, you\r
+do have a valid tree.</p>\r
+<p>Any corrupt objects you will have to find in backups or other archives\r
+(ie you can just remove them and do an "rsync" with some other site in\r
+the hopes that somebody else has the object you have corrupted).</p>\r
+<p>Of course, "valid tree" doesn't mean that it wasn't generated by some\r
+evil person, and the end result might be crap. git is a revision\r
+tracking system, not a quality assurance system ;)</p>\r
+</div>\r
+<h2>Extracted Diagnostics</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+expect dangling commits - potential heads - due to lack of head information\r
+</dt>\r
+<dd>\r
+<p>\r
+        You haven't specified any nodes as heads so it won't be\r
+        possible to differentiate between un-parented commits and\r
+        root nodes.\r
+</p>\r
+</dd>\r
+<dt>\r
+missing sha1 directory <em>&lt;dir&gt;</em>\r
+</dt>\r
+<dd>\r
+<p>\r
+        The directory holding the sha1 objects is missing.\r
+</p>\r
+</dd>\r
+<dt>\r
+unreachable &lt;type&gt; &lt;object&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The &lt;type&gt; object &lt;object&gt;, isn't actually referred to directly\r
+        or indirectly in any of the trees or commits seen. This can\r
+        mean that there's another root node that you're not specifying\r
+        or that the tree is corrupt. If you haven't missed a root node\r
+        then you might as well delete unreachable nodes since they\r
+        can't be used.\r
+</p>\r
+</dd>\r
+<dt>\r
+missing &lt;type&gt; &lt;object&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The &lt;type&gt; object &lt;object&gt;, is referred to but isn't present in\r
+        the database.\r
+</p>\r
+</dd>\r
+<dt>\r
+dangling &lt;type&gt; &lt;object&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The &lt;type&gt; object &lt;object&gt;, is present in the database but never\r
+        <em>directly</em> used. A dangling commit could be a root node.\r
+</p>\r
+</dd>\r
+<dt>\r
+warning: git-fsck-objects: tree &lt;tree&gt; has full pathnames in it\r
+</dt>\r
+<dd>\r
+<p>\r
+        And it shouldn't&#8230;\r
+</p>\r
+</dd>\r
+<dt>\r
+sha1 mismatch &lt;object&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The database has an object who's sha1 doesn't match the\r
+        database value.\r
+        This indicates a serious data integrity problem.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Environment Variables</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+GIT_OBJECT_DIRECTORY\r
+</dt>\r
+<dd>\r
+<p>\r
+        used to specify the object database root (usually $GIT_DIR/objects)\r
+</p>\r
+</dd>\r
+<dt>\r
+GIT_INDEX_FILE\r
+</dt>\r
+<dd>\r
+<p>\r
+        used to specify the index file of the index\r
+</p>\r
+</dd>\r
+<dt>\r
+GIT_ALTERNATE_OBJECT_DIRECTORIES\r
+</dt>\r
+<dd>\r
+<p>\r
+        used to specify additional object database roots (usually unset)\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:09 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-fsck-objects.txt b/git-fsck-objects.txt
new file mode 100644 (file)
index 0000000..bab1f60
--- /dev/null
@@ -0,0 +1,144 @@
+git-fsck-objects(1)
+===================
+
+NAME
+----
+git-fsck-objects - Verifies the connectivity and validity of the objects in the database
+
+
+SYNOPSIS
+--------
+'git-fsck-objects' [--tags] [--root] [--unreachable] [--cache] [--standalone | --full] [--strict] [<object>*]
+
+DESCRIPTION
+-----------
+Verifies the connectivity and validity of the objects in the database.
+
+OPTIONS
+-------
+<object>::
+       An object to treat as the head of an unreachability trace.
++
+If no objects are given, git-fsck-objects defaults to using the
+index file and all SHA1 references in .git/refs/* as heads.
+
+--unreachable::
+       Print out objects that exist but that aren't readable from any
+       of the reference nodes.
+
+--root::
+       Report root nodes.
+
+--tags::
+       Report tags.
+
+--cache::
+       Consider any object recorded in the index also as a head node for
+       an unreachability trace.
+
+--standalone::
+       Limit checks to the contents of GIT_OBJECT_DIRECTORY
+       ($GIT_DIR/objects), making sure that it is consistent and
+       complete without referring to objects found in alternate
+       object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES,
+       nor packed git archives found in $GIT_DIR/objects/pack;
+       cannot be used with --full.
+
+--full::
+       Check not just objects in GIT_OBJECT_DIRECTORY
+       ($GIT_DIR/objects), but also the ones found in alternate
+       object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES,
+       and in packed git archives found in $GIT_DIR/objects/pack
+       and corresponding pack subdirectories in alternate
+       object pools; cannot be used with --standalone.
+
+--strict::
+       Enable more strict checking, namely to catch a file mode
+       recorded with g+w bit set, which was created by older
+       versions of git.  Existing repositories, including the
+       Linux kernel, git itself, and sparse repository have old
+       objects that triggers this check, but it is recommended
+       to check new projects with this flag.
+
+It tests SHA1 and general object sanity, and it does full tracking of
+the resulting reachability and everything else. It prints out any
+corruption it finds (missing or bad objects), and if you use the
+'--unreachable' flag it will also print out objects that exist but
+that aren't readable from any of the specified head nodes.
+
+So for example
+
+       git-fsck-objects --unreachable HEAD $(cat .git/refs/heads/*)
+
+will do quite a _lot_ of verification on the tree. There are a few
+extra validity tests to be added (make sure that tree objects are
+sorted properly etc), but on the whole if "git-fsck-objects" is happy, you
+do have a valid tree.
+
+Any corrupt objects you will have to find in backups or other archives
+(ie you can just remove them and do an "rsync" with some other site in
+the hopes that somebody else has the object you have corrupted).
+
+Of course, "valid tree" doesn't mean that it wasn't generated by some
+evil person, and the end result might be crap. git is a revision
+tracking system, not a quality assurance system ;)
+
+Extracted Diagnostics
+---------------------
+
+expect dangling commits - potential heads - due to lack of head information::
+       You haven't specified any nodes as heads so it won't be
+       possible to differentiate between un-parented commits and
+       root nodes.
+
+missing sha1 directory '<dir>'::
+       The directory holding the sha1 objects is missing.
+
+unreachable <type> <object>::
+       The <type> object <object>, isn't actually referred to directly
+       or indirectly in any of the trees or commits seen. This can
+       mean that there's another root node that you're not specifying
+       or that the tree is corrupt. If you haven't missed a root node
+       then you might as well delete unreachable nodes since they
+       can't be used.
+
+missing <type> <object>::
+       The <type> object <object>, is referred to but isn't present in
+       the database.
+
+dangling <type> <object>::
+       The <type> object <object>, is present in the database but never
+       'directly' used. A dangling commit could be a root node.
+
+warning: git-fsck-objects: tree <tree> has full pathnames in it::
+       And it shouldn't...
+
+sha1 mismatch <object>::
+       The database has an object who's sha1 doesn't match the
+       database value.
+       This indicates a serious data integrity problem.
+
+Environment Variables
+---------------------
+
+GIT_OBJECT_DIRECTORY::
+       used to specify the object database root (usually $GIT_DIR/objects)
+
+GIT_INDEX_FILE::
+       used to specify the index file of the index
+
+GIT_ALTERNATE_OBJECT_DIRECTORIES::
+       used to specify additional object database roots (usually unset)
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-get-tar-commit-id.html b/git-get-tar-commit-id.html
new file mode 100644 (file)
index 0000000..e7c0ce0
--- /dev/null
@@ -0,0 +1,305 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-get-tar-commit-id(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-get-tar-commit-id(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-get-tar-commit-id -\r
+   Extract commit ID from an archive created using git-tar-tree.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-get-tar-commit-id</em> &lt; &lt;tarfile&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Acts as a filter, extracting the commit ID stored in archives created by\r
+git-tar-tree.  It reads only the first 1024 bytes of input, thus its\r
+runtime is not influenced by the size of &lt;tarfile&gt; very much.</p>\r
+<p>If no commit ID is found, git-get-tar-commit-id quietly exists with a\r
+return code of 1.  This can happen if &lt;tarfile&gt; had not been created\r
+using git-tar-tree or if the first parameter of git-tar-tree had been\r
+a tree ID instead of a commit ID or tag.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Rene Scharfe &lt;rene.scharfe@lsrfire.ath.cx&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:10 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-get-tar-commit-id.txt b/git-get-tar-commit-id.txt
new file mode 100644 (file)
index 0000000..30b1fbf
--- /dev/null
@@ -0,0 +1,37 @@
+git-get-tar-commit-id(1)
+========================
+
+NAME
+----
+git-get-tar-commit-id - Extract commit ID from an archive created using git-tar-tree.
+
+
+SYNOPSIS
+--------
+'git-get-tar-commit-id' < <tarfile>
+
+
+DESCRIPTION
+-----------
+Acts as a filter, extracting the commit ID stored in archives created by
+git-tar-tree.  It reads only the first 1024 bytes of input, thus its
+runtime is not influenced by the size of <tarfile> very much.
+
+If no commit ID is found, git-get-tar-commit-id quietly exists with a
+return code of 1.  This can happen if <tarfile> had not been created
+using git-tar-tree or if the first parameter of git-tar-tree had been
+a tree ID instead of a commit ID or tag.
+
+
+Author
+------
+Written by Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-grep.html b/git-grep.html
new file mode 100644 (file)
index 0000000..a4c233f
--- /dev/null
@@ -0,0 +1,332 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-grep(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-grep(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-grep -\r
+   print lines matching a pattern\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-grep</em> &lt;option&gt;&#8230; &lt;pattern&gt; &lt;path&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Searches list of files <tt>git-ls-files</tt> produces for lines\r
+containing a match to the given pattern.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;option&gt;&#8230;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Either an option to pass to <tt>grep</tt> or <tt>git-ls-files</tt>.\r
+        Some <tt>grep</tt> options, such as <tt>-C</tt> and <tt>-m</tt>, that take\r
+        parameters are known to <tt>git-grep</tt>.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;pattern&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The pattern to look for.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;path&gt;&#8230;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Optional paths to limit the set of files to be searched;\r
+        passed to <tt>git-ls-files</tt>.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:10 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-grep.txt b/git-grep.txt
new file mode 100644 (file)
index 0000000..0175793
--- /dev/null
@@ -0,0 +1,46 @@
+git-grep(1)
+===========
+
+NAME
+----
+git-grep - print lines matching a pattern
+
+
+SYNOPSIS
+--------
+'git-grep' <option>... <pattern> <path>...
+
+DESCRIPTION
+-----------
+Searches list of files `git-ls-files` produces for lines
+containing a match to the given pattern.
+
+
+OPTIONS
+-------
+<option>...::
+       Either an option to pass to `grep` or `git-ls-files`.
+       Some `grep` options, such as `-C` and `-m`, that take
+       parameters are known to `git-grep`.
+
+<pattern>::
+       The pattern to look for.
+
+<path>...::
+
+       Optional paths to limit the set of files to be searched;
+       passed to `git-ls-files`.
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-hash-object.html b/git-hash-object.html
new file mode 100644 (file)
index 0000000..cecaa3e
--- /dev/null
@@ -0,0 +1,334 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-hash-object(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-hash-object(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-hash-object -\r
+   Computes object ID and optionally creates a blob from a file.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-hash-object</em> [-t &lt;type&gt;] [-w] [--stdin] [--] &lt;file&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Computes the object ID value for an object with specified type\r
+with the contents of the named file (which can be outside of the\r
+work tree), and optionally writes the resulting object into the\r
+object database.  Reports its object ID to its standard output.\r
+This is used by "git-cvsimport" to update the index\r
+without modifying files in the work tree.  When &lt;type&gt; is not\r
+specified, it defaults to "blob".</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-t &lt;type&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Specify the type (default: "blob").\r
+</p>\r
+</dd>\r
+<dt>\r
+-w\r
+</dt>\r
+<dd>\r
+<p>\r
+        Actually write the object into the object database.\r
+</p>\r
+</dd>\r
+<dt>\r
+--stdin\r
+</dt>\r
+<dd>\r
+<p>\r
+        Read the object from standard input instead of from a file.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:11 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-hash-object.txt b/git-hash-object.txt
new file mode 100644 (file)
index 0000000..0924931
--- /dev/null
@@ -0,0 +1,46 @@
+git-hash-object(1)
+==================
+
+NAME
+----
+git-hash-object - Computes object ID and optionally creates a blob from a file.
+
+
+SYNOPSIS
+--------
+'git-hash-object' [-t <type>] [-w] [--stdin] [--] <file>...
+
+DESCRIPTION
+-----------
+Computes the object ID value for an object with specified type
+with the contents of the named file (which can be outside of the
+work tree), and optionally writes the resulting object into the
+object database.  Reports its object ID to its standard output.
+This is used by "git-cvsimport" to update the index
+without modifying files in the work tree.  When <type> is not
+specified, it defaults to "blob". 
+
+OPTIONS
+-------
+
+-t <type>::
+       Specify the type (default: "blob").
+
+-w::
+       Actually write the object into the object database.
+
+--stdin::
+       Read the object from standard input instead of from a file.
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-http-fetch.html b/git-http-fetch.html
new file mode 100644 (file)
index 0000000..d19a77d
--- /dev/null
@@ -0,0 +1,354 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-http-fetch(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-http-fetch(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-http-fetch -\r
+   Downloads a remote git repository via HTTP\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-http-fetch</em> [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] commit-id url</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Downloads a remote git repository via HTTP.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+commit-id\r
+</dt>\r
+<dd>\r
+<p>\r
+        Either the hash or the filename under [URL]/refs/ to\r
+        pull.\r
+</p>\r
+</dd>\r
+<dt>\r
+-c\r
+</dt>\r
+<dd>\r
+<p>\r
+        Get the commit objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+-t\r
+</dt>\r
+<dd>\r
+<p>\r
+        Get trees associated with the commit objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+-a\r
+</dt>\r
+<dd>\r
+<p>\r
+        Get all the objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+        Report what is downloaded.\r
+</p>\r
+</dd>\r
+<dt>\r
+-w &lt;filename&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Writes the commit-id into the filename under $GIT_DIR/refs/&lt;filename&gt; on\r
+        the local end after the transfer is complete.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:11 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-http-fetch.txt b/git-http-fetch.txt
new file mode 100644 (file)
index 0000000..1116e85
--- /dev/null
@@ -0,0 +1,47 @@
+git-http-fetch(1)
+=================
+
+NAME
+----
+git-http-fetch - Downloads a remote git repository via HTTP
+
+
+SYNOPSIS
+--------
+'git-http-fetch' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] commit-id url
+
+DESCRIPTION
+-----------
+Downloads a remote git repository via HTTP.
+
+OPTIONS
+-------
+commit-id::
+        Either the hash or the filename under [URL]/refs/ to
+        pull.
+
+-c::
+       Get the commit objects.
+-t::
+       Get trees associated with the commit objects.
+-a::
+       Get all the objects.
+-v::
+       Report what is downloaded.
+
+-w <filename>::
+        Writes the commit-id into the filename under $GIT_DIR/refs/<filename> on
+        the local end after the transfer is complete.
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-http-push.html b/git-http-push.html
new file mode 100644 (file)
index 0000000..6457b66
--- /dev/null
@@ -0,0 +1,386 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-http-push(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-http-push(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-http-push -\r
+   Push missing objects using HTTP/DAV.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-http-push</em> [--complete] [--force] [--verbose] &lt;url&gt; &lt;ref&gt; [&lt;ref&gt;&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Sends missing objects to remote repository, and updates the\r
+remote branch.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--complete\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not assume that the remote repository is complete in its\r
+        current state, and verify all objects in the entire local\r
+        ref's history exist in the remote repository.\r
+</p>\r
+</dd>\r
+<dt>\r
+--force\r
+</dt>\r
+<dd>\r
+<p>\r
+        Usually, the command refuses to update a remote ref that\r
+        is not an ancestor of the local ref used to overwrite it.\r
+        This flag disables the check.  What this means is that\r
+        the remote repository can lose commits; use it with\r
+        care.\r
+</p>\r
+</dd>\r
+<dt>\r
+--verbose\r
+</dt>\r
+<dd>\r
+<p>\r
+        Report the list of objects being walked locally and the\r
+        list of objects successfully sent to the remote repository.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>&lt;ref&gt;&#8230;:\r
+        The remote refs to update.</p>\r
+</div>\r
+<h2>Specifying the Refs</h2>\r
+<div class="sectionbody">\r
+<p>A <em>&lt;ref&gt;</em> specification can be either a single pattern, or a pair\r
+of such patterns separated by a colon ":" (this means that a ref name\r
+cannot have a colon in it).  A single pattern <em>&lt;name&gt;</em> is just a\r
+shorthand for <em>&lt;name&gt;:&lt;name&gt;</em>.</p>\r
+<p>Each pattern pair consists of the source side (before the colon)\r
+and the destination side (after the colon).  The ref to be\r
+pushed is determined by finding a match that matches the source\r
+side, and where it is pushed is determined by using the\r
+destination side.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+It is an error if &lt;src&gt; does not match exactly one of the\r
+   local refs.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+If &lt;dst&gt; does not match any remote ref, either\r
+</p>\r
+<ul>\r
+<li>\r
+<p>\r
+it has to start with "refs/"; &lt;dst&gt; is used as the\r
+     destination literally in this case.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+&lt;src&gt; == &lt;dst&gt; and the ref that matched the &lt;src&gt; must not\r
+     exist in the set of remote refs; the ref matched &lt;src&gt;\r
+     locally is used as the name of the destination.\r
+</p>\r
+</li>\r
+</ul>\r
+</li>\r
+</ul>\r
+<p>Without <em>--force</em>, the &lt;src&gt; ref is stored at the remote only if\r
+&lt;dst&gt; does not exist, or &lt;dst&gt; is a proper subset (i.e. an\r
+ancestor) of &lt;src&gt;.  This check, known as "fast forward check",\r
+is performed in order to avoid accidentally overwriting the\r
+remote ref and lose other peoples' commits from there.</p>\r
+<p>With <em>--force</em>, the fast forward check is disabled for all refs.</p>\r
+<p>Optionally, a &lt;ref&gt; parameter can be prefixed with a plus <em>+</em> sign\r
+to disable the fast-forward check only on that ref.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Nick Hengeveld &lt;nickh@reactrix.com&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Nick Hengeveld</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:12 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-http-push.txt b/git-http-push.txt
new file mode 100644 (file)
index 0000000..c7066d6
--- /dev/null
@@ -0,0 +1,89 @@
+git-http-push(1)
+================
+
+NAME
+----
+git-http-push - Push missing objects using HTTP/DAV.
+
+
+SYNOPSIS
+--------
+'git-http-push' [--complete] [--force] [--verbose] <url> <ref> [<ref>...]
+
+DESCRIPTION
+-----------
+Sends missing objects to remote repository, and updates the
+remote branch.
+
+
+OPTIONS
+-------
+--complete::
+       Do not assume that the remote repository is complete in its
+       current state, and verify all objects in the entire local
+       ref's history exist in the remote repository.
+
+--force::
+       Usually, the command refuses to update a remote ref that
+       is not an ancestor of the local ref used to overwrite it.
+       This flag disables the check.  What this means is that
+       the remote repository can lose commits; use it with
+       care.
+
+--verbose::
+       Report the list of objects being walked locally and the
+       list of objects successfully sent to the remote repository.
+
+<ref>...:
+       The remote refs to update.
+
+
+Specifying the Refs
+-------------------
+
+A '<ref>' specification can be either a single pattern, or a pair
+of such patterns separated by a colon ":" (this means that a ref name
+cannot have a colon in it).  A single pattern '<name>' is just a 
+shorthand for '<name>:<name>'.
+
+Each pattern pair consists of the source side (before the colon)
+and the destination side (after the colon).  The ref to be
+pushed is determined by finding a match that matches the source
+side, and where it is pushed is determined by using the
+destination side.
+
+ - It is an error if <src> does not match exactly one of the
+   local refs.
+
+ - If <dst> does not match any remote ref, either
+
+   * it has to start with "refs/"; <dst> is used as the
+     destination literally in this case.
+
+   * <src> == <dst> and the ref that matched the <src> must not
+     exist in the set of remote refs; the ref matched <src>
+     locally is used as the name of the destination.
+
+Without '--force', the <src> ref is stored at the remote only if
+<dst> does not exist, or <dst> is a proper subset (i.e. an
+ancestor) of <src>.  This check, known as "fast forward check",
+is performed in order to avoid accidentally overwriting the
+remote ref and lose other peoples' commits from there.
+
+With '--force', the fast forward check is disabled for all refs.
+
+Optionally, a <ref> parameter can be prefixed with a plus '+' sign
+to disable the fast-forward check only on that ref.
+
+
+Author
+------
+Written by Nick Hengeveld <nickh@reactrix.com>
+
+Documentation
+--------------
+Documentation by Nick Hengeveld
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-index-pack.html b/git-index-pack.html
new file mode 100644 (file)
index 0000000..640d9f5
--- /dev/null
@@ -0,0 +1,320 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-index-pack(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-index-pack(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-index-pack -\r
+   Build pack index file for an existing packed archive\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-index-pack</em> [-o &lt;index-file&gt;] &lt;pack-file&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Reads a packed archive (.pack) from the specified file, and\r
+builds a pack index file (.idx) for it.  The packed archive\r
+together with the pack index can then be placed in the\r
+objects/pack/ directory of a git repository.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-o &lt;index-file&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Write the generated pack index into the specified\r
+        file.  Without this option the name of pack index\r
+        file is constructed from the name of packed archive\r
+        file by replacing .pack with .idx (and the program\r
+        fails if the name of packed archive does not end\r
+        with .pack).\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Sergey Vlasov &lt;vsu@altlinux.ru&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Sergey Vlasov</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:13 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-index-pack.txt b/git-index-pack.txt
new file mode 100644 (file)
index 0000000..71ce557
--- /dev/null
@@ -0,0 +1,44 @@
+git-index-pack(1)
+=================
+
+NAME
+----
+git-index-pack - Build pack index file for an existing packed archive
+
+
+SYNOPSIS
+--------
+'git-index-pack' [-o <index-file>] <pack-file>
+
+
+DESCRIPTION
+-----------
+Reads a packed archive (.pack) from the specified file, and
+builds a pack index file (.idx) for it.  The packed archive
+together with the pack index can then be placed in the
+objects/pack/ directory of a git repository.
+
+
+OPTIONS
+-------
+-o <index-file>::
+       Write the generated pack index into the specified
+       file.  Without this option the name of pack index
+       file is constructed from the name of packed archive
+       file by replacing .pack with .idx (and the program
+       fails if the name of packed archive does not end
+       with .pack).
+
+
+Author
+------
+Written by Sergey Vlasov <vsu@altlinux.ru>
+
+Documentation
+-------------
+Documentation by Sergey Vlasov
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-init-db.html b/git-init-db.html
new file mode 100644 (file)
index 0000000..dead1b6
--- /dev/null
@@ -0,0 +1,339 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-init-db(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-init-db(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-init-db -\r
+   Creates an empty git repository\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-init-db</em> [--template=&lt;template_directory&gt;]</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--template=&lt;template_directory&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Provide the directory in from which templates will be used.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>This simply creates an empty git repository - basically a <tt>.git</tt> directory\r
+and <tt>.git/object/??/</tt>, <tt>.git/refs/heads</tt> and <tt>.git/refs/tags</tt> directories,\r
+and links <tt>.git/HEAD</tt> symbolically to <tt>.git/refs/heads/master</tt>.</p>\r
+<p>If the <tt>$GIT_DIR</tt> environment variable is set then it specifies a path\r
+to use instead of <tt>./.git</tt> for the base of the repository.</p>\r
+<p>If the object storage directory is specified via the <tt>$GIT_OBJECT_DIRECTORY</tt>\r
+environment variable then the sha1 directories are created underneath -\r
+otherwise the default <tt>$GIT_DIR/objects</tt> directory is used.</p>\r
+<p><tt>git-init-db</tt> won't hurt an existing repository.</p>\r
+</div>\r
+<h2>EXAMPLES</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+Start a new git repository for an existing code base\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ cd /path/to/my/codebase\r
+$ git-init-db <b>(1)</b>\r
+$ git-add . <b>(2)</b>\r
+\r
+<b>(1)</b> prepare /path/to/my/codebase/.git directory\r
+<b>(2)</b> add all existing file to the index</tt></pre>\r
+</div></div>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:13 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-init-db.txt b/git-init-db.txt
new file mode 100644 (file)
index 0000000..6deef92
--- /dev/null
@@ -0,0 +1,62 @@
+git-init-db(1)
+==============
+
+NAME
+----
+git-init-db - Creates an empty git repository
+
+
+SYNOPSIS
+--------
+'git-init-db' [--template=<template_directory>]
+
+
+OPTIONS
+-------
+--template=<template_directory>::
+       Provide the directory in from which templates will be used.
+
+
+DESCRIPTION
+-----------
+This simply creates an empty git repository - basically a `.git` directory
+and `.git/object/??/`, `.git/refs/heads` and `.git/refs/tags` directories,
+and links `.git/HEAD` symbolically to `.git/refs/heads/master`.
+
+If the `$GIT_DIR` environment variable is set then it specifies a path
+to use instead of `./.git` for the base of the repository.
+
+If the object storage directory is specified via the `$GIT_OBJECT_DIRECTORY`
+environment variable then the sha1 directories are created underneath -
+otherwise the default `$GIT_DIR/objects` directory is used.
+
+`git-init-db` won't hurt an existing repository.
+
+
+EXAMPLES
+--------
+
+Start a new git repository for an existing code base::
++
+----------------
+$ cd /path/to/my/codebase
+$ git-init-db <1>
+$ git-add . <2>
+
+<1> prepare /path/to/my/codebase/.git directory
+<2> add all existing file to the index
+----------------
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-local-fetch.html b/git-local-fetch.html
new file mode 100644 (file)
index 0000000..4055fec
--- /dev/null
@@ -0,0 +1,345 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-local-fetch(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-local-fetch(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-local-fetch -\r
+   Duplicates another git repository on a local system\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-local-fetch</em> [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] [-l] [-s] [-n] commit-id path</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Duplicates another git repository on a local system.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-c\r
+</dt>\r
+<dd>\r
+<p>\r
+        Get the commit objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+-t\r
+</dt>\r
+<dd>\r
+<p>\r
+        Get trees associated with the commit objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+-a\r
+</dt>\r
+<dd>\r
+<p>\r
+        Get all the objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+        Report what is downloaded.\r
+</p>\r
+</dd>\r
+<dt>\r
+-w &lt;filename&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Writes the commit-id into the filename under $GIT_DIR/refs/&lt;filename&gt; on\r
+        the local end after the transfer is complete.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:14 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-local-fetch.txt b/git-local-fetch.txt
new file mode 100644 (file)
index 0000000..87abec1
--- /dev/null
@@ -0,0 +1,43 @@
+git-local-fetch(1)
+==================
+
+NAME
+----
+git-local-fetch - Duplicates another git repository on a local system
+
+
+SYNOPSIS
+--------
+'git-local-fetch' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] [-l] [-s] [-n] commit-id path
+
+DESCRIPTION
+-----------
+Duplicates another git repository on a local system.
+
+OPTIONS
+-------
+-c::
+       Get the commit objects.
+-t::
+       Get trees associated with the commit objects.
+-a::
+       Get all the objects.
+-v::
+       Report what is downloaded.
+
+-w <filename>::
+        Writes the commit-id into the filename under $GIT_DIR/refs/<filename> on
+        the local end after the transfer is complete.
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-log.html b/git-log.html
new file mode 100644 (file)
index 0000000..1d9f233
--- /dev/null
@@ -0,0 +1,363 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-log(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-log(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-log -\r
+   Show commit logs\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-log</em> &lt;option&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Shows the commit logs.  This command internally invokes\r
+<em>git-rev-list</em>, and the command line options are passed to that\r
+command.</p>\r
+<p>This manual page describes only the most frequently used options.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--pretty=&lt;format&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Controls the way the commit log is formatted.\r
+</p>\r
+</dd>\r
+<dt>\r
+--max-count=&lt;n&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Limits the number of commits to show.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;since&gt;..&lt;until&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show only commits between the named two commits.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Examples</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+git log --no-merges\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show the whole commit history, but skip any merges\r
+</p>\r
+</dd>\r
+<dt>\r
+git log v2.6.12.. include/scsi drivers/scsi\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show all commits since version <em>v2.6.12</em> that changed any file\r
+        in the include/scsi or drivers/scsi subdirectories\r
+</p>\r
+</dd>\r
+<dt>\r
+git log --since="2 weeks ago" &#8212; gitk\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show the changes during the last two weeks to the file <em>gitk</em>.\r
+        The "--" is necessary to avoid confusion with the <strong>branch</strong> named\r
+        <em>gitk</em>\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:15 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-log.txt b/git-log.txt
new file mode 100644 (file)
index 0000000..e995d1b
--- /dev/null
@@ -0,0 +1,62 @@
+git-log(1)
+==========
+
+NAME
+----
+git-log - Show commit logs
+
+
+SYNOPSIS
+--------
+'git-log' <option>...
+
+DESCRIPTION
+-----------
+Shows the commit logs.  This command internally invokes
+'git-rev-list', and the command line options are passed to that
+command.
+
+This manual page describes only the most frequently used options.
+
+OPTIONS
+-------
+--pretty=<format>::
+       Controls the way the commit log is formatted.
+
+--max-count=<n>::
+       Limits the number of commits to show.
+
+<since>..<until>::
+       Show only commits between the named two commits.
+
+
+Examples
+--------
+git log --no-merges::
+
+       Show the whole commit history, but skip any merges
+
+git log v2.6.12.. include/scsi drivers/scsi::
+
+       Show all commits since version 'v2.6.12' that changed any file
+       in the include/scsi or drivers/scsi subdirectories
+
+git log --since="2 weeks ago" -- gitk::
+
+       Show the changes during the last two weeks to the file 'gitk'.
+       The "--" is necessary to avoid confusion with the *branch* named
+       'gitk'
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-lost-found.html b/git-lost-found.html
new file mode 100644 (file)
index 0000000..4a8f92f
--- /dev/null
@@ -0,0 +1,345 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-lost-found(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-lost-found(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-lost-found -\r
+   Recover lost refs that luckily have not yet been pruned.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-lost-found</em></p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Finds dangling commits and tags from the object database, and\r
+creates refs to them in .git/lost-found/ directory.  Commits and\r
+tags that dereference to commits go to .git/lost-found/commit\r
+and others are stored in .git/lost-found/other directory.</p>\r
+</div>\r
+<h2>OUTPUT</h2>\r
+<div class="sectionbody">\r
+<p>One line description from the commit and tag found along with\r
+their object name are printed on the standard output.</p>\r
+</div>\r
+<h2>EXAMPLE</h2>\r
+<div class="sectionbody">\r
+<p>Suppose you run <em>git tag -f</em> and mistyped the tag to overwrite.\r
+The ref to your tag is overwritten, but until you run <em>git\r
+prune</em>, it is still there.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git lost-found\r
+[1ef2b196d909eed523d4f3c9bf54b78cdd6843c6] GIT 0.99.9c\r
+...</tt></pre>\r
+</div></div>\r
+<p>Also you can use gitk to browse how they relate to each other\r
+and existing (probably old) tags.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ gitk $(cd .git/lost-found/commit &amp;&amp; echo ??*)</tt></pre>\r
+</div></div>\r
+<p>After making sure that it is the object you are looking for, you\r
+can reconnect it to your regular .git/refs hierarchy.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git cat-file -t 1ef2b196\r
+tag\r
+$ git cat-file tag 1ef2b196\r
+object fa41bbce8e38c67a218415de6cfa510c7e50032a\r
+type commit\r
+tag v0.99.9c\r
+tagger Junio C Hamano &lt;junkio@cox.net&gt; 1131059594 -0800\r
+\r
+GIT 0.99.9c\r
+\r
+This contains the following changes from the "master" branch, since\r
+...\r
+$ git update-ref refs/tags/not-lost-anymore 1ef2b196\r
+$ git rev-parse not-lost-anymore\r
+1ef2b196d909eed523d4f3c9bf54b78cdd6843c6</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano æ¿±é‡Ž ç´” &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:15 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-lost-found.txt b/git-lost-found.txt
new file mode 100644 (file)
index 0000000..03156f2
--- /dev/null
@@ -0,0 +1,78 @@
+git-lost-found(1)
+=================
+
+NAME
+----
+git-lost-found - Recover lost refs that luckily have not yet been pruned.
+
+SYNOPSIS
+--------
+'git-lost-found'
+
+DESCRIPTION
+-----------
+Finds dangling commits and tags from the object database, and
+creates refs to them in .git/lost-found/ directory.  Commits and
+tags that dereference to commits go to .git/lost-found/commit
+and others are stored in .git/lost-found/other directory.
+
+
+OUTPUT
+------
+One line description from the commit and tag found along with
+their object name are printed on the standard output.
+
+
+EXAMPLE
+-------
+
+Suppose you run 'git tag -f' and mistyped the tag to overwrite.
+The ref to your tag is overwritten, but until you run 'git
+prune', it is still there.
+
+------------
+$ git lost-found
+[1ef2b196d909eed523d4f3c9bf54b78cdd6843c6] GIT 0.99.9c
+...
+------------
+
+Also you can use gitk to browse how they relate to each other
+and existing (probably old) tags.
+
+------------
+$ gitk $(cd .git/lost-found/commit && echo ??*)
+------------
+
+After making sure that it is the object you are looking for, you
+can reconnect it to your regular .git/refs hierarchy.
+
+------------
+$ git cat-file -t 1ef2b196
+tag
+$ git cat-file tag 1ef2b196
+object fa41bbce8e38c67a218415de6cfa510c7e50032a
+type commit
+tag v0.99.9c
+tagger Junio C Hamano <junkio@cox.net> 1131059594 -0800
+
+GIT 0.99.9c
+
+This contains the following changes from the "master" branch, since
+...
+$ git update-ref refs/tags/not-lost-anymore 1ef2b196
+$ git rev-parse not-lost-anymore
+1ef2b196d909eed523d4f3c9bf54b78cdd6843c6
+------------
+
+Author
+------
+Written by Junio C Hamano æ¿±é‡Ž ç´” <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-ls-files.html b/git-ls-files.html
new file mode 100644 (file)
index 0000000..79bb32c
--- /dev/null
@@ -0,0 +1,631 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-ls-files(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-ls-files(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-ls-files -\r
+   Information about files in the index/working directory\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-ls-files</em> [-z] [-t]\r
+                (--[cached|deleted|others|ignored|stage|unmerged|killed|modified])*\r
+                (-[c|d|o|i|s|u|k|m])*\r
+                [-x &lt;pattern&gt;|--exclude=&lt;pattern&gt;]\r
+                [-X &lt;file&gt;|--exclude-from=&lt;file&gt;]\r
+                [--exclude-per-directory=&lt;file&gt;]\r
+                [--full-name] [--] [&lt;file&gt;]*</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>This merges the file listing in the directory cache index with the\r
+actual working directory list, and shows different combinations of the\r
+two.</p>\r
+<p>One or more of the options below may be used to determine the files\r
+shown:</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-c|--cached\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show cached files in the output (default)\r
+</p>\r
+</dd>\r
+<dt>\r
+-d|--deleted\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show deleted files in the output\r
+</p>\r
+</dd>\r
+<dt>\r
+-m|--modified\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show modified files in the output\r
+</p>\r
+</dd>\r
+<dt>\r
+-o|--others\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show other files in the output\r
+</p>\r
+</dd>\r
+<dt>\r
+-i|--ignored\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show ignored files in the output\r
+        Note the this also reverses any exclude list present.\r
+</p>\r
+</dd>\r
+<dt>\r
+-s|--stage\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show stage files in the output\r
+</p>\r
+</dd>\r
+<dt>\r
+-u|--unmerged\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show unmerged files in the output (forces --stage)\r
+</p>\r
+</dd>\r
+<dt>\r
+-k|--killed\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show files on the filesystem that need to be removed due\r
+        to file/directory conflicts for checkout-index to\r
+        succeed.\r
+</p>\r
+</dd>\r
+<dt>\r
+-z\r
+</dt>\r
+<dd>\r
+<p>\r
+        \0 line termination on output.\r
+</p>\r
+</dd>\r
+<dt>\r
+-x|--exclude=&lt;pattern&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Skips files matching pattern.\r
+        Note that pattern is a shell wildcard pattern.\r
+</p>\r
+</dd>\r
+<dt>\r
+-X|--exclude-from=&lt;file&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        exclude patterns are read from &lt;file&gt;; 1 per line.\r
+</p>\r
+</dd>\r
+<dt>\r
+--exclude-per-directory=&lt;file&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        read additional exclude patterns that apply only to the\r
+        directory and its subdirectories in &lt;file&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+-t\r
+</dt>\r
+<dd>\r
+<p>\r
+        Identify the file status with the following tags (followed by\r
+        a space) at the start of each line:\r
+</p>\r
+<div class="hlist"><table>\r
+<tr>\r
+<td class="hlist1">\r
+H\r
+</td>\r
+<td class="hlist2">\r
+cached\r
+</td>\r
+</tr>\r
+<tr>\r
+<td class="hlist1">\r
+M\r
+</td>\r
+<td class="hlist2">\r
+unmerged\r
+</td>\r
+</tr>\r
+<tr>\r
+<td class="hlist1">\r
+R\r
+</td>\r
+<td class="hlist2">\r
+removed/deleted\r
+</td>\r
+</tr>\r
+<tr>\r
+<td class="hlist1">\r
+C\r
+</td>\r
+<td class="hlist2">\r
+modifed/changed\r
+</td>\r
+</tr>\r
+<tr>\r
+<td class="hlist1">\r
+K\r
+</td>\r
+<td class="hlist2">\r
+to be killed\r
+        ?       other\r
+</td>\r
+</tr>\r
+</table></div>\r
+</dd>\r
+<dt>\r
+--full-name\r
+</dt>\r
+<dd>\r
+<p>\r
+        When run from a subdirectory, the command usually\r
+        outputs paths relative to the current directory.  This\r
+        option forces paths to be output relative to the project\r
+        top directory.\r
+</p>\r
+</dd>\r
+<dt>\r
+&#8212;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not interpret any more arguments as options.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;file&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Files to show. If no files are given all files which match the other\r
+        specified criteria are shown.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Output</h2>\r
+<div class="sectionbody">\r
+<p>show files just outputs the filename unless <em>--stage</em> is specified in\r
+which case it outputs:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>[&lt;tag&gt; ]&lt;mode&gt; &lt;object&gt; &lt;stage&gt; &lt;file&gt;</tt></pre>\r
+</div></div>\r
+<p>"git-ls-files --unmerged" and "git-ls-files --stage" can be used to examine\r
+detailed information on unmerged paths.</p>\r
+<p>For an unmerged path, instead of recording a single mode/SHA1 pair,\r
+the dircache records up to three such pairs; one from tree O in stage\r
+1, A in stage 2, and B in stage 3.  This information can be used by\r
+the user (or the porcelain) to see what should eventually be recorded at the\r
+path. (see git-read-tree for more information on state)</p>\r
+<p>When <tt>-z</tt> option is not used, TAB, LF, and backslash characters\r
+in pathnames are represented as <tt>\t</tt>, <tt>\n</tt>, and <tt>\\</tt>,\r
+respectively.</p>\r
+</div>\r
+<h2>Exclude Patterns</h2>\r
+<div class="sectionbody">\r
+<p><em>git-ls-files</em> can use a list of "exclude patterns" when\r
+traversing the directory tree and finding files to show when the\r
+flags --others or --ignored are specified.</p>\r
+<p>These exclude patterns come from these places:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+command line flag --exclude=&lt;pattern&gt; specifies a single\r
+     pattern.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+command line flag --exclude-from=&lt;file&gt; specifies a list of\r
+     patterns stored in a file.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+command line flag --exclude-per-directory=&lt;name&gt; specifies\r
+     a name of the file in each directory <em>git-ls-files</em>\r
+     examines, and if exists, its contents are used as an\r
+     additional list of patterns.\r
+</p>\r
+</li>\r
+</ol>\r
+<p>An exclude pattern file used by (2) and (3) contains one pattern\r
+per line.  A line that starts with a <em>#</em> can be used as comment\r
+for readability.</p>\r
+<p>There are three lists of patterns that are in effect at a given\r
+time.  They are built and ordered in the following way:</p>\r
+<ul>\r
+<li>\r
+<p>\r
+--exclude=&lt;pattern&gt; from the command line; patterns are\r
+   ordered in the same order as they appear on the command line.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+lines read from --exclude-from=&lt;file&gt;; patterns are ordered\r
+   in the same order as they appear in the file.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+When --exclude-per-directory=&lt;name&gt; is specified, upon\r
+   entering a directory that has such a file, its contents are\r
+   appended at the end of the current "list of patterns".  They\r
+   are popped off when leaving the directory.\r
+</p>\r
+</li>\r
+</ul>\r
+<p>Each pattern in the pattern list specifies "a match pattern" and\r
+optionally the fate; either a file that matches the pattern is\r
+considered excluded or included.  A filename is matched against\r
+the patterns in the three lists; the --exclude-from list is\r
+checked first, then the --exclude-per-directory list, and then\r
+finally the --exclude list. The last match determines its fate.\r
+If there is no match in the three lists, the fate is "included".</p>\r
+<p>A pattern specified on the command line with --exclude or read\r
+from the file specified with --exclude-from is relative to the\r
+top of the directory tree.  A pattern read from a file specified\r
+by --exclude-per-directory is relative to the directory that the\r
+pattern file appears in.</p>\r
+<p>An exclude pattern is of the following format:</p>\r
+<ul>\r
+<li>\r
+<p>\r
+an optional prefix <em>!</em> which means that the fate this pattern\r
+   specifies is "include", not the usual "exclude"; the\r
+   remainder of the pattern string is interpreted according to\r
+   the following rules.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+if it does not contain a slash <em>/</em>, it is a shell glob\r
+   pattern and used to match against the filename without\r
+   leading directories (i.e. the same way as the current\r
+   implementation).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+otherwise, it is a shell glob pattern, suitable for\r
+   consumption by fnmatch(3) with FNM_PATHNAME flag.  I.e. a\r
+   slash in the pattern must match a slash in the pathname.\r
+   "Documentation/*.html" matches "Documentation/git.html" but\r
+   not "ppc/ppc.html".  As a natural exception, "/*.c" matches\r
+   "cat-file.c" but not "mozilla-sha1/sha1.c".\r
+</p>\r
+</li>\r
+</ul>\r
+<p>An example:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>    $ cat .git/ignore\r
+    # ignore objects and archives, anywhere in the tree.\r
+    *.[oa]\r
+    $ cat Documentation/.gitignore\r
+    # ignore generated html files,\r
+    *.html\r
+    # except foo.html which is maintained by hand\r
+    !foo.html\r
+    $ git-ls-files --ignored \\r
+        --exclude='Documentation/*.[0-9]' \\r
+        --exclude-from=.git/ignore \\r
+        --exclude-per-directory=.gitignore</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>See Also</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-read-tree.html">git-read-tree(1)</a></p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:16 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-ls-files.txt b/git-ls-files.txt
new file mode 100644 (file)
index 0000000..186f3bb
--- /dev/null
@@ -0,0 +1,220 @@
+git-ls-files(1)
+===============
+
+NAME
+----
+git-ls-files - Information about files in the index/working directory
+
+
+SYNOPSIS
+--------
+'git-ls-files' [-z] [-t]
+               (--[cached|deleted|others|ignored|stage|unmerged|killed|modified])\*
+               (-[c|d|o|i|s|u|k|m])\*
+               [-x <pattern>|--exclude=<pattern>]
+               [-X <file>|--exclude-from=<file>]
+               [--exclude-per-directory=<file>] 
+               [--full-name] [--] [<file>]\*
+
+DESCRIPTION
+-----------
+This merges the file listing in the directory cache index with the
+actual working directory list, and shows different combinations of the
+two.
+
+One or more of the options below may be used to determine the files
+shown:
+
+OPTIONS
+-------
+-c|--cached::
+       Show cached files in the output (default)
+
+-d|--deleted::
+       Show deleted files in the output
+
+-m|--modified::
+       Show modified files in the output
+
+-o|--others::
+       Show other files in the output
+
+-i|--ignored::
+       Show ignored files in the output
+       Note the this also reverses any exclude list present.
+
+-s|--stage::
+       Show stage files in the output
+
+-u|--unmerged::
+       Show unmerged files in the output (forces --stage)
+
+-k|--killed::
+       Show files on the filesystem that need to be removed due
+       to file/directory conflicts for checkout-index to
+       succeed.
+
+-z::
+       \0 line termination on output.
+
+-x|--exclude=<pattern>::
+       Skips files matching pattern.
+       Note that pattern is a shell wildcard pattern.
+
+-X|--exclude-from=<file>::
+       exclude patterns are read from <file>; 1 per line.
+
+--exclude-per-directory=<file>::
+       read additional exclude patterns that apply only to the
+       directory and its subdirectories in <file>.
+
+-t::
+       Identify the file status with the following tags (followed by
+       a space) at the start of each line:
+       H::     cached
+       M::     unmerged
+       R::     removed/deleted
+       C::     modifed/changed
+       K::     to be killed
+       ?       other
+
+--full-name::
+       When run from a subdirectory, the command usually
+       outputs paths relative to the current directory.  This
+       option forces paths to be output relative to the project
+       top directory.
+
+--::
+       Do not interpret any more arguments as options.
+
+<file>::
+       Files to show. If no files are given all files which match the other
+       specified criteria are shown.
+
+Output
+------
+show files just outputs the filename unless '--stage' is specified in
+which case it outputs:
+
+        [<tag> ]<mode> <object> <stage> <file>
+
+"git-ls-files --unmerged" and "git-ls-files --stage" can be used to examine
+detailed information on unmerged paths.
+
+For an unmerged path, instead of recording a single mode/SHA1 pair,
+the dircache records up to three such pairs; one from tree O in stage
+1, A in stage 2, and B in stage 3.  This information can be used by
+the user (or the porcelain) to see what should eventually be recorded at the
+path. (see git-read-tree for more information on state)
+
+When `-z` option is not used, TAB, LF, and backslash characters
+in pathnames are represented as `\t`, `\n`, and `\\`,
+respectively.
+
+
+Exclude Patterns
+----------------
+
+'git-ls-files' can use a list of "exclude patterns" when
+traversing the directory tree and finding files to show when the
+flags --others or --ignored are specified.
+
+These exclude patterns come from these places:
+
+  1. command line flag --exclude=<pattern> specifies a single
+     pattern.
+
+  2. command line flag --exclude-from=<file> specifies a list of
+     patterns stored in a file.
+
+  3. command line flag --exclude-per-directory=<name> specifies
+     a name of the file in each directory 'git-ls-files'
+     examines, and if exists, its contents are used as an
+     additional list of patterns.
+
+An exclude pattern file used by (2) and (3) contains one pattern
+per line.  A line that starts with a '#' can be used as comment
+for readability.
+
+There are three lists of patterns that are in effect at a given
+time.  They are built and ordered in the following way:
+
+ * --exclude=<pattern> from the command line; patterns are
+   ordered in the same order as they appear on the command line.
+
+ * lines read from --exclude-from=<file>; patterns are ordered
+   in the same order as they appear in the file.
+
+ * When --exclude-per-directory=<name> is specified, upon
+   entering a directory that has such a file, its contents are
+   appended at the end of the current "list of patterns".  They
+   are popped off when leaving the directory.
+
+Each pattern in the pattern list specifies "a match pattern" and
+optionally the fate; either a file that matches the pattern is
+considered excluded or included.  A filename is matched against
+the patterns in the three lists; the --exclude-from list is
+checked first, then the --exclude-per-directory list, and then
+finally the --exclude list. The last match determines its fate.
+If there is no match in the three lists, the fate is "included".
+
+A pattern specified on the command line with --exclude or read
+from the file specified with --exclude-from is relative to the
+top of the directory tree.  A pattern read from a file specified
+by --exclude-per-directory is relative to the directory that the
+pattern file appears in.
+
+An exclude pattern is of the following format:
+
+ - an optional prefix '!' which means that the fate this pattern
+   specifies is "include", not the usual "exclude"; the
+   remainder of the pattern string is interpreted according to
+   the following rules.
+
+ - if it does not contain a slash '/', it is a shell glob
+   pattern and used to match against the filename without
+   leading directories (i.e. the same way as the current
+   implementation).
+
+ - otherwise, it is a shell glob pattern, suitable for
+   consumption by fnmatch(3) with FNM_PATHNAME flag.  I.e. a
+   slash in the pattern must match a slash in the pathname.
+   "Documentation/\*.html" matches "Documentation/git.html" but
+   not "ppc/ppc.html".  As a natural exception, "/*.c" matches
+   "cat-file.c" but not "mozilla-sha1/sha1.c".
+
+An example:
+
+--------------------------------------------------------------
+    $ cat .git/ignore
+    # ignore objects and archives, anywhere in the tree.
+    *.[oa]
+    $ cat Documentation/.gitignore
+    # ignore generated html files,
+    *.html
+    # except foo.html which is maintained by hand
+    !foo.html
+    $ git-ls-files --ignored \
+        --exclude='Documentation/*.[0-9]' \
+        --exclude-from=.git/ignore \
+        --exclude-per-directory=.gitignore
+--------------------------------------------------------------
+
+
+See Also
+--------
+gitlink:git-read-tree[1]
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-ls-remote.html b/git-ls-remote.html
new file mode 100644 (file)
index 0000000..5986316
--- /dev/null
@@ -0,0 +1,353 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-ls-remote(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-ls-remote(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-ls-remote -\r
+   Look at references other repository has.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-ls-remote</em> [--heads] [--tags] &lt;repository&gt; &lt;refs&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Displays the references other repository has.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-h|--heads, -t|--tags\r
+</dt>\r
+<dd>\r
+<p>\r
+        Limit to only refs/heads and refs/tags, respectively.\r
+        These options are _not_ mutually exclusive; when given\r
+        both, references stored in refs/heads and refs/tags are\r
+        displayed.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;repository&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Location of the repository.  The shorthand defined in\r
+        $GIT_DIR/branches/ can be used.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;refs&gt;&#8230;\r
+</dt>\r
+<dd>\r
+<p>\r
+        When unspecified, all references, after filtering done\r
+        with --heads and --tags, are shown.  When &lt;refs&gt;&#8230; are\r
+        specified, only references matching the given patterns\r
+        are displayed.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>EXAMPLES</h2>\r
+<div class="sectionbody">\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>$ git ls-remote --tags ./.\r
+d6602ec5194c87b0fc87103ca4d67251c76f233a        refs/tags/v0.99\r
+f25a265a342aed6041ab0cc484224d9ca54b6f41        refs/tags/v0.99.1\r
+7ceca275d047c90c0c7d5afb13ab97efdf51bd6e        refs/tags/v0.99.3\r
+c5db5456ae3b0873fc659c19fafdde22313cc441        refs/tags/v0.99.2\r
+0918385dbd9656cab0d1d81ba7453d49bbc16250        refs/tags/junio-gpg-pub\r
+$ git ls-remote http://www.kernel.org/pub/scm/git/git.git master pu rc\r
+5fe978a5381f1fbad26a80e682ddd2a401966740        refs/heads/master\r
+c781a84b5204fb294c9ccc79f8b3baceeb32c061        refs/heads/pu\r
+b1d096f2926c4e37c9c0b6a7bf2119bedaa277cb        refs/heads/rc\r
+$ echo http://www.kernel.org/pub/scm/git/git.git &gt;.git/branches/public\r
+$ git ls-remote --tags public v\*\r
+d6602ec5194c87b0fc87103ca4d67251c76f233a        refs/tags/v0.99\r
+f25a265a342aed6041ab0cc484224d9ca54b6f41        refs/tags/v0.99.1\r
+c5db5456ae3b0873fc659c19fafdde22313cc441        refs/tags/v0.99.2\r
+7ceca275d047c90c0c7d5afb13ab97efdf51bd6e        refs/tags/v0.99.3</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:17 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-ls-remote.txt b/git-ls-remote.txt
new file mode 100644 (file)
index 0000000..66fe60f
--- /dev/null
@@ -0,0 +1,63 @@
+git-ls-remote(1)
+================
+
+NAME
+----
+git-ls-remote - Look at references other repository has.
+
+
+SYNOPSIS
+--------
+'git-ls-remote' [--heads] [--tags] <repository> <refs>...
+
+DESCRIPTION
+-----------
+Displays the references other repository has.
+
+
+OPTIONS
+-------
+-h|--heads, -t|--tags::
+       Limit to only refs/heads and refs/tags, respectively.
+       These options are _not_ mutually exclusive; when given
+       both, references stored in refs/heads and refs/tags are
+       displayed.
+
+<repository>::
+       Location of the repository.  The shorthand defined in
+       $GIT_DIR/branches/ can be used.
+
+<refs>...::
+       When unspecified, all references, after filtering done
+       with --heads and --tags, are shown.  When <refs>... are
+       specified, only references matching the given patterns
+       are displayed.
+
+EXAMPLES
+--------
+
+       $ git ls-remote --tags ./.
+       d6602ec5194c87b0fc87103ca4d67251c76f233a        refs/tags/v0.99
+       f25a265a342aed6041ab0cc484224d9ca54b6f41        refs/tags/v0.99.1
+       7ceca275d047c90c0c7d5afb13ab97efdf51bd6e        refs/tags/v0.99.3
+       c5db5456ae3b0873fc659c19fafdde22313cc441        refs/tags/v0.99.2
+       0918385dbd9656cab0d1d81ba7453d49bbc16250        refs/tags/junio-gpg-pub
+       $ git ls-remote http://www.kernel.org/pub/scm/git/git.git master pu rc
+       5fe978a5381f1fbad26a80e682ddd2a401966740        refs/heads/master
+       c781a84b5204fb294c9ccc79f8b3baceeb32c061        refs/heads/pu
+       b1d096f2926c4e37c9c0b6a7bf2119bedaa277cb        refs/heads/rc
+       $ echo http://www.kernel.org/pub/scm/git/git.git >.git/branches/public
+       $ git ls-remote --tags public v\*
+       d6602ec5194c87b0fc87103ca4d67251c76f233a        refs/tags/v0.99
+       f25a265a342aed6041ab0cc484224d9ca54b6f41        refs/tags/v0.99.1
+       c5db5456ae3b0873fc659c19fafdde22313cc441        refs/tags/v0.99.2
+       7ceca275d047c90c0c7d5afb13ab97efdf51bd6e        refs/tags/v0.99.3
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-ls-tree.html b/git-ls-tree.html
new file mode 100644 (file)
index 0000000..298587b
--- /dev/null
@@ -0,0 +1,383 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-ls-tree(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-ls-tree(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-ls-tree -\r
+   Lists the contents of a tree object.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-ls-tree</em> [-d] [-r] [-t] [-z] [--name-only] [--name-status] &lt;tree-ish&gt; [paths&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Lists the contents of a given tree object, like what "/bin/ls -a" does\r
+in the current working directory. Note that the usage is subtly different,\r
+though - <em>paths</em> denote just a list of patterns to match, e.g. so specifying\r
+directory name (without <em>-r</em>) will behave differently, and order of the\r
+arguments does not matter.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;tree-ish&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Id of a tree-ish.\r
+</p>\r
+</dd>\r
+<dt>\r
+-d\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show only the named tree entry itself, not its children.\r
+</p>\r
+</dd>\r
+<dt>\r
+-r\r
+</dt>\r
+<dd>\r
+<p>\r
+        Recurse into sub-trees.\r
+</p>\r
+</dd>\r
+<dt>\r
+-t\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show tree entries even when going to recurse them. Has no effect\r
+        if <em>-r</em> was not passed. <em>-d</em> implies <em>-t</em>.\r
+</p>\r
+</dd>\r
+<dt>\r
+-z\r
+</dt>\r
+<dd>\r
+<p>\r
+        \0 line termination on output.\r
+</p>\r
+</dd>\r
+<dt>\r
+--name-only\r
+</dt>\r
+<dt>\r
+--name-status\r
+</dt>\r
+<dd>\r
+<p>\r
+        List only filenames (instead of the "long" output), one per line.\r
+</p>\r
+</dd>\r
+<dt>\r
+paths\r
+</dt>\r
+<dd>\r
+<p>\r
+        When paths are given, show them (note that this isn't really raw\r
+        pathnames, but rather a list of patterns to match).  Otherwise\r
+        implicitly uses the root level of the tree as the sole path argument.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Output Format</h2>\r
+<div class="sectionbody">\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>&lt;mode&gt; SP &lt;type&gt; SP &lt;object&gt; TAB &lt;file&gt;</tt></pre>\r
+</div></div>\r
+<p>When the <tt>-z</tt> option is not used, TAB, LF, and backslash characters\r
+in pathnames are represented as <tt>\t</tt>, <tt>\n</tt>, and <tt>\\</tt>, respectively.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Petr Baudis &lt;pasky@suse.cz&gt;\r
+Completely rewritten from scratch by Junio C Hamano &lt;junkio@cox.net&gt;,\r
+another major rewrite by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list\r
+&lt;git@vger.kernel.org&gt;.</p>\r
+<p>This manual page is a stub. You can help the git documentation by expanding it.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:18 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-ls-tree.txt b/git-ls-tree.txt
new file mode 100644 (file)
index 0000000..b92a8b2
--- /dev/null
@@ -0,0 +1,73 @@
+git-ls-tree(1)
+==============
+
+NAME
+----
+git-ls-tree - Lists the contents of a tree object.
+
+
+SYNOPSIS
+--------
+'git-ls-tree' [-d] [-r] [-t] [-z] [--name-only] [--name-status] <tree-ish> [paths...]
+
+DESCRIPTION
+-----------
+Lists the contents of a given tree object, like what "/bin/ls -a" does
+in the current working directory. Note that the usage is subtly different,
+though - 'paths' denote just a list of patterns to match, e.g. so specifying
+directory name (without '-r') will behave differently, and order of the
+arguments does not matter.
+
+OPTIONS
+-------
+<tree-ish>::
+       Id of a tree-ish.
+
+-d::
+       Show only the named tree entry itself, not its children.
+
+-r::
+       Recurse into sub-trees.
+
+-t::
+       Show tree entries even when going to recurse them. Has no effect
+       if '-r' was not passed. '-d' implies '-t'.
+
+-z::
+       \0 line termination on output.
+
+--name-only::
+--name-status::
+       List only filenames (instead of the "long" output), one per line.
+
+paths::
+       When paths are given, show them (note that this isn't really raw
+       pathnames, but rather a list of patterns to match).  Otherwise
+       implicitly uses the root level of the tree as the sole path argument.
+
+
+Output Format
+-------------
+        <mode> SP <type> SP <object> TAB <file>
+
+When the `-z` option is not used, TAB, LF, and backslash characters
+in pathnames are represented as `\t`, `\n`, and `\\`, respectively.
+
+
+Author
+------
+Written by Petr Baudis <pasky@suse.cz>
+Completely rewritten from scratch by Junio C Hamano <junkio@cox.net>,
+another major rewrite by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list
+<git@vger.kernel.org>.
+
+This manual page is a stub. You can help the git documentation by expanding it.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-mailinfo.html b/git-mailinfo.html
new file mode 100644 (file)
index 0000000..e833a6a
--- /dev/null
@@ -0,0 +1,367 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-mailinfo(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-mailinfo(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-mailinfo -\r
+   Extracts patch from a single e-mail message.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-mailinfo</em> [-k] [-u | --encoding=&lt;encoding&gt;] &lt;msg&gt; &lt;patch&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Reading a single e-mail message from the standard input, and\r
+writes the commit log message in &lt;msg&gt; file, and the patches in\r
+&lt;patch&gt; file.  The author name, e-mail and e-mail subject are\r
+written out to the standard output to be used by git-applypatch\r
+to create a commit.  It is usually not necessary to use this\r
+command directly.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-k\r
+</dt>\r
+<dd>\r
+<p>\r
+        Usually the program <em>cleans up</em> the Subject: header line\r
+        to extract the title line for the commit log message,\r
+        among which (1) remove <em>Re:</em> or <em>re:</em>, (2) leading\r
+        whitespaces, (3) <em>[</em> up to <em>]</em>, typically <em>[PATCH]</em>, and\r
+        then prepends "[PATCH] ".  This flag forbids this\r
+        munging, and is most useful when used to read back <em>git\r
+        format-patch --mbox</em> output.\r
+</p>\r
+</dd>\r
+<dt>\r
+-u\r
+</dt>\r
+<dd>\r
+<p>\r
+        By default, the commit log message, author name and\r
+        author email are taken from the e-mail without any\r
+        charset conversion, after minimally decoding MIME\r
+        transfer encoding.  This flag causes the resulting\r
+        commit to be encoded in the encoding specified by\r
+        i18n.commitencoding configuration (defaults to utf-8) by\r
+        transliterating them.\r
+        Note that the patch is always used as is without charset\r
+        conversion, even with this flag.\r
+</p>\r
+</dd>\r
+<dt>\r
+--encoding=&lt;encoding&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Similar to -u but if the local convention is different\r
+        from what is specified by i18n.commitencoding, this flag\r
+        can be used to override it.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;msg&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The commit log message extracted from e-mail, usually\r
+        except the title line which comes from e-mail Subject.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;patch&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The patch extracted from e-mail.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt; and\r
+Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:18 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-mailinfo.txt b/git-mailinfo.txt
new file mode 100644 (file)
index 0000000..8890754
--- /dev/null
@@ -0,0 +1,72 @@
+git-mailinfo(1)
+===============
+
+NAME
+----
+git-mailinfo - Extracts patch from a single e-mail message.
+
+
+SYNOPSIS
+--------
+'git-mailinfo' [-k] [-u | --encoding=<encoding>] <msg> <patch>
+
+
+DESCRIPTION
+-----------
+Reading a single e-mail message from the standard input, and
+writes the commit log message in <msg> file, and the patches in
+<patch> file.  The author name, e-mail and e-mail subject are
+written out to the standard output to be used by git-applypatch
+to create a commit.  It is usually not necessary to use this
+command directly.
+
+
+OPTIONS
+-------
+-k::
+       Usually the program 'cleans up' the Subject: header line
+       to extract the title line for the commit log message,
+       among which (1) remove 'Re:' or 're:', (2) leading
+       whitespaces, (3) '[' up to ']', typically '[PATCH]', and
+       then prepends "[PATCH] ".  This flag forbids this
+       munging, and is most useful when used to read back 'git
+       format-patch --mbox' output.
+
+-u::
+       By default, the commit log message, author name and
+       author email are taken from the e-mail without any
+       charset conversion, after minimally decoding MIME
+       transfer encoding.  This flag causes the resulting
+       commit to be encoded in the encoding specified by
+       i18n.commitencoding configuration (defaults to utf-8) by
+       transliterating them. 
+       Note that the patch is always used as is without charset
+       conversion, even with this flag.
+
+--encoding=<encoding>::
+       Similar to -u but if the local convention is different
+       from what is specified by i18n.commitencoding, this flag
+       can be used to override it.
+
+<msg>::
+       The commit log message extracted from e-mail, usually
+       except the title line which comes from e-mail Subject.
+
+<patch>::
+       The patch extracted from e-mail.
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org> and
+Junio C Hamano <junkio@cox.net>
+
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-mailsplit.html b/git-mailsplit.html
new file mode 100644 (file)
index 0000000..22a8ae3
--- /dev/null
@@ -0,0 +1,351 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-mailsplit(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-mailsplit(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-mailsplit -\r
+   Totally braindamaged mbox splitter program.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-mailsplit</em> [-b] [-f&lt;nn&gt;] [-d&lt;prec&gt;] -o&lt;directory&gt; [--] [&lt;mbox&gt;&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Splits a mbox file into a list of files: "0001" "0002" ..  in the specified\r
+directory so you can process them further from there.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;mbox&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Mbox file to split.  If not given, the mbox is read from\r
+        the standard input.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;directory&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Directory in which to place the individual messages.\r
+</p>\r
+</dd>\r
+<dt>\r
+-b\r
+</dt>\r
+<dd>\r
+<p>\r
+        If any file doesn't begin with a From line, assume it is a\r
+        single mail message instead of signalling error.\r
+</p>\r
+</dd>\r
+<dt>\r
+-d&lt;prec&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of the default 4 digits with leading zeros,\r
+        different precision can be specified for the generated\r
+        filenames.\r
+</p>\r
+</dd>\r
+<dt>\r
+-f&lt;nn&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Skip the first &lt;nn&gt; numbers, for example if -f3 is specified,\r
+        start the numbering with 0004.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;\r
+and Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:19 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-mailsplit.txt b/git-mailsplit.txt
new file mode 100644 (file)
index 0000000..e0703e9
--- /dev/null
@@ -0,0 +1,52 @@
+git-mailsplit(1)
+================
+
+NAME
+----
+git-mailsplit - Totally braindamaged mbox splitter program.
+
+SYNOPSIS
+--------
+'git-mailsplit' [-b] [-f<nn>] [-d<prec>] -o<directory> [--] [<mbox>...]
+
+DESCRIPTION
+-----------
+Splits a mbox file into a list of files: "0001" "0002" ..  in the specified
+directory so you can process them further from there.
+
+OPTIONS
+-------
+<mbox>::
+       Mbox file to split.  If not given, the mbox is read from
+       the standard input.
+
+<directory>::
+       Directory in which to place the individual messages.
+
+-b::
+       If any file doesn't begin with a From line, assume it is a
+       single mail message instead of signalling error.
+
+-d<prec>::
+       Instead of the default 4 digits with leading zeros,
+       different precision can be specified for the generated
+       filenames.
+
+-f<nn>::
+       Skip the first <nn> numbers, for example if -f3 is specified,
+       start the numbering with 0004.
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+and Junio C Hamano <junkio@cox.net>
+
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-merge-base.html b/git-merge-base.html
new file mode 100644 (file)
index 0000000..e18bd4d
--- /dev/null
@@ -0,0 +1,302 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-merge-base(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-merge-base(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-merge-base -\r
+   Finds as good a common ancestor as possible for a merge\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-merge-base</em> &lt;commit&gt; &lt;commit&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>"git-merge-base" finds as good a common ancestor as possible. Given a\r
+selection of equally good common ancestors it should not be relied on\r
+to decide in any particular way.</p>\r
+<p>The "git-merge-base" algorithm is still in flux - use the source&#8230;</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:20 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-merge-base.txt b/git-merge-base.txt
new file mode 100644 (file)
index 0000000..d1d56f1
--- /dev/null
@@ -0,0 +1,33 @@
+git-merge-base(1)
+=================
+
+NAME
+----
+git-merge-base - Finds as good a common ancestor as possible for a merge
+
+
+SYNOPSIS
+--------
+'git-merge-base' <commit> <commit>
+
+DESCRIPTION
+-----------
+"git-merge-base" finds as good a common ancestor as possible. Given a
+selection of equally good common ancestors it should not be relied on
+to decide in any particular way.
+
+The "git-merge-base" algorithm is still in flux - use the source...
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-merge-index.html b/git-merge-index.html
new file mode 100644 (file)
index 0000000..28b50e4
--- /dev/null
@@ -0,0 +1,379 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-merge-index(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-merge-index(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-merge-index -\r
+   Runs a merge for files needing merging\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-merge-index</em> [-o] [-q] &lt;merge-program&gt; (-a | &#8212; | &lt;file&gt;*)</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>This looks up the &lt;file&gt;(s) in the index and, if there are any merge\r
+entries, passes the SHA1 hash for those files as arguments 1, 2, 3 (empty\r
+argument if no file), and &lt;file&gt; as argument 4.  File modes for the three\r
+files are passed as arguments 5, 6 and 7.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&#8212;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not interpret any more arguments as options.\r
+</p>\r
+</dd>\r
+<dt>\r
+-a\r
+</dt>\r
+<dd>\r
+<p>\r
+        Run merge against all files in the index that need merging.\r
+</p>\r
+</dd>\r
+<dt>\r
+-o\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of stopping at the first failed merge, do all of them\r
+        in one shot - continue with merging even when previous merges\r
+        returned errors, and only return the error code after all the\r
+        merges are over.\r
+</p>\r
+</dd>\r
+<dt>\r
+-q\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not complain about failed merge program (the merge program\r
+        failure usually indicates conflicts during merge). This is for\r
+        porcelains which might want to emit custom messages.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>If "git-merge-index" is called with multiple &lt;file&gt;s (or -a) then it\r
+processes them in turn only stopping if merge returns a non-zero exit\r
+code.</p>\r
+<p>Typically this is run with the a script calling the merge command from\r
+the RCS package.</p>\r
+<p>A sample script called "git-merge-one-file" is included in the\r
+distribution.</p>\r
+<p>ALERT ALERT ALERT! The git "merge object order" is different from the\r
+RCS "merge" program merge object order. In the above ordering, the\r
+original is first. But the argument order to the 3-way merge program\r
+"merge" is to have the original in the middle. Don't ask me why.</p>\r
+<p>Examples:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>torvalds@ppc970:~/merge-test&gt; git-merge-index cat MM\r
+This is MM from the original tree.                    # original\r
+This is modified MM in the branch A.                  # merge1\r
+This is modified MM in the branch B.                  # merge2\r
+This is modified MM in the branch B.                  # current contents</tt></pre>\r
+</div></div>\r
+<p>or</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>torvalds@ppc970:~/merge-test&gt; git-merge-index cat AA MM\r
+cat: : No such file or directory\r
+This is added AA in the branch A.\r
+This is added AA in the branch B.\r
+This is added AA in the branch B.\r
+fatal: merge program failed</tt></pre>\r
+</div></div>\r
+<p>where the latter example shows how "git-merge-index" will stop trying to\r
+merge once anything has returned an error (ie "cat" returned an error\r
+for the AA file, because it didn't exist in the original, and thus\r
+"git-merge-index" didn't even try to merge the MM thing).</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;\r
+One-shot merge by Petr Baudis &lt;pasky@ucw.cz&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:20 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-merge-index.txt b/git-merge-index.txt
new file mode 100644 (file)
index 0000000..fbc986a
--- /dev/null
@@ -0,0 +1,88 @@
+git-merge-index(1)
+==================
+
+NAME
+----
+git-merge-index - Runs a merge for files needing merging
+
+
+SYNOPSIS
+--------
+'git-merge-index' [-o] [-q] <merge-program> (-a | -- | <file>\*)
+
+DESCRIPTION
+-----------
+This looks up the <file>(s) in the index and, if there are any merge
+entries, passes the SHA1 hash for those files as arguments 1, 2, 3 (empty
+argument if no file), and <file> as argument 4.  File modes for the three
+files are passed as arguments 5, 6 and 7.
+
+OPTIONS
+-------
+--::
+       Do not interpret any more arguments as options.
+
+-a::
+       Run merge against all files in the index that need merging.
+
+-o::
+       Instead of stopping at the first failed merge, do all of them
+       in one shot - continue with merging even when previous merges
+       returned errors, and only return the error code after all the
+       merges are over.
+
+-q::
+       Do not complain about failed merge program (the merge program
+       failure usually indicates conflicts during merge). This is for
+       porcelains which might want to emit custom messages.
+
+If "git-merge-index" is called with multiple <file>s (or -a) then it
+processes them in turn only stopping if merge returns a non-zero exit
+code.
+
+Typically this is run with the a script calling the merge command from
+the RCS package.
+
+A sample script called "git-merge-one-file" is included in the
+distribution.
+
+ALERT ALERT ALERT! The git "merge object order" is different from the
+RCS "merge" program merge object order. In the above ordering, the
+original is first. But the argument order to the 3-way merge program
+"merge" is to have the original in the middle. Don't ask me why.
+
+Examples:
+
+  torvalds@ppc970:~/merge-test> git-merge-index cat MM
+  This is MM from the original tree.                   # original
+  This is modified MM in the branch A.                 # merge1
+  This is modified MM in the branch B.                 # merge2
+  This is modified MM in the branch B.                 # current contents
+
+or 
+
+  torvalds@ppc970:~/merge-test> git-merge-index cat AA MM
+  cat: : No such file or directory
+  This is added AA in the branch A.
+  This is added AA in the branch B.
+  This is added AA in the branch B.
+  fatal: merge program failed
+
+where the latter example shows how "git-merge-index" will stop trying to
+merge once anything has returned an error (ie "cat" returned an error
+for the AA file, because it didn't exist in the original, and thus
+"git-merge-index" didn't even try to merge the MM thing).
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+One-shot merge by Petr Baudis <pasky@ucw.cz>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-merge-one-file.html b/git-merge-one-file.html
new file mode 100644 (file)
index 0000000..163097d
--- /dev/null
@@ -0,0 +1,301 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-merge-one-file(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-merge-one-file(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-merge-one-file -\r
+   The standard helper program to use with "git-merge-index"\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-merge-one-file</em></p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>This is the standard helper program to use with "git-merge-index"\r
+to resolve a merge after the trivial merge done with "git-read-tree -m".</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;,\r
+Junio C Hamano &lt;junkio@cox.net&gt; and Petr Baudis &lt;pasky@suse.cz&gt;.</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:21 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-merge-one-file.txt b/git-merge-one-file.txt
new file mode 100644 (file)
index 0000000..86aad37
--- /dev/null
@@ -0,0 +1,30 @@
+git-merge-one-file(1)
+=====================
+
+NAME
+----
+git-merge-one-file - The standard helper program to use with "git-merge-index"
+
+
+SYNOPSIS
+--------
+'git-merge-one-file'
+
+DESCRIPTION
+-----------
+This is the standard helper program to use with "git-merge-index"
+to resolve a merge after the trivial merge done with "git-read-tree -m".
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>,
+Junio C Hamano <junkio@cox.net> and Petr Baudis <pasky@suse.cz>.
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-merge.html b/git-merge.html
new file mode 100644 (file)
index 0000000..2311b9e
--- /dev/null
@@ -0,0 +1,560 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-merge(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-merge(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-merge -\r
+   Grand Unified Merge Driver\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-merge</em> [-n] [--no-commit] [-s &lt;strategy&gt;]&#8230; &lt;msg&gt; &lt;head&gt; &lt;remote&gt; &lt;remote&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>This is the top-level user interface to the merge machinery\r
+which drives multiple merge strategy scripts.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-n, --no-summary\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not show diffstat at the end of the merge.\r
+</p>\r
+</dd>\r
+<dt>\r
+--no-commit\r
+</dt>\r
+<dd>\r
+<p>\r
+        Perform the merge but pretend the merge failed and do\r
+        not autocommit, to give the user a chance to inspect and\r
+        further tweak the merge result before committing.\r
+</p>\r
+</dd>\r
+<dt>\r
+-s &lt;strategy&gt;, --strategy=&lt;strategy&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Use the given merge strategy; can be supplied more than\r
+        once to specify them in the order they should be tried.\r
+        If there is no <tt>-s</tt> option, a built-in list of strategies\r
+        is used instead (<tt>git-merge-recursive</tt> when merging a single\r
+        head, <tt>git-merge-octopus</tt> otherwise).\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;msg&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The commit message to be used for the merge commit (in case\r
+        it is created). The <tt>git-fmt-merge-msg</tt> script can be used\r
+        to give a good default for automated <tt>git-merge</tt> invocations.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;head&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        our branch head commit.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;remote&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        other branch head merged into our branch.  You need at\r
+        least one &lt;remote&gt;.  Specifying more than one &lt;remote&gt;\r
+        obviously means you are trying an Octopus.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>MERGE STRATEGIES</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+resolve\r
+</dt>\r
+<dd>\r
+<p>\r
+        This can only resolve two heads (i.e. the current branch\r
+        and another branch you pulled from) using 3-way merge\r
+        algorithm.  It tries to carefully detect criss-cross\r
+        merge ambiguities and is considered generally safe and\r
+        fast.\r
+</p>\r
+</dd>\r
+<dt>\r
+recursive\r
+</dt>\r
+<dd>\r
+<p>\r
+        This can only resolve two heads using 3-way merge\r
+        algorithm.  When there are more than one common\r
+        ancestors that can be used for 3-way merge, it creates a\r
+        merged tree of the common ancestors and uses that as\r
+        the reference tree for the 3-way merge.  This has been\r
+        reported to result in fewer merge conflicts without\r
+        causing mis-merges by tests done on actual merge commits\r
+        taken from Linux 2.6 kernel development history.\r
+        Additionally this can detect and handle merges involving\r
+        renames.  This is the default merge strategy when\r
+        pulling or merging one branch.\r
+</p>\r
+</dd>\r
+<dt>\r
+octopus\r
+</dt>\r
+<dd>\r
+<p>\r
+        This resolves more than two-head case, but refuses to do\r
+        complex merge that needs manual resolution.  It is\r
+        primarily meant to be used for bundling topic branch\r
+        heads together.  This is the default merge strategy when\r
+        pulling or merging more than one branches.\r
+</p>\r
+</dd>\r
+<dt>\r
+ours\r
+</dt>\r
+<dd>\r
+<p>\r
+        This resolves any number of heads, but the result of the\r
+        merge is always the current branch head.  It is meant to\r
+        be used to supersede old development history of side\r
+        branches.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>If you tried a merge which resulted in a complex conflicts and\r
+would want to start over, you can recover with\r
+<a href="git-reset.html">git-reset(1)</a>.</p>\r
+</div>\r
+<h2>HOW MERGE WORKS</h2>\r
+<div class="sectionbody">\r
+<p>A merge is always between the current <tt>HEAD</tt> and one or more\r
+remote branch heads, and the index file must exactly match the\r
+tree of <tt>HEAD</tt> commit (i.e. the contents of the last commit) when\r
+it happens.  In other words, <tt>git-diff --cached HEAD</tt> must\r
+report no changes.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">This is a bit of lie.  In certain special cases, your index are\r
+allowed to be different from the tree of <tt>HEAD</tt> commit.  The most\r
+notable case is when your <tt>HEAD</tt> commit is already ahead of what\r
+is being merged, in which case your index can have arbitrary\r
+difference from your <tt>HEAD</tt> commit.  Otherwise, your index entries\r
+are allowed have differences from your <tt>HEAD</tt> commit that match\r
+the result of trivial merge (e.g. you received the same patch\r
+from external source to produce the same result as what you are\r
+merging).  For example, if a path did not exist in the common\r
+ancestor and your head commit but exists in the tree you are\r
+merging into your repository, and if you already happen to have\r
+that path exactly in your index, the merge does not have to\r
+fail.</td>\r
+</tr></table>\r
+</div>\r
+<p>Otherwise, merge will refuse to do any harm to your repository\r
+(that is, it may fetch the objects from remote, and it may even\r
+update the local branch used to keep track of the remote branch\r
+with <tt>git pull remote rbranch:lbranch</tt>, but your working tree,\r
+<tt>.git/HEAD</tt> pointer and index file are left intact).</p>\r
+<p>You may have local modifications in the working tree files.  In\r
+other words, <tt>git-diff</tt> is allowed to report changes.\r
+However, the merge uses your working tree as the working area,\r
+and in order to prevent the merge operation from losing such\r
+changes, it makes sure that they do not interfere with the\r
+merge. Those complex tables in read-tree documentation define\r
+what it means for a path to "interfere with the merge".  And if\r
+your local modifications interfere with the merge, again, it\r
+stops before touching anything.</p>\r
+<p>So in the above two "failed merge" case, you do not have to\r
+worry about lossage of data --- you simply were not ready to do\r
+a merge, so no merge happened at all.  You may want to finish\r
+whatever you were in the middle of doing, and retry the same\r
+pull after you are done and ready.</p>\r
+<p>When things cleanly merge, these things happen:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+the results are updated both in the index file and in your\r
+   working tree,\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+index file is written out as a tree,\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+the tree gets committed, and\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+the <tt>HEAD</tt> pointer gets advanced.\r
+</p>\r
+</li>\r
+</ol>\r
+<p>Because of 2., we require that the original state of the index\r
+file to match exactly the current <tt>HEAD</tt> commit; otherwise we\r
+will write out your local changes already registered in your\r
+index file along with the merge result, which is not good.\r
+Because 1. involves only the paths different between your\r
+branch and the remote branch you are pulling from during the\r
+merge (which is typically a fraction of the whole tree), you can\r
+have local modifications in your working tree as long as they do\r
+not overlap with what the merge updates.</p>\r
+<p>When there are conflicts, these things happen:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+<tt>HEAD</tt> stays the same.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Cleanly merged paths are updated both in the index file and\r
+   in your working tree.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+For conflicting paths, the index file records up to three\r
+   versions; stage1 stores the version from the common ancestor,\r
+   stage2 from <tt>HEAD</tt>, and stage3 from the remote branch (you\r
+   can inspect the stages with <tt>git-ls-files -u</tt>).  The working\r
+   tree files have the result of "merge" program; i.e. 3-way\r
+   merge result with familiar conflict markers <tt>&lt;&lt;&lt; === &gt;&gt;&gt;</tt>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+No other changes are done.  In particular, the local\r
+   modifications you had before you started merge will stay the\r
+   same and the index entries for them stay as they were,\r
+   i.e. matching <tt>HEAD</tt>.\r
+</p>\r
+</li>\r
+</ol>\r
+<p>After seeing a conflict, you can do two things:</p>\r
+<ul>\r
+<li>\r
+<p>\r
+Decide not to merge.  The only clean-up you need are to reset\r
+   the index file to the <tt>HEAD</tt> commit to reverse 2. and to clean\r
+   up working tree changes made by 2. and 3.; <tt>git-reset</tt> can\r
+   be used for this.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Resolve the conflicts.  <tt>git-diff</tt> would report only the\r
+   conflicting paths because of the above 2. and 3..  Edit the\r
+   working tree files into a desirable shape, <tt>git-update-index</tt>\r
+   them, to make the index file contain what the merge result\r
+   should be, and run <tt>git-commit</tt> to commit the result.\r
+</p>\r
+</li>\r
+</ul>\r
+</div>\r
+<h2>SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-fmt-merge-msg.html">git-fmt-merge-msg(1)</a>, <a href="git-pull.html">git-pull(1)</a></p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:22 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-merge.txt b/git-merge.txt
new file mode 100644 (file)
index 0000000..4ce799b
--- /dev/null
@@ -0,0 +1,158 @@
+git-merge(1)
+============
+
+NAME
+----
+git-merge - Grand Unified Merge Driver
+
+
+SYNOPSIS
+--------
+'git-merge' [-n] [--no-commit] [-s <strategy>]... <msg> <head> <remote> <remote>...
+
+
+DESCRIPTION
+-----------
+This is the top-level user interface to the merge machinery
+which drives multiple merge strategy scripts.
+
+
+OPTIONS
+-------
+include::merge-options.txt[]
+
+<msg>::
+       The commit message to be used for the merge commit (in case
+       it is created). The `git-fmt-merge-msg` script can be used
+       to give a good default for automated `git-merge` invocations.
+
+<head>::
+       our branch head commit.
+
+<remote>::
+       other branch head merged into our branch.  You need at
+       least one <remote>.  Specifying more than one <remote>
+       obviously means you are trying an Octopus.
+
+include::merge-strategies.txt[]
+
+
+If you tried a merge which resulted in a complex conflicts and
+would want to start over, you can recover with
+gitlink:git-reset[1].
+
+
+HOW MERGE WORKS
+---------------
+
+A merge is always between the current `HEAD` and one or more
+remote branch heads, and the index file must exactly match the
+tree of `HEAD` commit (i.e. the contents of the last commit) when
+it happens.  In other words, `git-diff --cached HEAD` must
+report no changes.
+
+[NOTE]
+This is a bit of lie.  In certain special cases, your index are
+allowed to be different from the tree of `HEAD` commit.  The most
+notable case is when your `HEAD` commit is already ahead of what
+is being merged, in which case your index can have arbitrary
+difference from your `HEAD` commit.  Otherwise, your index entries
+are allowed have differences from your `HEAD` commit that match
+the result of trivial merge (e.g. you received the same patch
+from external source to produce the same result as what you are
+merging).  For example, if a path did not exist in the common
+ancestor and your head commit but exists in the tree you are
+merging into your repository, and if you already happen to have
+that path exactly in your index, the merge does not have to
+fail.
+
+Otherwise, merge will refuse to do any harm to your repository
+(that is, it may fetch the objects from remote, and it may even
+update the local branch used to keep track of the remote branch
+with `git pull remote rbranch:lbranch`, but your working tree,
+`.git/HEAD` pointer and index file are left intact).
+
+You may have local modifications in the working tree files.  In
+other words, `git-diff` is allowed to report changes.
+However, the merge uses your working tree as the working area,
+and in order to prevent the merge operation from losing such
+changes, it makes sure that they do not interfere with the
+merge. Those complex tables in read-tree documentation define
+what it means for a path to "interfere with the merge".  And if
+your local modifications interfere with the merge, again, it
+stops before touching anything.
+
+So in the above two "failed merge" case, you do not have to
+worry about lossage of data --- you simply were not ready to do
+a merge, so no merge happened at all.  You may want to finish
+whatever you were in the middle of doing, and retry the same
+pull after you are done and ready.
+
+When things cleanly merge, these things happen:
+
+1. the results are updated both in the index file and in your
+   working tree,
+2. index file is written out as a tree,
+3. the tree gets committed, and 
+4. the `HEAD` pointer gets advanced.
+
+Because of 2., we require that the original state of the index
+file to match exactly the current `HEAD` commit; otherwise we
+will write out your local changes already registered in your
+index file along with the merge result, which is not good.
+Because 1. involves only the paths different between your
+branch and the remote branch you are pulling from during the
+merge (which is typically a fraction of the whole tree), you can
+have local modifications in your working tree as long as they do
+not overlap with what the merge updates.
+
+When there are conflicts, these things happen:
+
+1. `HEAD` stays the same.
+
+2. Cleanly merged paths are updated both in the index file and
+   in your working tree.
+
+3. For conflicting paths, the index file records up to three
+   versions; stage1 stores the version from the common ancestor,
+   stage2 from `HEAD`, and stage3 from the remote branch (you
+   can inspect the stages with `git-ls-files -u`).  The working
+   tree files have the result of "merge" program; i.e. 3-way
+   merge result with familiar conflict markers `<<< === >>>`.
+
+4. No other changes are done.  In particular, the local
+   modifications you had before you started merge will stay the
+   same and the index entries for them stay as they were,
+   i.e. matching `HEAD`.
+
+After seeing a conflict, you can do two things:
+
+ * Decide not to merge.  The only clean-up you need are to reset
+   the index file to the `HEAD` commit to reverse 2. and to clean
+   up working tree changes made by 2. and 3.; `git-reset` can
+   be used for this.
+
+ * Resolve the conflicts.  `git-diff` would report only the
+   conflicting paths because of the above 2. and 3..  Edit the
+   working tree files into a desirable shape, `git-update-index`
+   them, to make the index file contain what the merge result
+   should be, and run `git-commit` to commit the result.
+
+
+SEE ALSO
+--------
+gitlink:git-fmt-merge-msg[1], gitlink:git-pull[1]
+
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-mktag.html b/git-mktag.html
new file mode 100644 (file)
index 0000000..1c74e30
--- /dev/null
@@ -0,0 +1,316 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-mktag(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-mktag(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-mktag -\r
+   Creates a tag object\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-mktag</em> &lt; signature_file</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Reads a tag contents on standard input and creates a tag object\r
+that can also be used to sign other objects.</p>\r
+<p>The output is the new tag's &lt;object&gt; identifier.</p>\r
+</div>\r
+<h2>Tag Format</h2>\r
+<div class="sectionbody">\r
+<p>A tag signature file has a very simple fixed format: three lines of</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>object &lt;sha1&gt;\r
+type &lt;typename&gt;\r
+tag &lt;tagname&gt;</tt></pre>\r
+</div></div>\r
+<p>followed by some <em>optional</em> free-form signature that git itself\r
+doesn't care about, but that can be verified with gpg or similar.</p>\r
+<p>The size of the full object is artificially limited to 8kB.  (Just\r
+because I'm a lazy bastard, and if you can't fit a signature in that\r
+size, you're doing something wrong)</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:22 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-mktag.txt b/git-mktag.txt
new file mode 100644 (file)
index 0000000..2860a3d
--- /dev/null
@@ -0,0 +1,47 @@
+git-mktag(1)
+============
+
+NAME
+----
+git-mktag - Creates a tag object
+
+
+SYNOPSIS
+--------
+'git-mktag' < signature_file
+
+DESCRIPTION
+-----------
+Reads a tag contents on standard input and creates a tag object
+that can also be used to sign other objects.
+
+The output is the new tag's <object> identifier.
+
+Tag Format
+----------
+A tag signature file has a very simple fixed format: three lines of
+
+  object <sha1>
+  type <typename>
+  tag <tagname>
+
+followed by some 'optional' free-form signature that git itself
+doesn't care about, but that can be verified with gpg or similar.
+
+The size of the full object is artificially limited to 8kB.  (Just
+because I'm a lazy bastard, and if you can't fit a signature in that
+size, you're doing something wrong)
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-mv.html b/git-mv.html
new file mode 100644 (file)
index 0000000..45b152d
--- /dev/null
@@ -0,0 +1,344 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-mv(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-mv(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-mv -\r
+   Script used to move or rename a file, directory or symlink.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-mv</em> &lt;options&gt;&#8230; &lt;args&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>This script is used to move or rename a file, directory or symlink.</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-mv [-f] [-n] &lt;source&gt; &lt;destination&gt;\r
+git-mv [-f] [-n] [-k] &lt;source&gt; ... &lt;destination directory&gt;</tt></pre>\r
+</div></div>\r
+<p>In the first form, it renames &lt;source&gt;, which must exist and be either\r
+a file, symlink or directory, to &lt;destination&gt;.\r
+In the second form, the last argument has to be an existing\r
+directory; the given sources will be moved into this directory.</p>\r
+<p>The index is updated after successful completion, but the change must still be\r
+committed.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-f\r
+</dt>\r
+<dd>\r
+<p>\r
+        Force renaming or moving of a file even if the target exists\r
+</p>\r
+</dd>\r
+<dt>\r
+-k\r
+</dt>\r
+<dd>\r
+<p>\r
+        Skip move or rename actions which would lead to an error\r
+        condition. An error happens when a source is neither existing nor\r
+        controlled by GIT, or when it would overwrite an existing\r
+        file unless <em>-f</em> is given.\r
+</p>\r
+</dd>\r
+<dt>\r
+-n\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do nothing; only show what would happen\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;\r
+Rewritten by Ryan Anderson &lt;ryan@michonline.com&gt;\r
+Move functionality added by Josef Weidendorfer &lt;Josef.Weidendorfer@gmx.de&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:23 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-mv.txt b/git-mv.txt
new file mode 100644 (file)
index 0000000..d242b39
--- /dev/null
@@ -0,0 +1,54 @@
+git-mv(1)
+=========
+
+NAME
+----
+git-mv - Script used to move or rename a file, directory or symlink.
+
+
+SYNOPSIS
+--------
+'git-mv' <options>... <args>...
+
+DESCRIPTION
+-----------
+This script is used to move or rename a file, directory or symlink.
+
+ git-mv [-f] [-n] <source> <destination>
+ git-mv [-f] [-n] [-k] <source> ... <destination directory>
+
+In the first form, it renames <source>, which must exist and be either
+a file, symlink or directory, to <destination>.
+In the second form, the last argument has to be an existing
+directory; the given sources will be moved into this directory.
+
+The index is updated after successful completion, but the change must still be
+committed.
+
+OPTIONS
+-------
+-f::
+       Force renaming or moving of a file even if the target exists
+-k::
+        Skip move or rename actions which would lead to an error
+       condition. An error happens when a source is neither existing nor
+        controlled by GIT, or when it would overwrite an existing
+        file unless '-f' is given.
+-n::
+       Do nothing; only show what would happen
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+Rewritten by Ryan Anderson <ryan@michonline.com>
+Move functionality added by Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-name-rev.html b/git-name-rev.html
new file mode 100644 (file)
index 0000000..d67b08e
--- /dev/null
@@ -0,0 +1,348 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-name-rev(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-name-rev(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-name-rev -\r
+   Find symbolic names for given revs.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-name-rev</em> [--tags] ( --all | --stdin | &lt;commitish&gt;&#8230; )</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Finds symbolic names suitable for human digestion for revisions given in any\r
+format parsable by git-rev-parse.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--tags\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not use branch names, but only tags to name the commits\r
+</p>\r
+</dd>\r
+<dt>\r
+--all\r
+</dt>\r
+<dd>\r
+<p>\r
+        List all commits reachable from all refs\r
+</p>\r
+</dd>\r
+<dt>\r
+--stdin\r
+</dt>\r
+<dd>\r
+<p>\r
+        Read from stdin, append "(&lt;rev_name&gt;)" to all sha1's of name'able\r
+        commits, and pass to stdout\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>EXAMPLE</h2>\r
+<div class="sectionbody">\r
+<p>Given a commit, find out where it is relative to the local refs. Say somebody\r
+wrote you about that phantastic commit 33db5f4d9027a10e477ccf054b2c1ab94f74c85a.\r
+Of course, you look into the commit, but that only tells you what happened, but\r
+not the context.</p>\r
+<p>Enter git-name-rev:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>% git name-rev 33db5f4d9027a10e477ccf054b2c1ab94f74c85a</tt></pre>\r
+</div></div>\r
+<p>Now you are wiser, because you know that it happened 940 revisions before v0.99.</p>\r
+<p>Another nice thing you can do is:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>% git log | git name-rev --stdin</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Johannes Schindelin &lt;Johannes.Schindelin@gmx.de&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Johannes Schindelin.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:24 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-name-rev.txt b/git-name-rev.txt
new file mode 100644 (file)
index 0000000..e37b0b8
--- /dev/null
@@ -0,0 +1,66 @@
+git-name-rev(1)
+===============
+
+NAME
+----
+git-name-rev - Find symbolic names for given revs.
+
+
+SYNOPSIS
+--------
+'git-name-rev' [--tags] ( --all | --stdin | <commitish>... )
+
+DESCRIPTION
+-----------
+Finds symbolic names suitable for human digestion for revisions given in any
+format parsable by git-rev-parse.
+
+
+OPTIONS
+-------
+
+--tags::
+       Do not use branch names, but only tags to name the commits
+
+--all::
+       List all commits reachable from all refs
+
+--stdin::
+       Read from stdin, append "(<rev_name>)" to all sha1's of name'able
+       commits, and pass to stdout
+
+EXAMPLE
+-------
+
+Given a commit, find out where it is relative to the local refs. Say somebody
+wrote you about that phantastic commit 33db5f4d9027a10e477ccf054b2c1ab94f74c85a.
+Of course, you look into the commit, but that only tells you what happened, but
+not the context.
+
+Enter git-name-rev:
+
+------------
+% git name-rev 33db5f4d9027a10e477ccf054b2c1ab94f74c85a
+------------
+
+Now you are wiser, because you know that it happened 940 revisions before v0.99.
+
+Another nice thing you can do is:
+
+------------
+% git log | git name-rev --stdin
+------------
+
+
+Author
+------
+Written by Johannes Schindelin <Johannes.Schindelin@gmx.de>
+
+Documentation
+--------------
+Documentation by Johannes Schindelin.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-pack-objects.html b/git-pack-objects.html
new file mode 100644 (file)
index 0000000..32ff5f6
--- /dev/null
@@ -0,0 +1,392 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-pack-objects(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-pack-objects(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-pack-objects -\r
+   Create a packed archive of objects.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-pack-objects</em> [--non-empty] [--local] [--incremental] [--window=N] [--depth=N] {--stdout | base-name} &lt; object-list</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Reads list of objects from the standard input, and writes a packed\r
+archive with specified base-name, or to the standard output.</p>\r
+<p>A packed archive is an efficient way to transfer set of objects\r
+between two repositories, and also is an archival format which\r
+is efficient to access.  The packed archive format (.pack) is\r
+designed to be unpackable without having anything else, but for\r
+random access, accompanied with the pack index file (.idx).</p>\r
+<p><em>git-unpack-objects</em> command can read the packed archive and\r
+expand the objects contained in the pack into "one-file\r
+one-object" format; this is typically done by the smart-pull\r
+commands when a pack is created on-the-fly for efficient network\r
+transport by their peers.</p>\r
+<p>Placing both in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or\r
+any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES)\r
+enables git to read from such an archive.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+base-name\r
+</dt>\r
+<dd>\r
+<p>\r
+        Write into a pair of files (.pack and .idx), using\r
+        &lt;base-name&gt; to determine the name of the created file.\r
+        When this option is used, the two files are written in\r
+        &lt;base-name&gt;-&lt;SHA1&gt;.{pack,idx} files.  &lt;SHA1&gt; is a hash\r
+        of object names (currently in random order so it does\r
+        not have any useful meaning) to make the resulting\r
+        filename reasonably unique, and written to the standard\r
+        output of the command.\r
+</p>\r
+</dd>\r
+<dt>\r
+--stdout\r
+</dt>\r
+<dd>\r
+<p>\r
+        Write the pack contents (what would have been writtin to\r
+        .pack file) out to the standard output.\r
+</p>\r
+</dd>\r
+<dt>\r
+--window and --depth\r
+</dt>\r
+<dd>\r
+<p>\r
+        These two options affects how the objects contained in\r
+        the pack are stored using delta compression.  The\r
+        objects are first internally sorted by type, size and\r
+        optionally names and compared against the other objects\r
+        within --window to see if using delta compression saves\r
+        space.  --depth limits the maximum delta depth; making\r
+        it too deep affects the performance on the unpacker\r
+        side, because delta data needs to be applied that many\r
+        times to get to the necessary object.\r
+</p>\r
+</dd>\r
+<dt>\r
+--incremental\r
+</dt>\r
+<dd>\r
+<p>\r
+        This flag causes an object already in a pack ignored\r
+        even if it appears in the standard input.\r
+</p>\r
+</dd>\r
+<dt>\r
+--local\r
+</dt>\r
+<dd>\r
+<p>\r
+        This flag is similar to <tt>--incremental</tt>; instead of\r
+        ignoring all packed objects, it only ignores objects\r
+        that are packed and not in the local object store\r
+        (i.e. borrowed from an alternate).\r
+</p>\r
+</dd>\r
+<dt>\r
+--non-empty\r
+</dt>\r
+<dd>\r
+<p>\r
+        Only create a packed archive if it would contain at\r
+        least one object.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano</p>\r
+</div>\r
+<h2>See-Also</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-repack.html">git-repack(1)</a>\r
+<a href="git-prune-packed.html">git-prune-packed(1)</a></p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:24 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-pack-objects.txt b/git-pack-objects.txt
new file mode 100644 (file)
index 0000000..009ec5a
--- /dev/null
@@ -0,0 +1,93 @@
+git-pack-objects(1)
+===================
+
+NAME
+----
+git-pack-objects - Create a packed archive of objects.
+
+
+SYNOPSIS
+--------
+'git-pack-objects' [--non-empty] [--local] [--incremental] [--window=N] [--depth=N] {--stdout | base-name} < object-list
+
+
+DESCRIPTION
+-----------
+Reads list of objects from the standard input, and writes a packed
+archive with specified base-name, or to the standard output.
+
+A packed archive is an efficient way to transfer set of objects
+between two repositories, and also is an archival format which
+is efficient to access.  The packed archive format (.pack) is
+designed to be unpackable without having anything else, but for
+random access, accompanied with the pack index file (.idx).
+
+'git-unpack-objects' command can read the packed archive and
+expand the objects contained in the pack into "one-file
+one-object" format; this is typically done by the smart-pull
+commands when a pack is created on-the-fly for efficient network
+transport by their peers.
+
+Placing both in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or
+any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES)
+enables git to read from such an archive.
+
+
+OPTIONS
+-------
+base-name::
+       Write into a pair of files (.pack and .idx), using
+       <base-name> to determine the name of the created file.
+       When this option is used, the two files are written in
+       <base-name>-<SHA1>.{pack,idx} files.  <SHA1> is a hash
+       of object names (currently in random order so it does
+       not have any useful meaning) to make the resulting
+       filename reasonably unique, and written to the standard
+       output of the command.
+
+--stdout::
+       Write the pack contents (what would have been writtin to
+       .pack file) out to the standard output.
+
+--window and --depth::
+       These two options affects how the objects contained in
+       the pack are stored using delta compression.  The
+       objects are first internally sorted by type, size and
+       optionally names and compared against the other objects
+       within --window to see if using delta compression saves
+       space.  --depth limits the maximum delta depth; making
+       it too deep affects the performance on the unpacker
+       side, because delta data needs to be applied that many
+       times to get to the necessary object.
+
+--incremental::
+       This flag causes an object already in a pack ignored
+       even if it appears in the standard input.
+
+--local::
+       This flag is similar to `--incremental`; instead of
+       ignoring all packed objects, it only ignores objects
+       that are packed and not in the local object store
+       (i.e. borrowed from an alternate).
+
+--non-empty::
+        Only create a packed archive if it would contain at
+        least one object.
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+-------------
+Documentation by Junio C Hamano
+
+See-Also
+--------
+gitlink:git-repack[1]
+gitlink:git-prune-packed[1]
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-pack-redundant.html b/git-pack-redundant.html
new file mode 100644 (file)
index 0000000..e6dd0d3
--- /dev/null
@@ -0,0 +1,342 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-pack-redundant(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-pack-redundant(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-pack-redundant -\r
+   Program used to find redundant pack files.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-pack-redundant [ --verbose ] [ --alt-odb ] &lt; --all | .pack filename &#8230; &gt;</em></p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>This program computes which packs in your repository\r
+are redundant. The output is suitable for piping to\r
+<em>xargs rm</em> if you are in the root of the repository.</p>\r
+<p>git-pack-redundant accepts a list of objects on standard input. Any objects\r
+given will be ignored when checking which packs are required. This makes the\r
+following command useful when wanting to remove packs which contain unreachable\r
+objects.</p>\r
+<p>git-fsck-objects --full --unreachable | cut -d <em> </em> -f3 | git-pack-redundant --all | xargs rm</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--all\r
+</dt>\r
+<dd>\r
+<p>\r
+        Processes all packs. Any filenames on the commandline are ignored.\r
+</p>\r
+</dd>\r
+<dt>\r
+--alt-odb\r
+</dt>\r
+<dd>\r
+<p>\r
+        Don't require objects present in packs from alternate object\r
+        directories to be present in local packs.\r
+</p>\r
+</dd>\r
+<dt>\r
+--verbose\r
+</dt>\r
+<dd>\r
+<p>\r
+        Outputs some statistics to stderr. Has a small performance penalty.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Lukas Sandström &lt;lukass@etek.chalmers.se&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Lukas Sandström &lt;lukass@etek.chalmers.se&gt;</p>\r
+</div>\r
+<h2>See-Also</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-pack-objects.html">git-pack-objects(1)</a>\r
+<a href="git-repack.html">git-repack(1)</a>\r
+<a href="git-prune-packed.html">git-prune-packed(1)</a></p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:25 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-pack-redundant.txt b/git-pack-redundant.txt
new file mode 100644 (file)
index 0000000..9fe86ae
--- /dev/null
@@ -0,0 +1,58 @@
+git-pack-redundant(1)
+=====================
+
+NAME
+----
+git-pack-redundant - Program used to find redundant pack files.
+
+
+SYNOPSIS
+--------
+'git-pack-redundant [ --verbose ] [ --alt-odb ] < --all | .pack filename ... >'
+
+DESCRIPTION
+-----------
+This program computes which packs in your repository
+are redundant. The output is suitable for piping to
+'xargs rm' if you are in the root of the repository.
+
+git-pack-redundant accepts a list of objects on standard input. Any objects
+given will be ignored when checking which packs are required. This makes the 
+following command useful when wanting to remove packs which contain unreachable
+objects.
+
+git-fsck-objects --full --unreachable | cut -d ' ' -f3 | \
+git-pack-redundant --all | xargs rm
+
+OPTIONS
+-------
+
+
+--all::
+       Processes all packs. Any filenames on the commandline are ignored.
+
+--alt-odb::
+       Don't require objects present in packs from alternate object
+       directories to be present in local packs.
+
+--verbose::
+       Outputs some statistics to stderr. Has a small performance penalty.
+
+Author
+------
+Written by Lukas Sandström <lukass@etek.chalmers.se>
+
+Documentation
+--------------
+Documentation by Lukas Sandström <lukass@etek.chalmers.se>
+
+See-Also
+--------
+gitlink:git-pack-objects[1]
+gitlink:git-repack[1]
+gitlink:git-prune-packed[1]
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-parse-remote.html b/git-parse-remote.html
new file mode 100644 (file)
index 0000000..5948730
--- /dev/null
@@ -0,0 +1,331 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-parse-remote(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-parse-remote(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-parse-remote -\r
+   Routines to help parsing $GIT_DIR/remotes/\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>. git-parse-remote</em></p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>This script is included in various scripts to supply\r
+routines to parse files under $GIT_DIR/remotes/ and\r
+$GIT_DIR/branches/.</p>\r
+<p>The primary entry points are:</p>\r
+<dl>\r
+<dt>\r
+get_remote_refs_for_fetch\r
+</dt>\r
+<dd>\r
+<p>\r
+        Given the list of user-supplied <tt>&lt;repo&gt; &lt;refspec&gt;&#8230;</tt>,\r
+        return the list of refs to fetch after canonicalizing\r
+        them into <tt>$GIT_DIR</tt> relative paths\r
+        (e.g. <tt>refs/heads/foo</tt>).  When <tt>&lt;refspec&gt;&#8230;</tt> is empty\r
+        the returned list of refs consists of the defaults\r
+        for the given <tt>&lt;repo&gt;</tt>, if specified in\r
+        <tt>$GIT_DIR/remotes/</tt> or <tt>$GIT_DIR/branches/</tt>.\r
+</p>\r
+</dd>\r
+<dt>\r
+get_remote_refs_for_push\r
+</dt>\r
+<dd>\r
+<p>\r
+        Given the list of user-supplied <tt>&lt;repo&gt; &lt;refspec&gt;&#8230;</tt>,\r
+        return the list of refs to push in a form suitable to be\r
+        fed to the <tt>git-send-pack</tt> command.  When <tt>&lt;refspec&gt;&#8230;</tt>\r
+        is empty the returned list of refs consists of the\r
+        defaults for the given <tt>&lt;repo&gt;</tt>, if specified in\r
+        <tt>$GIT_DIR/remotes/</tt>.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano.</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:26 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-parse-remote.txt b/git-parse-remote.txt
new file mode 100644 (file)
index 0000000..fc27afe
--- /dev/null
@@ -0,0 +1,48 @@
+git-parse-remote(1)
+===================
+
+NAME
+----
+git-parse-remote - Routines to help parsing $GIT_DIR/remotes/
+
+
+SYNOPSIS
+--------
+'. git-parse-remote'
+
+DESCRIPTION
+-----------
+This script is included in various scripts to supply
+routines to parse files under $GIT_DIR/remotes/ and
+$GIT_DIR/branches/.
+
+The primary entry points are:
+
+get_remote_refs_for_fetch::
+       Given the list of user-supplied `<repo> <refspec>...`,
+       return the list of refs to fetch after canonicalizing
+       them into `$GIT_DIR` relative paths
+       (e.g. `refs/heads/foo`).  When `<refspec>...` is empty
+       the returned list of refs consists of the defaults
+       for the given `<repo>`, if specified in
+       `$GIT_DIR/remotes/` or `$GIT_DIR/branches/`.
+
+get_remote_refs_for_push::
+       Given the list of user-supplied `<repo> <refspec>...`,
+       return the list of refs to push in a form suitable to be
+       fed to the `git-send-pack` command.  When `<refspec>...`
+       is empty the returned list of refs consists of the
+       defaults for the given `<repo>`, if specified in
+       `$GIT_DIR/remotes/`.
+
+Author
+------
+Written by Junio C Hamano.
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-patch-id.html b/git-patch-id.html
new file mode 100644 (file)
index 0000000..a712aa0
--- /dev/null
@@ -0,0 +1,321 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-patch-id(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-patch-id(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-patch-id -\r
+   Generate a patch ID.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-patch-id</em> &lt; &lt;patch&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>A "patch ID" is nothing but a SHA1 of the diff associated with a patch, with\r
+whitespace and line numbers ignored.  As such, it's "reasonably stable", but at\r
+the same time also reasonably unique, ie two patches that have the same "patch\r
+ID" are almost guaranteed to be the same thing.</p>\r
+<p>IOW, you can use this thing to look for likely duplicate commits.</p>\r
+<p>When dealing with git-diff-tree output, it takes advantage of\r
+the fact that the patch is prefixed with the object name of the\r
+commit, and outputs two 40-byte hexadecimal string.  The first\r
+string is the patch ID, and the second string is the commit ID.\r
+This can be used to make a mapping from patch ID to commit ID.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;patch&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The diff to create the ID of.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:26 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-patch-id.txt b/git-patch-id.txt
new file mode 100644 (file)
index 0000000..c8bd197
--- /dev/null
@@ -0,0 +1,43 @@
+git-patch-id(1)
+===============
+
+NAME
+----
+git-patch-id - Generate a patch ID.
+
+SYNOPSIS
+--------
+'git-patch-id' < <patch>
+
+DESCRIPTION
+-----------
+A "patch ID" is nothing but a SHA1 of the diff associated with a patch, with
+whitespace and line numbers ignored.  As such, it's "reasonably stable", but at
+the same time also reasonably unique, ie two patches that have the same "patch
+ID" are almost guaranteed to be the same thing.
+
+IOW, you can use this thing to look for likely duplicate commits.
+
+When dealing with git-diff-tree output, it takes advantage of
+the fact that the patch is prefixed with the object name of the
+commit, and outputs two 40-byte hexadecimal string.  The first
+string is the patch ID, and the second string is the commit ID.
+This can be used to make a mapping from patch ID to commit ID.
+
+OPTIONS
+-------
+<patch>::
+       The diff to create the ID of.
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-peek-remote.html b/git-peek-remote.html
new file mode 100644 (file)
index 0000000..bbda73b
--- /dev/null
@@ -0,0 +1,340 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-peek-remote(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-peek-remote(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-peek-remote -\r
+   Lists the references in a remote repository.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-peek-remote</em> [--exec=&lt;git-upload-pack&gt;] [&lt;host&gt;:]&lt;directory&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Lists the references the remote repository has, and optionally\r
+stores them in the local repository under the same name.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--exec=&lt;git-upload-pack&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Use this to specify the path to <em>git-upload-pack</em> on the\r
+        remote side, if it is not found on your $PATH. Some\r
+        installations of sshd ignores the user's environment\r
+        setup scripts for login shells (e.g. .bash_profile) and\r
+        your privately installed git may not be found on the system\r
+        default $PATH.  Another workaround suggested is to set\r
+        up your $PATH in ".bashrc", but this flag is for people\r
+        who do not want to pay the overhead for non-interactive\r
+        shells, but prefer having a lean .bashrc file (they set most of\r
+        the things up in .bash_profile).\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;host&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        A remote host that houses the repository.  When this\r
+        part is specified, <em>git-upload-pack</em> is invoked via\r
+        ssh.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;directory&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The repository to sync from.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:27 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-peek-remote.txt b/git-peek-remote.txt
new file mode 100644 (file)
index 0000000..915d3f8
--- /dev/null
@@ -0,0 +1,52 @@
+git-peek-remote(1)
+==================
+
+NAME
+----
+git-peek-remote - Lists the references in a remote repository.
+
+
+SYNOPSIS
+--------
+'git-peek-remote' [--exec=<git-upload-pack>] [<host>:]<directory>
+
+DESCRIPTION
+-----------
+Lists the references the remote repository has, and optionally
+stores them in the local repository under the same name.
+
+OPTIONS
+-------
+--exec=<git-upload-pack>::
+       Use this to specify the path to 'git-upload-pack' on the
+       remote side, if it is not found on your $PATH. Some
+       installations of sshd ignores the user's environment
+       setup scripts for login shells (e.g. .bash_profile) and
+       your privately installed git may not be found on the system
+       default $PATH.  Another workaround suggested is to set
+       up your $PATH in ".bashrc", but this flag is for people
+       who do not want to pay the overhead for non-interactive
+       shells, but prefer having a lean .bashrc file (they set most of
+       the things up in .bash_profile).
+
+<host>::
+       A remote host that houses the repository.  When this
+       part is specified, 'git-upload-pack' is invoked via
+       ssh.
+
+<directory>::
+       The repository to sync from.
+
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-prune-packed.html b/git-prune-packed.html
new file mode 100644 (file)
index 0000000..8fa5865
--- /dev/null
@@ -0,0 +1,324 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-prune-packed(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-prune-packed(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-prune-packed -\r
+   Program used to remove the extra object files that are now residing in a pack file.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-prune-packed</em> [-n]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>This program search the <tt>$GIT_OBJECT_DIR</tt> for all objects that currently\r
+exist in a pack file as well as the independent object directories.</p>\r
+<p>All such extra objects are removed.</p>\r
+<p>A pack is a collection of objects, individually compressed, with delta\r
+compression applied, stored in a single file, with an associated index file.</p>\r
+<p>Packs are used to reduce the load on mirror systems, backup engines,\r
+disk storage, etc.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-n\r
+</dt>\r
+<dd>\r
+<p>\r
+        Don't actually remove any objects, only show those that would have been\r
+        removed.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Ryan Anderson &lt;ryan@michonline.com&gt;</p>\r
+</div>\r
+<h2>See-Also</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-pack-objects.html">git-pack-objects(1)</a>\r
+<a href="git-repack.html">git-repack(1)</a></p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:28 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-prune-packed.txt b/git-prune-packed.txt
new file mode 100644 (file)
index 0000000..37c53a9
--- /dev/null
@@ -0,0 +1,51 @@
+git-prune-packed(1)
+=====================
+
+NAME
+----
+git-prune-packed - Program used to remove the extra object files that are now
+residing in a pack file.
+
+
+SYNOPSIS
+--------
+'git-prune-packed' [-n]
+
+
+DESCRIPTION
+-----------
+This program search the `$GIT_OBJECT_DIR` for all objects that currently
+exist in a pack file as well as the independent object directories.
+
+All such extra objects are removed.
+
+A pack is a collection of objects, individually compressed, with delta
+compression applied, stored in a single file, with an associated index file.
+
+Packs are used to reduce the load on mirror systems, backup engines,
+disk storage, etc.
+
+
+OPTIONS
+-------
+-n::
+        Don't actually remove any objects, only show those that would have been
+        removed.
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Ryan Anderson <ryan@michonline.com>
+
+See-Also
+--------
+gitlink:git-pack-objects[1]
+gitlink:git-repack[1]
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-prune.html b/git-prune.html
new file mode 100644 (file)
index 0000000..29f2ec4
--- /dev/null
@@ -0,0 +1,347 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-prune(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-prune(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-prune -\r
+   Prunes all unreachable objects from the object database\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-prune</em> [-n] [--] [&lt;head&gt;&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>This runs <tt>git-fsck-objects --unreachable</tt> using all the refs\r
+available in <tt>$GIT_DIR/refs</tt>, optionally with additional set of\r
+objects specified on the command line, and prunes all\r
+objects unreachable from any of these head objects from the object database.\r
+In addition, it\r
+prunes the unpacked objects that are also found in packs by\r
+running <tt>git prune-packed</tt>.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-n\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not remove anything; just report what it would\r
+        remove.\r
+</p>\r
+</dd>\r
+<dt>\r
+&#8212;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not interpret any more arguments as options.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;head&gt;&#8230;\r
+</dt>\r
+<dd>\r
+<p>\r
+        In addition to objects\r
+        reachable from any of our references, keep objects\r
+        reachable from listed &lt;head&gt;s.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>EXAMPLE</h2>\r
+<div class="sectionbody">\r
+<p>To prune objects not used by your repository nor another that\r
+borrows from your repository via its\r
+<tt>.git/objects/info/alternates</tt>:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git prune $(cd ../another &amp;&amp; $(git-rev-parse --all))</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:28 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-prune.txt b/git-prune.txt
new file mode 100644 (file)
index 0000000..f694fcb
--- /dev/null
@@ -0,0 +1,61 @@
+git-prune(1)
+============
+
+NAME
+----
+git-prune - Prunes all unreachable objects from the object database
+
+
+SYNOPSIS
+--------
+'git-prune' [-n] [--] [<head>...]
+
+DESCRIPTION
+-----------
+
+This runs `git-fsck-objects --unreachable` using all the refs
+available in `$GIT_DIR/refs`, optionally with additional set of
+objects specified on the command line, and prunes all
+objects unreachable from any of these head objects from the object database.
+In addition, it
+prunes the unpacked objects that are also found in packs by
+running `git prune-packed`.
+
+OPTIONS
+-------
+
+-n::
+       Do not remove anything; just report what it would
+       remove.
+
+--::
+       Do not interpret any more arguments as options.
+
+<head>...::
+       In addition to objects
+       reachable from any of our references, keep objects
+       reachable from listed <head>s.
+
+EXAMPLE
+-------
+
+To prune objects not used by your repository nor another that
+borrows from your repository via its
+`.git/objects/info/alternates`:
+
+------------
+$ git prune $(cd ../another && $(git-rev-parse --all))
+------------
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-pull.html b/git-pull.html
new file mode 100644 (file)
index 0000000..00b74ee
--- /dev/null
@@ -0,0 +1,774 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-pull(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-pull(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-pull -\r
+   Pull and merge from another repository.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-pull</em> &lt;options&gt; &lt;repository&gt; &lt;refspec&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Runs <tt>git-fetch</tt> with the given parameters, and calls <tt>git-merge</tt>\r
+to merge the retrieved head(s) into the current branch.</p>\r
+<p>Note that you can use <tt>.</tt> (current directory) as the\r
+&lt;repository&gt; to pull from the local repository &#8212; this is useful\r
+when merging local branches into the current branch.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-n, --no-summary\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not show diffstat at the end of the merge.\r
+</p>\r
+</dd>\r
+<dt>\r
+--no-commit\r
+</dt>\r
+<dd>\r
+<p>\r
+        Perform the merge but pretend the merge failed and do\r
+        not autocommit, to give the user a chance to inspect and\r
+        further tweak the merge result before committing.\r
+</p>\r
+</dd>\r
+<dt>\r
+-s &lt;strategy&gt;, --strategy=&lt;strategy&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Use the given merge strategy; can be supplied more than\r
+        once to specify them in the order they should be tried.\r
+        If there is no <tt>-s</tt> option, a built-in list of strategies\r
+        is used instead (<tt>git-merge-recursive</tt> when merging a single\r
+        head, <tt>git-merge-octopus</tt> otherwise).\r
+</p>\r
+</dd>\r
+<dt>\r
+-a, --append\r
+</dt>\r
+<dd>\r
+<p>\r
+        Append ref names and object names of fetched refs to the\r
+        existing contents of <tt>.git/FETCH_HEAD</tt>.  Without this\r
+        option old data in <tt>.git/FETCH_HEAD</tt> will be overwritten.\r
+</p>\r
+</dd>\r
+<dt>\r
+-f, --force\r
+</dt>\r
+<dd>\r
+<p>\r
+        When <tt>git-fetch</tt> is used with <tt>&lt;rbranch&gt;:&lt;lbranch&gt;</tt>\r
+        refspec, it refuses to update the local branch\r
+        <tt>&lt;lbranch&gt;</tt> unless the remote branch <tt>&lt;rbranch&gt;</tt> it\r
+        fetches is a descendant of <tt>&lt;lbranch&gt;</tt>.  This option\r
+        overrides that check.\r
+</p>\r
+</dd>\r
+<dt>\r
+-t, --tags\r
+</dt>\r
+<dd>\r
+<p>\r
+        By default, the git core utilities will not fetch and store\r
+        tags under the same name as the remote repository;  ask it\r
+        to do so using <tt>--tags</tt>.  Using this option will bound the\r
+        list of objects pulled to the remote tags.  Commits in branches\r
+        beyond the tags will be ignored.\r
+</p>\r
+</dd>\r
+<dt>\r
+-u, --update-head-ok\r
+</dt>\r
+<dd>\r
+<p>\r
+        By default <tt>git-fetch</tt> refuses to update the head which\r
+        corresponds to the current branch.  This flag disables the\r
+        check.  Note that fetching into the current branch will not\r
+        update the index and working directory, so use it with care.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;repository&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The "remote" repository that is the source of a fetch\r
+        or pull operation, or the destination of a push operation.\r
+        One of the following notations can be used\r
+        to name the remote repository:\r
+</p>\r
+<div class="exampleblock">\r
+<div class="exampleblock-content">\r
+<ul>\r
+<li>\r
+<p>\r
+rsync://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+http://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+https://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+git://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+git://host.xz/~user/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ssh://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ssh://host.xz/~user/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ssh://host.xz/~/path/to/repo.git\r
+</p>\r
+</li>\r
+</ul>\r
+</div></div>\r
+<p>SSH Is the default transport protocol and also supports an\r
+scp-like syntax.  Both syntaxes support username expansion,\r
+as does the native git protocol. The following three are\r
+identical to the last three above, respectively:</p>\r
+<div class="exampleblock">\r
+<div class="exampleblock-content">\r
+<ul>\r
+<li>\r
+<p>\r
+host.xz:/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+host.xz:~user/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+host.xz:path/to/repo.git\r
+</p>\r
+</li>\r
+</ul>\r
+</div></div>\r
+<p>To sync with a local directory, use:</p>\r
+<div class="exampleblock">\r
+<div class="exampleblock-content">\r
+<ul>\r
+<li>\r
+<p>\r
+/path/to/repo.git/\r
+</p>\r
+</li>\r
+</ul>\r
+</div></div>\r
+<p>In addition to the above, as a short-hand, the name of a\r
+file in <tt>$GIT_DIR/remotes</tt> directory can be given; the\r
+named file should be in the following format:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>URL: one of the above URL format\r
+Push: &lt;refspec&gt;\r
+Pull: &lt;refspec&gt;</tt></pre>\r
+</div></div>\r
+<p>When such a short-hand is specified in place of\r
+&lt;repository&gt; without &lt;refspec&gt; parameters on the command\r
+line, &lt;refspec&gt; specified on <tt>Push:</tt> lines or <tt>Pull:</tt>\r
+lines are used for <tt>git-push</tt> and <tt>git-fetch</tt>/<tt>git-pull</tt>,\r
+respectively.  Multiple <tt>Push:</tt> and and <tt>Pull:</tt> lines may\r
+be specified for additional branch mappings.</p>\r
+<p>The name of a file in <tt>$GIT_DIR/branches</tt> directory can be\r
+specified as an older notation short-hand; the named\r
+file should contain a single line, a URL in one of the\r
+above formats, optionally followed by a hash <tt>#</tt> and the\r
+name of remote head (URL fragment notation).\r
+<tt>$GIT_DIR/branches/&lt;remote&gt;</tt> file that stores a &lt;url&gt;\r
+without the fragment is equivalent to have this in the\r
+corresponding file in the <tt>$GIT_DIR/remotes/</tt> directory.</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>URL: &lt;url&gt;\r
+Pull: refs/heads/master:&lt;remote&gt;</tt></pre>\r
+</div></div>\r
+<p>while having <tt>&lt;url&gt;#&lt;head&gt;</tt> is equivalent to</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>URL: &lt;url&gt;\r
+Pull: refs/heads/&lt;head&gt;:&lt;remote&gt;</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+&lt;refspec&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The canonical format of a &lt;refspec&gt; parameter is\r
+        <tt>+?&lt;src&gt;:&lt;dst&gt;</tt>; that is, an optional plus <tt>+</tt>, followed\r
+        by the source ref, followed by a colon <tt>:</tt>, followed by\r
+        the destination ref.\r
+</p>\r
+<p>When used in <tt>git-push</tt>, the &lt;src&gt; side can be an\r
+arbitrary "SHA1 expression" that can be used as an\r
+argument to <tt>git-cat-file -t</tt>.  E.g. <tt>master~4</tt> (push\r
+four parents before the current master head).</p>\r
+<p>For <tt>git-push</tt>, the local ref that matches &lt;src&gt; is used\r
+to fast forward the remote ref that matches &lt;dst&gt;.  If\r
+the optional plus <tt>+</tt> is used, the remote ref is updated\r
+even if it does not result in a fast forward update.</p>\r
+<p>For <tt>git-fetch</tt> and <tt>git-pull</tt>, the remote ref that matches &lt;src&gt;\r
+is fetched, and if &lt;dst&gt; is not empty string, the local\r
+ref that matches it is fast forwarded using &lt;src&gt;.\r
+Again, if the optional plus <tt>+</tt> is used, the local ref\r
+is updated even if it does not result in a fast forward\r
+update.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">If the remote branch from which you want to pull is\r
+modified in non-linear ways such as being rewound and\r
+rebased frequently, then a pull will attempt a merge with\r
+an older version of itself, likely conflict, and fail.\r
+It is under these conditions that you would want to use\r
+the <tt>+</tt> sign to indicate non-fast-forward updates will\r
+be needed.  There is currently no easy way to determine\r
+or declare that a branch will be made available in a\r
+repository with this behavior; the pulling user simply\r
+must know this is the expected usage pattern for a branch.</td>\r
+</tr></table>\r
+</div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">You never do your own development on branches that appear\r
+on the right hand side of a &lt;refspec&gt; colon on <tt>Pull:</tt> lines;\r
+they are to be updated by <tt>git-fetch</tt>.  If you intend to do\r
+development derived from a remote branch <tt>B</tt>, have a <tt>Pull:</tt>\r
+line to track it (i.e. <tt>Pull: B:remote-B</tt>), and have a separate\r
+branch <tt>my-B</tt> to do your development on top of it.  The latter\r
+is created by <tt>git branch my-B remote-B</tt> (or its equivalent <tt>git\r
+checkout -b my-B remote-B</tt>).  Run <tt>git fetch</tt> to keep track of\r
+the progress of the remote side, and when you see something new\r
+on the remote branch, merge it into your development branch with\r
+<tt>git pull . remote-B</tt>, while you are on <tt>my-B</tt> branch.\r
+The common <tt>Pull: master:origin</tt> mapping of a remote <tt>master</tt>\r
+branch to a local <tt>origin</tt> branch, which is then merged to a\r
+local development branch, again typically named <tt>master</tt>, is made\r
+when you run <tt>git clone</tt> for you to follow this pattern.</td>\r
+</tr></table>\r
+</div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">There is a difference between listing multiple &lt;refspec&gt;\r
+directly on <tt>git-pull</tt> command line and having multiple\r
+<tt>Pull:</tt> &lt;refspec&gt; lines for a &lt;repository&gt; and running\r
+<tt>git-pull</tt> command without any explicit &lt;refspec&gt; parameters.\r
+&lt;refspec&gt; listed explicitly on the command line are always\r
+merged into the current branch after fetching.  In other words,\r
+if you list more than one remote refs, you would be making\r
+an Octopus.  While <tt>git-pull</tt> run without any explicit &lt;refspec&gt;\r
+parameter takes default &lt;refspec&gt;s from <tt>Pull:</tt> lines, it\r
+merges only the first &lt;refspec&gt; found into the current branch,\r
+after fetching all the remote refs.  This is because making an\r
+Octopus from remote refs is rarely done, while keeping track\r
+of multiple remote heads in one-go by fetching more than one\r
+is often useful.</td>\r
+</tr></table>\r
+</div>\r
+<p>Some short-cut notations are also supported.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+For backward compatibility, <tt>tag</tt> is almost ignored;\r
+  it just makes the following parameter &lt;tag&gt; to mean a\r
+  refspec <tt>refs/tags/&lt;tag&gt;:refs/tags/&lt;tag&gt;</tt>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+A parameter &lt;ref&gt; without a colon is equivalent to\r
+  &lt;ref&gt;: when pulling/fetching, and &lt;ref&gt;<tt>:</tt>&lt;ref&gt; when\r
+  pushing.  That is, do not store it locally if\r
+  fetching, and update the same name if pushing.\r
+</p>\r
+</li>\r
+</ul>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>MERGE STRATEGIES</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+resolve\r
+</dt>\r
+<dd>\r
+<p>\r
+        This can only resolve two heads (i.e. the current branch\r
+        and another branch you pulled from) using 3-way merge\r
+        algorithm.  It tries to carefully detect criss-cross\r
+        merge ambiguities and is considered generally safe and\r
+        fast.\r
+</p>\r
+</dd>\r
+<dt>\r
+recursive\r
+</dt>\r
+<dd>\r
+<p>\r
+        This can only resolve two heads using 3-way merge\r
+        algorithm.  When there are more than one common\r
+        ancestors that can be used for 3-way merge, it creates a\r
+        merged tree of the common ancestors and uses that as\r
+        the reference tree for the 3-way merge.  This has been\r
+        reported to result in fewer merge conflicts without\r
+        causing mis-merges by tests done on actual merge commits\r
+        taken from Linux 2.6 kernel development history.\r
+        Additionally this can detect and handle merges involving\r
+        renames.  This is the default merge strategy when\r
+        pulling or merging one branch.\r
+</p>\r
+</dd>\r
+<dt>\r
+octopus\r
+</dt>\r
+<dd>\r
+<p>\r
+        This resolves more than two-head case, but refuses to do\r
+        complex merge that needs manual resolution.  It is\r
+        primarily meant to be used for bundling topic branch\r
+        heads together.  This is the default merge strategy when\r
+        pulling or merging more than one branches.\r
+</p>\r
+</dd>\r
+<dt>\r
+ours\r
+</dt>\r
+<dd>\r
+<p>\r
+        This resolves any number of heads, but the result of the\r
+        merge is always the current branch head.  It is meant to\r
+        be used to supersede old development history of side\r
+        branches.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>EXAMPLES</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+git pull, git pull origin\r
+</dt>\r
+<dd>\r
+<p>\r
+        Fetch the default head from the repository you cloned\r
+        from and merge it into your current branch.\r
+</p>\r
+</dd>\r
+<dt>\r
+git pull -s ours . obsolete\r
+</dt>\r
+<dd>\r
+<p>\r
+        Merge local branch <tt>obsolete</tt> into the current branch,\r
+        using <tt>ours</tt> merge strategy.\r
+</p>\r
+</dd>\r
+<dt>\r
+git pull . fixes enhancements\r
+</dt>\r
+<dd>\r
+<p>\r
+        Bundle local branch <tt>fixes</tt> and <tt>enhancements</tt> on top of\r
+        the current branch, making an Octopus merge.\r
+</p>\r
+</dd>\r
+<dt>\r
+git pull --no-commit . maint\r
+</dt>\r
+<dd>\r
+<p>\r
+        Merge local branch <tt>maint</tt> into the current branch, but\r
+        do not make a commit automatically.  This can be used\r
+        when you want to include further changes to the merge,\r
+        or want to write your own merge commit message.\r
+</p>\r
+<p>You should refrain from abusing this option to sneak substantial\r
+changes into a merge commit.  Small fixups like bumping\r
+release/version name would be acceptable.</p>\r
+</dd>\r
+<dt>\r
+Command line pull of multiple branches from one repository\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ cat .git/remotes/origin\r
+URL: git://git.kernel.org/pub/scm/git/git.git\r
+Pull: master:origin\r
+\r
+$ git checkout master\r
+$ git fetch origin master:origin +pu:pu maint:maint\r
+$ git pull . origin</tt></pre>\r
+</div></div>\r
+<p>Here, a typical <tt>.git/remotes/origin</tt> file from a\r
+<tt>git-clone</tt> operation is used in combination with\r
+command line options to <tt>git-fetch</tt> to first update\r
+multiple branches of the local repository and then\r
+to merge the remote <tt>origin</tt> branch into the local\r
+<tt>master</tt> branch.  The local <tt>pu</tt> branch is updated\r
+even if it does not result in a fast forward update.\r
+Here, the pull can obtain its objects from the local\r
+repository using <tt>.</tt>, as the previous <tt>git-fetch</tt> is\r
+known to have already obtained and made available\r
+all the necessary objects.</p>\r
+</dd>\r
+<dt>\r
+Pull of multiple branches from one repository using <tt>.git/remotes</tt> file\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ cat .git/remotes/origin\r
+URL: git://git.kernel.org/pub/scm/git/git.git\r
+Pull: master:origin\r
+Pull: +pu:pu\r
+Pull: maint:maint\r
+\r
+$ git checkout master\r
+$ git pull origin</tt></pre>\r
+</div></div>\r
+<p>Here, a typical <tt>.git/remotes/origin</tt> file from a\r
+<tt>git-clone</tt> operation has been hand-modified to include\r
+the branch-mapping of additional remote and local\r
+heads directly.  A single <tt>git-pull</tt> operation while\r
+in the <tt>master</tt> branch will fetch multiple heads and\r
+merge the remote <tt>origin</tt> head into the current,\r
+local <tt>master</tt> branch.</p>\r
+</dd>\r
+</dl>\r
+<p>If you tried a pull which resulted in a complex conflicts and\r
+would want to start over, you can recover with\r
+<a href="git-reset.html">git-reset(1)</a>.</p>\r
+</div>\r
+<h2>SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-fetch.html">git-fetch(1)</a>, <a href="git-merge.html">git-merge(1)</a></p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;\r
+and Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Jon Loeliger,\r
+David Greaves,\r
+Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:29 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-pull.txt b/git-pull.txt
new file mode 100644 (file)
index 0000000..3a7d385
--- /dev/null
@@ -0,0 +1,131 @@
+git-pull(1)
+===========
+
+NAME
+----
+git-pull - Pull and merge from another repository.
+
+
+SYNOPSIS
+--------
+'git-pull' <options> <repository> <refspec>...
+
+
+DESCRIPTION
+-----------
+Runs `git-fetch` with the given parameters, and calls `git-merge`
+to merge the retrieved head(s) into the current branch.
+
+Note that you can use `.` (current directory) as the
+<repository> to pull from the local repository -- this is useful
+when merging local branches into the current branch.
+
+
+OPTIONS
+-------
+include::merge-options.txt[]
+
+include::fetch-options.txt[]
+
+include::pull-fetch-param.txt[]
+
+include::merge-strategies.txt[]
+
+
+EXAMPLES
+--------
+
+git pull, git pull origin::
+       Fetch the default head from the repository you cloned
+       from and merge it into your current branch.
+
+git pull -s ours . obsolete::
+       Merge local branch `obsolete` into the current branch,
+       using `ours` merge strategy.
+
+git pull . fixes enhancements::
+       Bundle local branch `fixes` and `enhancements` on top of
+       the current branch, making an Octopus merge.
+
+git pull --no-commit . maint::
+       Merge local branch `maint` into the current branch, but
+       do not make a commit automatically.  This can be used
+       when you want to include further changes to the merge,
+       or want to write your own merge commit message.
++
+You should refrain from abusing this option to sneak substantial
+changes into a merge commit.  Small fixups like bumping
+release/version name would be acceptable.
+
+Command line pull of multiple branches from one repository::
++
+------------------------------------------------
+$ cat .git/remotes/origin
+URL: git://git.kernel.org/pub/scm/git/git.git
+Pull: master:origin
+
+$ git checkout master
+$ git fetch origin master:origin +pu:pu maint:maint
+$ git pull . origin
+------------------------------------------------
++
+Here, a typical `.git/remotes/origin` file from a
+`git-clone` operation is used in combination with
+command line options to `git-fetch` to first update
+multiple branches of the local repository and then
+to merge the remote `origin` branch into the local
+`master` branch.  The local `pu` branch is updated
+even if it does not result in a fast forward update.
+Here, the pull can obtain its objects from the local
+repository using `.`, as the previous `git-fetch` is
+known to have already obtained and made available
+all the necessary objects.
+
+
+Pull of multiple branches from one repository using `.git/remotes` file::
++
+------------------------------------------------
+$ cat .git/remotes/origin
+URL: git://git.kernel.org/pub/scm/git/git.git
+Pull: master:origin
+Pull: +pu:pu
+Pull: maint:maint
+
+$ git checkout master
+$ git pull origin
+------------------------------------------------
++
+Here, a typical `.git/remotes/origin` file from a
+`git-clone` operation has been hand-modified to include
+the branch-mapping of additional remote and local
+heads directly.  A single `git-pull` operation while
+in the `master` branch will fetch multiple heads and
+merge the remote `origin` head into the current,
+local `master` branch.
+
+
+If you tried a pull which resulted in a complex conflicts and
+would want to start over, you can recover with
+gitlink:git-reset[1].
+
+
+SEE ALSO
+--------
+gitlink:git-fetch[1], gitlink:git-merge[1]
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+and Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Jon Loeliger,
+David Greaves,
+Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-push.html b/git-push.html
new file mode 100644 (file)
index 0000000..e350c52
--- /dev/null
@@ -0,0 +1,556 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-push(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-push(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-push -\r
+   Update remote refs along with associated objects.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-push</em> [--all] [--force] &lt;repository&gt; &lt;refspec&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Updates remote refs using local refs, while sending objects\r
+necessary to complete the given refs.</p>\r
+<p>You can make "interesting" things to happen on the repository\r
+every time you push into it, by setting up <em>hooks</em> there.  See\r
+documentation for <a href="git-receive-pack.html">git-receive-pack(1)</a>.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;repository&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The "remote" repository that is the source of a fetch\r
+        or pull operation, or the destination of a push operation.\r
+        One of the following notations can be used\r
+        to name the remote repository:\r
+</p>\r
+<div class="exampleblock">\r
+<div class="exampleblock-content">\r
+<ul>\r
+<li>\r
+<p>\r
+rsync://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+http://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+https://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+git://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+git://host.xz/~user/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ssh://host.xz/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ssh://host.xz/~user/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ssh://host.xz/~/path/to/repo.git\r
+</p>\r
+</li>\r
+</ul>\r
+</div></div>\r
+<p>SSH Is the default transport protocol and also supports an\r
+scp-like syntax.  Both syntaxes support username expansion,\r
+as does the native git protocol. The following three are\r
+identical to the last three above, respectively:</p>\r
+<div class="exampleblock">\r
+<div class="exampleblock-content">\r
+<ul>\r
+<li>\r
+<p>\r
+host.xz:/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+host.xz:~user/path/to/repo.git/\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+host.xz:path/to/repo.git\r
+</p>\r
+</li>\r
+</ul>\r
+</div></div>\r
+<p>To sync with a local directory, use:</p>\r
+<div class="exampleblock">\r
+<div class="exampleblock-content">\r
+<ul>\r
+<li>\r
+<p>\r
+/path/to/repo.git/\r
+</p>\r
+</li>\r
+</ul>\r
+</div></div>\r
+<p>In addition to the above, as a short-hand, the name of a\r
+file in <tt>$GIT_DIR/remotes</tt> directory can be given; the\r
+named file should be in the following format:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>URL: one of the above URL format\r
+Push: &lt;refspec&gt;\r
+Pull: &lt;refspec&gt;</tt></pre>\r
+</div></div>\r
+<p>When such a short-hand is specified in place of\r
+&lt;repository&gt; without &lt;refspec&gt; parameters on the command\r
+line, &lt;refspec&gt; specified on <tt>Push:</tt> lines or <tt>Pull:</tt>\r
+lines are used for <tt>git-push</tt> and <tt>git-fetch</tt>/<tt>git-pull</tt>,\r
+respectively.  Multiple <tt>Push:</tt> and and <tt>Pull:</tt> lines may\r
+be specified for additional branch mappings.</p>\r
+<p>The name of a file in <tt>$GIT_DIR/branches</tt> directory can be\r
+specified as an older notation short-hand; the named\r
+file should contain a single line, a URL in one of the\r
+above formats, optionally followed by a hash <tt>#</tt> and the\r
+name of remote head (URL fragment notation).\r
+<tt>$GIT_DIR/branches/&lt;remote&gt;</tt> file that stores a &lt;url&gt;\r
+without the fragment is equivalent to have this in the\r
+corresponding file in the <tt>$GIT_DIR/remotes/</tt> directory.</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>URL: &lt;url&gt;\r
+Pull: refs/heads/master:&lt;remote&gt;</tt></pre>\r
+</div></div>\r
+<p>while having <tt>&lt;url&gt;#&lt;head&gt;</tt> is equivalent to</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>URL: &lt;url&gt;\r
+Pull: refs/heads/&lt;head&gt;:&lt;remote&gt;</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+&lt;refspec&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The canonical format of a &lt;refspec&gt; parameter is\r
+        <tt>+?&lt;src&gt;:&lt;dst&gt;</tt>; that is, an optional plus <tt>+</tt>, followed\r
+        by the source ref, followed by a colon <tt>:</tt>, followed by\r
+        the destination ref.\r
+</p>\r
+<p>When used in <tt>git-push</tt>, the &lt;src&gt; side can be an\r
+arbitrary "SHA1 expression" that can be used as an\r
+argument to <tt>git-cat-file -t</tt>.  E.g. <tt>master~4</tt> (push\r
+four parents before the current master head).</p>\r
+<p>For <tt>git-push</tt>, the local ref that matches &lt;src&gt; is used\r
+to fast forward the remote ref that matches &lt;dst&gt;.  If\r
+the optional plus <tt>+</tt> is used, the remote ref is updated\r
+even if it does not result in a fast forward update.</p>\r
+<p>For <tt>git-fetch</tt> and <tt>git-pull</tt>, the remote ref that matches &lt;src&gt;\r
+is fetched, and if &lt;dst&gt; is not empty string, the local\r
+ref that matches it is fast forwarded using &lt;src&gt;.\r
+Again, if the optional plus <tt>+</tt> is used, the local ref\r
+is updated even if it does not result in a fast forward\r
+update.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">If the remote branch from which you want to pull is\r
+modified in non-linear ways such as being rewound and\r
+rebased frequently, then a pull will attempt a merge with\r
+an older version of itself, likely conflict, and fail.\r
+It is under these conditions that you would want to use\r
+the <tt>+</tt> sign to indicate non-fast-forward updates will\r
+be needed.  There is currently no easy way to determine\r
+or declare that a branch will be made available in a\r
+repository with this behavior; the pulling user simply\r
+must know this is the expected usage pattern for a branch.</td>\r
+</tr></table>\r
+</div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">You never do your own development on branches that appear\r
+on the right hand side of a &lt;refspec&gt; colon on <tt>Pull:</tt> lines;\r
+they are to be updated by <tt>git-fetch</tt>.  If you intend to do\r
+development derived from a remote branch <tt>B</tt>, have a <tt>Pull:</tt>\r
+line to track it (i.e. <tt>Pull: B:remote-B</tt>), and have a separate\r
+branch <tt>my-B</tt> to do your development on top of it.  The latter\r
+is created by <tt>git branch my-B remote-B</tt> (or its equivalent <tt>git\r
+checkout -b my-B remote-B</tt>).  Run <tt>git fetch</tt> to keep track of\r
+the progress of the remote side, and when you see something new\r
+on the remote branch, merge it into your development branch with\r
+<tt>git pull . remote-B</tt>, while you are on <tt>my-B</tt> branch.\r
+The common <tt>Pull: master:origin</tt> mapping of a remote <tt>master</tt>\r
+branch to a local <tt>origin</tt> branch, which is then merged to a\r
+local development branch, again typically named <tt>master</tt>, is made\r
+when you run <tt>git clone</tt> for you to follow this pattern.</td>\r
+</tr></table>\r
+</div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">There is a difference between listing multiple &lt;refspec&gt;\r
+directly on <tt>git-pull</tt> command line and having multiple\r
+<tt>Pull:</tt> &lt;refspec&gt; lines for a &lt;repository&gt; and running\r
+<tt>git-pull</tt> command without any explicit &lt;refspec&gt; parameters.\r
+&lt;refspec&gt; listed explicitly on the command line are always\r
+merged into the current branch after fetching.  In other words,\r
+if you list more than one remote refs, you would be making\r
+an Octopus.  While <tt>git-pull</tt> run without any explicit &lt;refspec&gt;\r
+parameter takes default &lt;refspec&gt;s from <tt>Pull:</tt> lines, it\r
+merges only the first &lt;refspec&gt; found into the current branch,\r
+after fetching all the remote refs.  This is because making an\r
+Octopus from remote refs is rarely done, while keeping track\r
+of multiple remote heads in one-go by fetching more than one\r
+is often useful.</td>\r
+</tr></table>\r
+</div>\r
+<p>Some short-cut notations are also supported.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+For backward compatibility, <tt>tag</tt> is almost ignored;\r
+  it just makes the following parameter &lt;tag&gt; to mean a\r
+  refspec <tt>refs/tags/&lt;tag&gt;:refs/tags/&lt;tag&gt;</tt>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+A parameter &lt;ref&gt; without a colon is equivalent to\r
+  &lt;ref&gt;: when pulling/fetching, and &lt;ref&gt;<tt>:</tt>&lt;ref&gt; when\r
+  pushing.  That is, do not store it locally if\r
+  fetching, and update the same name if pushing.\r
+</p>\r
+</li>\r
+</ul>\r
+</dd>\r
+<dt>\r
+--all\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of naming each ref to push, specifies all refs\r
+        to be pushed.\r
+</p>\r
+</dd>\r
+<dt>\r
+-f, --force\r
+</dt>\r
+<dd>\r
+<p>\r
+        Usually, the command refuses to update a local ref that is\r
+        not an ancestor of the remote ref used to overwrite it.\r
+        This flag disables the check.  What this means is that the\r
+        local repository can lose commits; use it with care.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:30 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-push.txt b/git-push.txt
new file mode 100644 (file)
index 0000000..2254bac
--- /dev/null
@@ -0,0 +1,50 @@
+git-push(1)
+===========
+
+NAME
+----
+git-push - Update remote refs along with associated objects.
+
+
+SYNOPSIS
+--------
+'git-push' [--all] [--force] <repository> <refspec>...
+
+DESCRIPTION
+-----------
+
+Updates remote refs using local refs, while sending objects
+necessary to complete the given refs.
+
+You can make "interesting" things to happen on the repository
+every time you push into it, by setting up 'hooks' there.  See
+documentation for gitlink:git-receive-pack[1].
+
+
+OPTIONS
+-------
+include::pull-fetch-param.txt[]
+
+\--all::
+       Instead of naming each ref to push, specifies all refs
+       to be pushed.
+
+-f, \--force::
+       Usually, the command refuses to update a local ref that is
+       not an ancestor of the remote ref used to overwrite it.
+       This flag disables the check.  What this means is that the
+       local repository can lose commits; use it with care.
+
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-read-tree.html b/git-read-tree.html
new file mode 100644 (file)
index 0000000..a5bd09f
--- /dev/null
@@ -0,0 +1,625 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-read-tree(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-read-tree(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-read-tree -\r
+   Reads tree information into the index\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-read-tree</em> (&lt;tree-ish&gt; | [[-m | --reset] [-u | -i]] &lt;tree-ish1&gt; [&lt;tree-ish2&gt; [&lt;tree-ish3&gt;]])</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Reads the tree information given by &lt;tree-ish&gt; into the index,\r
+but does not actually <strong>update</strong> any of the files it "caches". (see:\r
+<a href="git-checkout-index.html">git-checkout-index(1)</a>)</p>\r
+<p>Optionally, it can merge a tree into the index, perform a\r
+fast-forward (i.e. 2-way) merge, or a 3-way merge, with the <tt>-m</tt>\r
+flag.  When used with <tt>-m</tt>, the <tt>-u</tt> flag causes it to also update\r
+the files in the work tree with the result of the merge.</p>\r
+<p>Trivial merges are done by <tt>git-read-tree</tt> itself.  Only conflicting paths\r
+will be in unmerged state when <tt>git-read-tree</tt> returns.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-m\r
+</dt>\r
+<dd>\r
+<p>\r
+        Perform a merge, not just a read.  The command will\r
+        refuse to run if your index file has unmerged entries,\r
+        indicating that you have not finished previous merge you\r
+        started.\r
+</p>\r
+</dd>\r
+<dt>\r
+--reset\r
+</dt>\r
+<dd>\r
+<p>\r
+        Same as -m, except that unmerged entries are discarded\r
+        instead of failing.\r
+</p>\r
+</dd>\r
+<dt>\r
+-u\r
+</dt>\r
+<dd>\r
+<p>\r
+        After a successful merge, update the files in the work\r
+        tree with the result of the merge.\r
+</p>\r
+</dd>\r
+<dt>\r
+-i\r
+</dt>\r
+<dd>\r
+<p>\r
+        Usually a merge requires the index file as well as the\r
+        files in the working tree are up to date with the\r
+        current head commit, in order not to lose local\r
+        changes.  This flag disables the check with the working\r
+        tree and is meant to be used when creating a merge of\r
+        trees that are not directly related to the current\r
+        working tree status into a temporary index file.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;tree-ish#&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The id of the tree object(s) to be read/merged.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Merging</h2>\r
+<div class="sectionbody">\r
+<p>If <tt>-m</tt> is specified, <tt>git-read-tree</tt> can perform 3 kinds of\r
+merge, a single tree merge if only 1 tree is given, a\r
+fast-forward merge with 2 trees, or a 3-way merge if 3 trees are\r
+provided.</p>\r
+<h3>Single Tree Merge</h3>\r
+<p>If only 1 tree is specified, git-read-tree operates as if the user did not\r
+specify <tt>-m</tt>, except that if the original index has an entry for a\r
+given pathname, and the contents of the path matches with the tree\r
+being read, the stat info from the index is used. (In other words, the\r
+index's stat()s take precedence over the merged tree's).</p>\r
+<p>That means that if you do a <tt>git-read-tree -m &lt;newtree&gt;</tt> followed by a\r
+<tt>git-checkout-index -f -u -a</tt>, the <tt>git-checkout-index</tt> only checks out\r
+the stuff that really changed.</p>\r
+<p>This is used to avoid unnecessary false hits when <tt>git-diff-files</tt> is\r
+run after <tt>git-read-tree</tt>.</p>\r
+<h3>Two Tree Merge</h3>\r
+<p>Typically, this is invoked as <tt>git-read-tree -m $H $M</tt>, where $H\r
+is the head commit of the current repository, and $M is the head\r
+of a foreign tree, which is simply ahead of $H (i.e. we are in a\r
+fast forward situation).</p>\r
+<p>When two trees are specified, the user is telling git-read-tree\r
+the following:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+The current index and work tree is derived from $H, but\r
+        the user may have local changes in them since $H;\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The user wants to fast-forward to $M.\r
+</p>\r
+</li>\r
+</ol>\r
+<p>In this case, the <tt>git-read-tree -m $H $M</tt> command makes sure\r
+that no local change is lost as the result of this "merge".\r
+Here are the "carry forward" rules:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>  I (index)           H        M        Result\r
+ -------------------------------------------------------\r
+0 nothing             nothing  nothing  (does not happen)\r
+1 nothing             nothing  exists   use M\r
+2 nothing             exists   nothing  remove path from index\r
+3 nothing             exists   exists   use M</tt></pre>\r
+</div></div>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>  clean I==H  I==M\r
+ ------------------\r
+4 yes   N/A   N/A     nothing  nothing  keep index\r
+5 no    N/A   N/A     nothing  nothing  keep index</tt></pre>\r
+</div></div>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>6 yes   N/A   yes     nothing  exists   keep index\r
+7 no    N/A   yes     nothing  exists   keep index\r
+8 yes   N/A   no      nothing  exists   fail\r
+9 no    N/A   no      nothing  exists   fail</tt></pre>\r
+</div></div>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>10 yes   yes   N/A     exists   nothing  remove path from index\r
+11 no    yes   N/A     exists   nothing  fail\r
+12 yes   no    N/A     exists   nothing  fail\r
+13 no    no    N/A     exists   nothing  fail</tt></pre>\r
+</div></div>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>   clean (H=M)\r
+  ------\r
+14 yes                 exists   exists   keep index\r
+15 no                  exists   exists   keep index</tt></pre>\r
+</div></div>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>   clean I==H  I==M (H!=M)\r
+  ------------------\r
+16 yes   no    no      exists   exists   fail\r
+17 no    no    no      exists   exists   fail\r
+18 yes   no    yes     exists   exists   keep index\r
+19 no    no    yes     exists   exists   keep index\r
+20 yes   yes   no      exists   exists   use M\r
+21 no    yes   no      exists   exists   fail</tt></pre>\r
+</div></div>\r
+<p>In all "keep index" cases, the index entry stays as in the\r
+original index file.  If the entry were not up to date,\r
+git-read-tree keeps the copy in the work tree intact when\r
+operating under the -u flag.</p>\r
+<p>When this form of git-read-tree returns successfully, you can\r
+see what "local changes" you made are carried forward by running\r
+<tt>git-diff-index --cached $M</tt>.  Note that this does not\r
+necessarily match <tt>git-diff-index --cached $H</tt> would have\r
+produced before such a two tree merge.  This is because of cases\r
+18 and 19 --- if you already had the changes in $M (e.g. maybe\r
+you picked it up via e-mail in a patch form), <tt>git-diff-index\r
+--cached $H</tt> would have told you about the change before this\r
+merge, but it would not show in <tt>git-diff-index --cached $M</tt>\r
+output after two-tree merge.</p>\r
+<h3>3-Way Merge</h3>\r
+<p>Each "index" entry has two bits worth of "stage" state. stage 0 is the\r
+normal one, and is the only one you'd see in any kind of normal use.</p>\r
+<p>However, when you do <tt>git-read-tree</tt> with three trees, the "stage"\r
+starts out at 1.</p>\r
+<p>This means that you can do</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-read-tree -m &lt;tree1&gt; &lt;tree2&gt; &lt;tree3&gt;</tt></pre>\r
+</div></div>\r
+<p>and you will end up with an index with all of the &lt;tree1&gt; entries in\r
+"stage1", all of the &lt;tree2&gt; entries in "stage2" and all of the\r
+&lt;tree3&gt; entries in "stage3".  When performing a merge of another\r
+branch into the current branch, we use the common ancestor tree\r
+as &lt;tree1&gt;, the current branch head as &lt;tree2&gt;, and the other\r
+branch head as &lt;tree3&gt;.</p>\r
+<p>Furthermore, <tt>git-read-tree</tt> has special-case logic that says: if you see\r
+a file that matches in all respects in the following states, it\r
+"collapses" back to "stage0":</p>\r
+<ul>\r
+<li>\r
+<p>\r
+stage 2 and 3 are the same; take one or the other (it makes no\r
+     difference - the same work has been done on our branch in\r
+     stage 2 and their branch in stage 3)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+stage 1 and stage 2 are the same and stage 3 is different; take\r
+     stage 3 (our branch in stage 2 did not do anything since the\r
+     ancestor in stage 1 while their branch in stage 3 worked on\r
+     it)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+stage 1 and stage 3 are the same and stage 2 is different take\r
+     stage 2 (we did something while they did nothing)\r
+</p>\r
+</li>\r
+</ul>\r
+<p>The <tt>git-write-tree</tt> command refuses to write a nonsensical tree, and it\r
+will complain about unmerged entries if it sees a single entry that is not\r
+stage 0.</p>\r
+<p>Ok, this all sounds like a collection of totally nonsensical rules,\r
+but it's actually exactly what you want in order to do a fast\r
+merge. The different stages represent the "result tree" (stage 0, aka\r
+"merged"), the original tree (stage 1, aka "orig"), and the two trees\r
+you are trying to merge (stage 2 and 3 respectively).</p>\r
+<p>The order of stages 1, 2 and 3 (hence the order of three\r
+&lt;tree-ish&gt; command line arguments) are significant when you\r
+start a 3-way merge with an index file that is already\r
+populated.  Here is an outline of how the algorithm works:</p>\r
+<ul>\r
+<li>\r
+<p>\r
+if a file exists in identical format in all three trees, it will\r
+  automatically collapse to "merged" state by git-read-tree.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a file that has _any_ difference what-so-ever in the three trees\r
+  will stay as separate entries in the index. It's up to "porcelain\r
+  policy" to determine how to remove the non-0 stages, and insert a\r
+  merged version.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+the index file saves and restores with all this information, so you\r
+  can merge things incrementally, but as long as it has entries in\r
+  stages 1/2/3 (ie "unmerged entries") you can't write the result. So\r
+  now the merge algorithm ends up being really simple:\r
+</p>\r
+<ul>\r
+<li>\r
+<p>\r
+you walk the index in order, and ignore all entries of stage 0,\r
+    since they've already been done.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+if you find a "stage1", but no matching "stage2" or "stage3", you\r
+    know it's been removed from both trees (it only existed in the\r
+    original tree), and you remove that entry.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+if you find a matching "stage2" and "stage3" tree, you remove one\r
+    of them, and turn the other into a "stage0" entry. Remove any\r
+    matching "stage1" entry if it exists too.  .. all the normal\r
+    trivial rules ..\r
+</p>\r
+</li>\r
+</ul>\r
+</li>\r
+</ul>\r
+<p>You would normally use <tt>git-merge-index</tt> with supplied\r
+<tt>git-merge-one-file</tt> to do this last step.  The script updates\r
+the files in the working tree as it merges each path and at the\r
+end of a successful merge.</p>\r
+<p>When you start a 3-way merge with an index file that is already\r
+populated, it is assumed that it represents the state of the\r
+files in your work tree, and you can even have files with\r
+changes unrecorded in the index file.  It is further assumed\r
+that this state is "derived" from the stage 2 tree.  The 3-way\r
+merge refuses to run if it finds an entry in the original index\r
+file that does not match stage 2.</p>\r
+<p>This is done to prevent you from losing your work-in-progress\r
+changes, and mixing your random changes in an unrelated merge\r
+commit.  To illustrate, suppose you start from what has been\r
+commited last to your repository:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ JC=`git-rev-parse --verify "HEAD^0"`\r
+$ git-checkout-index -f -u -a $JC</tt></pre>\r
+</div></div>\r
+<p>You do random edits, without running git-update-index.  And then\r
+you notice that the tip of your "upstream" tree has advanced\r
+since you pulled from him:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-fetch git://.... linus\r
+$ LT=`cat .git/FETCH_HEAD`</tt></pre>\r
+</div></div>\r
+<p>Your work tree is still based on your HEAD ($JC), but you have\r
+some edits since.  Three-way merge makes sure that you have not\r
+added or modified index entries since $JC, and if you haven't,\r
+then does the right thing.  So with the following sequence:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-read-tree -m -u `git-merge-base $JC $LT` $JC $LT\r
+$ git-merge-index git-merge-one-file -a\r
+$ echo "Merge with Linus" | \\r
+  git-commit-tree `git-write-tree` -p $JC -p $LT</tt></pre>\r
+</div></div>\r
+<p>what you would commit is a pure merge between $JC and $LT without\r
+your work-in-progress changes, and your work tree would be\r
+updated to the result of the merge.</p>\r
+<p>However, if you have local changes in the working tree that\r
+would be overwritten by this merge,<tt>git-read-tree</tt> will refuse\r
+to run to prevent your changes from being lost.</p>\r
+<p>In other words, there is no need to worry about what exists only\r
+in the working tree.  When you have local changes in a part of\r
+the project that is not involved in the merge, your changes do\r
+not interfere with the merge, and are kept intact.  When they\r
+<strong>do</strong> interfere, the merge does not even start (<tt>git-read-tree</tt>\r
+complains loudly and fails without modifying anything).  In such\r
+a case, you can simply continue doing what you were in the\r
+middle of doing, and when your working tree is ready (i.e. you\r
+have finished your work-in-progress), attempt the merge again.</p>\r
+</div>\r
+<h2>See Also</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-write-tree.html">git-write-tree(1)</a>; <a href="git-ls-files.html">git-ls-files(1)</a></p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:31 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-read-tree.txt b/git-read-tree.txt
new file mode 100644 (file)
index 0000000..6fbd6d9
--- /dev/null
@@ -0,0 +1,310 @@
+git-read-tree(1)
+================
+
+NAME
+----
+git-read-tree - Reads tree information into the index
+
+
+SYNOPSIS
+--------
+'git-read-tree' (<tree-ish> | [[-m | --reset] [-u | -i]] <tree-ish1> [<tree-ish2> [<tree-ish3>]])
+
+
+DESCRIPTION
+-----------
+Reads the tree information given by <tree-ish> into the index,
+but does not actually *update* any of the files it "caches". (see:
+gitlink:git-checkout-index[1])
+
+Optionally, it can merge a tree into the index, perform a
+fast-forward (i.e. 2-way) merge, or a 3-way merge, with the `-m`
+flag.  When used with `-m`, the `-u` flag causes it to also update
+the files in the work tree with the result of the merge.
+
+Trivial merges are done by `git-read-tree` itself.  Only conflicting paths
+will be in unmerged state when `git-read-tree` returns.
+
+OPTIONS
+-------
+-m::
+       Perform a merge, not just a read.  The command will
+       refuse to run if your index file has unmerged entries,
+       indicating that you have not finished previous merge you
+       started.
+
+--reset::
+        Same as -m, except that unmerged entries are discarded
+        instead of failing.
+
+-u::
+       After a successful merge, update the files in the work
+       tree with the result of the merge.
+
+-i::
+       Usually a merge requires the index file as well as the
+       files in the working tree are up to date with the
+       current head commit, in order not to lose local
+       changes.  This flag disables the check with the working
+       tree and is meant to be used when creating a merge of
+       trees that are not directly related to the current
+       working tree status into a temporary index file.
+
+<tree-ish#>::
+       The id of the tree object(s) to be read/merged.
+
+
+Merging
+-------
+If `-m` is specified, `git-read-tree` can perform 3 kinds of
+merge, a single tree merge if only 1 tree is given, a
+fast-forward merge with 2 trees, or a 3-way merge if 3 trees are
+provided.
+
+
+Single Tree Merge
+~~~~~~~~~~~~~~~~~
+If only 1 tree is specified, git-read-tree operates as if the user did not
+specify `-m`, except that if the original index has an entry for a
+given pathname, and the contents of the path matches with the tree
+being read, the stat info from the index is used. (In other words, the
+index's stat()s take precedence over the merged tree's).
+
+That means that if you do a `git-read-tree -m <newtree>` followed by a
+`git-checkout-index -f -u -a`, the `git-checkout-index` only checks out
+the stuff that really changed.
+
+This is used to avoid unnecessary false hits when `git-diff-files` is
+run after `git-read-tree`.
+
+
+Two Tree Merge
+~~~~~~~~~~~~~~
+
+Typically, this is invoked as `git-read-tree -m $H $M`, where $H
+is the head commit of the current repository, and $M is the head
+of a foreign tree, which is simply ahead of $H (i.e. we are in a
+fast forward situation).
+
+When two trees are specified, the user is telling git-read-tree
+the following:
+
+     1. The current index and work tree is derived from $H, but
+        the user may have local changes in them since $H;
+
+     2. The user wants to fast-forward to $M.
+
+In this case, the `git-read-tree -m $H $M` command makes sure
+that no local change is lost as the result of this "merge".
+Here are the "carry forward" rules:
+
+        I (index)           H        M        Result
+       -------------------------------------------------------
+      0 nothing             nothing  nothing  (does not happen)
+      1 nothing             nothing  exists   use M
+      2 nothing             exists   nothing  remove path from index
+      3 nothing             exists   exists   use M
+
+        clean I==H  I==M
+       ------------------
+      4 yes   N/A   N/A     nothing  nothing  keep index
+      5 no    N/A   N/A     nothing  nothing  keep index
+
+      6 yes   N/A   yes     nothing  exists   keep index
+      7 no    N/A   yes     nothing  exists   keep index
+      8 yes   N/A   no      nothing  exists   fail
+      9 no    N/A   no      nothing  exists   fail
+
+     10 yes   yes   N/A     exists   nothing  remove path from index
+     11 no    yes   N/A     exists   nothing  fail
+     12 yes   no    N/A     exists   nothing  fail
+     13 no    no    N/A     exists   nothing  fail
+
+        clean (H=M)
+       ------
+     14 yes                 exists   exists   keep index
+     15 no                  exists   exists   keep index
+
+        clean I==H  I==M (H!=M)
+       ------------------
+     16 yes   no    no      exists   exists   fail
+     17 no    no    no      exists   exists   fail
+     18 yes   no    yes     exists   exists   keep index
+     19 no    no    yes     exists   exists   keep index
+     20 yes   yes   no      exists   exists   use M
+     21 no    yes   no      exists   exists   fail
+
+In all "keep index" cases, the index entry stays as in the
+original index file.  If the entry were not up to date,
+git-read-tree keeps the copy in the work tree intact when
+operating under the -u flag.
+
+When this form of git-read-tree returns successfully, you can
+see what "local changes" you made are carried forward by running
+`git-diff-index --cached $M`.  Note that this does not
+necessarily match `git-diff-index --cached $H` would have
+produced before such a two tree merge.  This is because of cases
+18 and 19 --- if you already had the changes in $M (e.g. maybe
+you picked it up via e-mail in a patch form), `git-diff-index
+--cached $H` would have told you about the change before this
+merge, but it would not show in `git-diff-index --cached $M`
+output after two-tree merge.
+
+
+3-Way Merge
+~~~~~~~~~~~
+Each "index" entry has two bits worth of "stage" state. stage 0 is the
+normal one, and is the only one you'd see in any kind of normal use.
+
+However, when you do `git-read-tree` with three trees, the "stage"
+starts out at 1.
+
+This means that you can do
+
+----------------
+$ git-read-tree -m <tree1> <tree2> <tree3>
+----------------
+
+and you will end up with an index with all of the <tree1> entries in
+"stage1", all of the <tree2> entries in "stage2" and all of the
+<tree3> entries in "stage3".  When performing a merge of another
+branch into the current branch, we use the common ancestor tree
+as <tree1>, the current branch head as <tree2>, and the other
+branch head as <tree3>.
+
+Furthermore, `git-read-tree` has special-case logic that says: if you see
+a file that matches in all respects in the following states, it
+"collapses" back to "stage0":
+
+   - stage 2 and 3 are the same; take one or the other (it makes no
+     difference - the same work has been done on our branch in
+     stage 2 and their branch in stage 3)
+
+   - stage 1 and stage 2 are the same and stage 3 is different; take
+     stage 3 (our branch in stage 2 did not do anything since the
+     ancestor in stage 1 while their branch in stage 3 worked on
+     it)
+
+   - stage 1 and stage 3 are the same and stage 2 is different take
+     stage 2 (we did something while they did nothing)
+
+The `git-write-tree` command refuses to write a nonsensical tree, and it
+will complain about unmerged entries if it sees a single entry that is not
+stage 0.
+
+Ok, this all sounds like a collection of totally nonsensical rules,
+but it's actually exactly what you want in order to do a fast
+merge. The different stages represent the "result tree" (stage 0, aka
+"merged"), the original tree (stage 1, aka "orig"), and the two trees
+you are trying to merge (stage 2 and 3 respectively).
+
+The order of stages 1, 2 and 3 (hence the order of three
+<tree-ish> command line arguments) are significant when you
+start a 3-way merge with an index file that is already
+populated.  Here is an outline of how the algorithm works:
+
+- if a file exists in identical format in all three trees, it will
+  automatically collapse to "merged" state by git-read-tree.
+
+- a file that has _any_ difference what-so-ever in the three trees
+  will stay as separate entries in the index. It's up to "porcelain
+  policy" to determine how to remove the non-0 stages, and insert a
+  merged version.
+
+- the index file saves and restores with all this information, so you
+  can merge things incrementally, but as long as it has entries in
+  stages 1/2/3 (ie "unmerged entries") you can't write the result. So
+  now the merge algorithm ends up being really simple:
+
+  * you walk the index in order, and ignore all entries of stage 0,
+    since they've already been done.
+
+  * if you find a "stage1", but no matching "stage2" or "stage3", you
+    know it's been removed from both trees (it only existed in the
+    original tree), and you remove that entry.
+
+  * if you find a matching "stage2" and "stage3" tree, you remove one
+    of them, and turn the other into a "stage0" entry. Remove any
+    matching "stage1" entry if it exists too.  .. all the normal
+    trivial rules ..
+
+You would normally use `git-merge-index` with supplied
+`git-merge-one-file` to do this last step.  The script updates
+the files in the working tree as it merges each path and at the
+end of a successful merge.
+
+When you start a 3-way merge with an index file that is already
+populated, it is assumed that it represents the state of the
+files in your work tree, and you can even have files with
+changes unrecorded in the index file.  It is further assumed
+that this state is "derived" from the stage 2 tree.  The 3-way
+merge refuses to run if it finds an entry in the original index
+file that does not match stage 2.
+
+This is done to prevent you from losing your work-in-progress
+changes, and mixing your random changes in an unrelated merge
+commit.  To illustrate, suppose you start from what has been
+commited last to your repository:
+
+----------------
+$ JC=`git-rev-parse --verify "HEAD^0"`
+$ git-checkout-index -f -u -a $JC
+----------------
+
+You do random edits, without running git-update-index.  And then
+you notice that the tip of your "upstream" tree has advanced
+since you pulled from him:
+
+----------------
+$ git-fetch git://.... linus
+$ LT=`cat .git/FETCH_HEAD`
+----------------
+
+Your work tree is still based on your HEAD ($JC), but you have
+some edits since.  Three-way merge makes sure that you have not
+added or modified index entries since $JC, and if you haven't,
+then does the right thing.  So with the following sequence:
+
+----------------
+$ git-read-tree -m -u `git-merge-base $JC $LT` $JC $LT
+$ git-merge-index git-merge-one-file -a
+$ echo "Merge with Linus" | \
+  git-commit-tree `git-write-tree` -p $JC -p $LT
+----------------
+
+what you would commit is a pure merge between $JC and $LT without
+your work-in-progress changes, and your work tree would be
+updated to the result of the merge.
+
+However, if you have local changes in the working tree that
+would be overwritten by this merge,`git-read-tree` will refuse
+to run to prevent your changes from being lost.
+
+In other words, there is no need to worry about what exists only
+in the working tree.  When you have local changes in a part of
+the project that is not involved in the merge, your changes do
+not interfere with the merge, and are kept intact.  When they
+*do* interfere, the merge does not even start (`git-read-tree`
+complains loudly and fails without modifying anything).  In such
+a case, you can simply continue doing what you were in the
+middle of doing, and when your working tree is ready (i.e. you
+have finished your work-in-progress), attempt the merge again.
+
+
+See Also
+--------
+gitlink:git-write-tree[1]; gitlink:git-ls-files[1]
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-rebase.html b/git-rebase.html
new file mode 100644 (file)
index 0000000..bf64873
--- /dev/null
@@ -0,0 +1,320 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-rebase(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-rebase(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-rebase -\r
+   Rebase local commits to new upstream head.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-rebase</em> &lt;upstream&gt; [&lt;head&gt;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Rebases local commits to the new head of the upstream tree.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;upstream&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Upstream branch to compare against.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;head&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Working branch; defaults to HEAD.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:32 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-rebase.txt b/git-rebase.txt
new file mode 100644 (file)
index 0000000..16c158f
--- /dev/null
@@ -0,0 +1,35 @@
+git-rebase(1)
+=============
+
+NAME
+----
+git-rebase - Rebase local commits to new upstream head.
+
+SYNOPSIS
+--------
+'git-rebase' <upstream> [<head>]
+
+DESCRIPTION
+-----------
+Rebases local commits to the new head of the upstream tree.
+
+OPTIONS
+-------
+<upstream>::
+       Upstream branch to compare against.
+
+<head>::
+       Working branch; defaults to HEAD.
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-receive-pack.html b/git-receive-pack.html
new file mode 100644 (file)
index 0000000..820c8a5
--- /dev/null
@@ -0,0 +1,373 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-receive-pack(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-receive-pack(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-receive-pack -\r
+   Receive what is pushed into it\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-receive-pack</em> &lt;directory&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Invoked by <em>git-send-pack</em> and updates the repository with the\r
+information fed from the remote end.</p>\r
+<p>This command is usually not invoked directly by the end user.\r
+The UI for the protocol is on the <em>git-send-pack</em> side, and the\r
+program pair is meant to be used to push updates to remote\r
+repository.  For pull operations, see <em>git-fetch-pack</em> and\r
+<em>git-clone-pack</em>.</p>\r
+<p>The command allows for creation and fast forwarding of sha1 refs\r
+(heads/tags) on the remote end (strictly speaking, it is the\r
+local end receive-pack runs, but to the user who is sitting at\r
+the send-pack end, it is updating the remote.  Confused?)</p>\r
+<p>Before each ref is updated, if $GIT_DIR/hooks/update file exists\r
+and executable, it is called with three parameters:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>$GIT_DIR/hooks/update refname sha1-old sha1-new</tt></pre>\r
+</div></div>\r
+<p>The refname parameter is relative to $GIT_DIR; e.g. for the\r
+master head this is "refs/heads/master".  Two sha1 are the\r
+object names for the refname before and after the update.  Note\r
+that the hook is called before the refname is updated, so either\r
+should match what is recorded in refname.</p>\r
+<p>The hook should exit with non-zero status if it wants to\r
+disallow updating the named ref.  Otherwise it should exit with\r
+zero.</p>\r
+<p>Using this hook, it is easy to generate mails on updates to\r
+the local repository. This example script sends a mail with\r
+the commits pushed to the repository:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>#!/bin/sh\r
+# mail out commit update information.\r
+if expr "$2" : '0*$' &gt;/dev/null\r
+then\r
+        echo "Created a new ref, with the following commits:"\r
+        git-rev-list --pretty "$2"\r
+else\r
+        echo "New commits:"\r
+        git-rev-list --pretty "$3" "^$2"\r
+fi |\r
+mail -s "Changes to ref $1" commit-list@mydomain\r
+exit 0</tt></pre>\r
+</div></div>\r
+<p>Another hook $GIT_DIR/hooks/post-update, if exists and\r
+executable, is called with the list of refs that have been\r
+updated.  This can be used to implement repository wide cleanup\r
+task if needed.  The exit code from this hook invocation is\r
+ignored; the only thing left for git-receive-pack to do at that\r
+point is to exit itself anyway.  This hook can be used, for\r
+example, to run "git-update-server-info" if the repository is\r
+packed and is served via a dumb transport.</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>#!/bin/sh\r
+exec git-update-server-info</tt></pre>\r
+</div></div>\r
+<p>There are other real-world examples of using update and\r
+post-update hooks found in the Documentation/howto directory.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;directory&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The repository to sync into.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>SEE ALSO</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-send-pack.html">git-send-pack(1)</a></p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:33 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-receive-pack.txt b/git-receive-pack.txt
new file mode 100644 (file)
index 0000000..60debca
--- /dev/null
@@ -0,0 +1,99 @@
+git-receive-pack(1)
+===================
+
+NAME
+----
+git-receive-pack - Receive what is pushed into it
+
+
+SYNOPSIS
+--------
+'git-receive-pack' <directory>
+
+DESCRIPTION
+-----------
+Invoked by 'git-send-pack' and updates the repository with the
+information fed from the remote end.
+
+This command is usually not invoked directly by the end user.
+The UI for the protocol is on the 'git-send-pack' side, and the
+program pair is meant to be used to push updates to remote
+repository.  For pull operations, see 'git-fetch-pack' and
+'git-clone-pack'.
+
+The command allows for creation and fast forwarding of sha1 refs
+(heads/tags) on the remote end (strictly speaking, it is the
+local end receive-pack runs, but to the user who is sitting at
+the send-pack end, it is updating the remote.  Confused?)
+
+Before each ref is updated, if $GIT_DIR/hooks/update file exists
+and executable, it is called with three parameters:
+
+       $GIT_DIR/hooks/update refname sha1-old sha1-new
+
+The refname parameter is relative to $GIT_DIR; e.g. for the
+master head this is "refs/heads/master".  Two sha1 are the
+object names for the refname before and after the update.  Note
+that the hook is called before the refname is updated, so either
+sha1-old is 0{40} (meaning there is no such ref yet), or it
+should match what is recorded in refname.
+
+The hook should exit with non-zero status if it wants to
+disallow updating the named ref.  Otherwise it should exit with
+zero.
+
+Using this hook, it is easy to generate mails on updates to
+the local repository. This example script sends a mail with
+the commits pushed to the repository:
+
+       #!/bin/sh
+       # mail out commit update information.
+       if expr "$2" : '0*$' >/dev/null
+       then
+               echo "Created a new ref, with the following commits:"
+               git-rev-list --pretty "$2"
+       else
+               echo "New commits:"
+               git-rev-list --pretty "$3" "^$2"
+       fi |
+       mail -s "Changes to ref $1" commit-list@mydomain
+       exit 0
+
+Another hook $GIT_DIR/hooks/post-update, if exists and
+executable, is called with the list of refs that have been
+updated.  This can be used to implement repository wide cleanup
+task if needed.  The exit code from this hook invocation is
+ignored; the only thing left for git-receive-pack to do at that
+point is to exit itself anyway.  This hook can be used, for
+example, to run "git-update-server-info" if the repository is
+packed and is served via a dumb transport.
+
+       #!/bin/sh
+       exec git-update-server-info
+
+There are other real-world examples of using update and
+post-update hooks found in the Documentation/howto directory.
+
+
+OPTIONS
+-------
+<directory>::
+       The repository to sync into.
+
+
+SEE ALSO
+--------
+gitlink:git-send-pack[1]
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano.
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-relink.html b/git-relink.html
new file mode 100644 (file)
index 0000000..9719718
--- /dev/null
@@ -0,0 +1,322 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-relink(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-relink(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-relink -\r
+   Hardlink common objects in local repositories.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-relink</em> [--safe] &lt;dir&gt; &lt;dir&gt; [&lt;dir&gt;]*</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>This will scan 2 or more object repositories and look for common objects, check\r
+if they are hardlinked, and replace one with a hardlink to the other if not.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--safe\r
+</dt>\r
+<dd>\r
+<p>\r
+        Stops if two objects with the same hash exist but have different sizes.\r
+        Default is to warn and continue.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;dir&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Directories containing a .git/objects/ subdirectory.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Ryan Anderson &lt;ryan@michonline.com&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:33 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-relink.txt b/git-relink.txt
new file mode 100644 (file)
index 0000000..6240535
--- /dev/null
@@ -0,0 +1,37 @@
+git-relink(1)
+=============
+
+NAME
+----
+git-relink - Hardlink common objects in local repositories.
+
+SYNOPSIS
+--------
+'git-relink' [--safe] <dir> <dir> [<dir>]\*
+
+DESCRIPTION
+-----------
+This will scan 2 or more object repositories and look for common objects, check
+if they are hardlinked, and replace one with a hardlink to the other if not.
+
+OPTIONS
+-------
+--safe::
+       Stops if two objects with the same hash exist but have different sizes.
+       Default is to warn and continue.
+
+<dir>::
+       Directories containing a .git/objects/ subdirectory.
+
+Author
+------
+Written by Ryan Anderson <ryan@michonline.com>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-repack.html b/git-repack.html
new file mode 100644 (file)
index 0000000..4066cb8
--- /dev/null
@@ -0,0 +1,355 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-repack(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-repack(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-repack -\r
+   Script used to pack a repository from a collection of objects into pack files.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-repack</em> [-a] [-d] [-l] [-n]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>This script is used to combine all objects that do not currently\r
+reside in a "pack", into a pack.</p>\r
+<p>A pack is a collection of objects, individually compressed, with\r
+delta compression applied, stored in a single file, with an\r
+associated index file.</p>\r
+<p>Packs are used to reduce the load on mirror systems, backup\r
+engines, disk storage, etc.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-a\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of incrementally packing the unpacked objects,\r
+        pack everything available into a single pack.\r
+        Especially useful when packing a repository that is used\r
+        for a private development and there no need to worry\r
+        about people fetching via dumb protocols from it.  Use\r
+        with <em>-d</em>.\r
+</p>\r
+</dd>\r
+<dt>\r
+-d\r
+</dt>\r
+<dd>\r
+<p>\r
+        After packing, if the newly created packs make some\r
+        existing packs redundant, remove the redundant packs.\r
+</p>\r
+</dd>\r
+<dt>\r
+-l\r
+</dt>\r
+<dd>\r
+<p>\r
+        Pass the <tt>--local</tt> option to <tt>git pack-objects</tt>, see\r
+        <a href="git-pack-objects.html">git-pack-objects(1)</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+-n\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not update the server information with\r
+        <tt>git update-server-info</tt>.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Ryan Anderson &lt;ryan@michonline.com&gt;</p>\r
+</div>\r
+<h2>See-Also</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-pack-objects.html">git-pack-objects(1)</a>\r
+<a href="git-prune-packed.html">git-prune-packed(1)</a></p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:34 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-repack.txt b/git-repack.txt
new file mode 100644 (file)
index 0000000..9060fe8
--- /dev/null
@@ -0,0 +1,66 @@
+git-repack(1)
+=============
+
+NAME
+----
+git-repack - Script used to pack a repository from a collection of
+objects into pack files.
+
+
+SYNOPSIS
+--------
+'git-repack' [-a] [-d] [-l] [-n]
+
+DESCRIPTION
+-----------
+
+This script is used to combine all objects that do not currently
+reside in a "pack", into a pack.
+
+A pack is a collection of objects, individually compressed, with
+delta compression applied, stored in a single file, with an
+associated index file.
+
+Packs are used to reduce the load on mirror systems, backup
+engines, disk storage, etc.
+
+OPTIONS
+-------
+
+-a::
+       Instead of incrementally packing the unpacked objects,
+       pack everything available into a single pack.
+       Especially useful when packing a repository that is used
+       for a private development and there no need to worry
+       about people fetching via dumb protocols from it.  Use
+       with '-d'.
+
+-d::
+       After packing, if the newly created packs make some
+       existing packs redundant, remove the redundant packs.
+
+-l::
+        Pass the `--local` option to `git pack-objects`, see
+        gitlink:git-pack-objects[1].
+
+-n::
+        Do not update the server information with
+        `git update-server-info`.
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Ryan Anderson <ryan@michonline.com>
+
+See-Also
+--------
+gitlink:git-pack-objects[1]
+gitlink:git-prune-packed[1]
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-repo-config.html b/git-repo-config.html
new file mode 100644 (file)
index 0000000..57d7ba5
--- /dev/null
@@ -0,0 +1,483 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-repo-config(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-repo-config(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-repo-config -\r
+   Get and set options in .git/config.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-repo-config</em> name [value [value_regex]]\r
+<em>git-repo-config</em> --replace-all name [value [value_regex]]\r
+<em>git-repo-config</em> --get name [value_regex]\r
+<em>git-repo-config</em> --get-all name [value_regex]\r
+<em>git-repo-config</em> --unset name [value_regex]\r
+<em>git-repo-config</em> --unset-all name [value_regex]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>You can query/set/replace/unset options with this command. The name is\r
+actually the section and the key separated by a dot, and the value will be\r
+escaped.</p>\r
+<p>If you want to set/unset an option which can occor on multiple lines, you\r
+should provide a POSIX regex for the value. If you want to handle the lines\r
+<strong>not</strong> matching the regex, just prepend a single exlamation mark in front\r
+(see EXAMPLES).</p>\r
+<p>This command will fail if</p>\r
+<ol>\r
+<li>\r
+<p>\r
+.git/config is invalid,\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+.git/config can not be written to,\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+no section was provided,\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+the section or key is invalid,\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+you try to unset an option which does not exist, or\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+you try to unset/set an option for which multiple lines match.\r
+</p>\r
+</li>\r
+</ol>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--replace-all\r
+</dt>\r
+<dd>\r
+<p>\r
+        Default behaviour is to replace at most one line. This replaces\r
+        all lines matching the key (and optionally the value_regex)\r
+</p>\r
+</dd>\r
+<dt>\r
+--get\r
+</dt>\r
+<dd>\r
+<p>\r
+        Get the value for a given key (optionally filtered by a regex\r
+        matching the value).\r
+</p>\r
+</dd>\r
+<dt>\r
+--get-all\r
+</dt>\r
+<dd>\r
+<p>\r
+        Like get, but does not fail if the number of values for the key\r
+        is not exactly one.\r
+</p>\r
+</dd>\r
+<dt>\r
+--unset\r
+</dt>\r
+<dd>\r
+<p>\r
+        Remove the line matching the key from .git/config.\r
+</p>\r
+</dd>\r
+<dt>\r
+--unset-all\r
+</dt>\r
+<dd>\r
+<p>\r
+        Remove all matching lines from .git/config.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>EXAMPLE</h2>\r
+<div class="sectionbody">\r
+<p>Given a .git/config like this:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>#\r
+# This is the config file, and\r
+# a '#' or ';' character indicates\r
+# a comment\r
+#</tt></pre>\r
+</div></div>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>; core variables\r
+[core]\r
+        ; Don't trust file modes\r
+        filemode = false</tt></pre>\r
+</div></div>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>; Our diff algorithm\r
+[diff]\r
+        external = "/usr/local/bin/gnu-diff -u"\r
+        renames = true</tt></pre>\r
+</div></div>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>; Proxy settings\r
+[proxy]\r
+        command="ssh" for "ssh://kernel.org/"\r
+        command="proxy-command" for kernel.org\r
+        command="myprotocol-command" for "my://"\r
+        command=default-proxy ; for all the rest</tt></pre>\r
+</div></div>\r
+<p>you can set the filemode to true with</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>% git repo-config core.filemode true</tt></pre>\r
+</div></div>\r
+<p>The hypothetic proxy command entries actually have a postfix to discern\r
+to what URL they apply. Here is how to change the entry for kernel.org\r
+to "ssh".</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>% git repo-config proxy.command '"ssh" for kernel.org' 'for kernel.org$'</tt></pre>\r
+</div></div>\r
+<p>This makes sure that only the key/value pair for kernel.org is replaced.</p>\r
+<p>To delete the entry for renames, do</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>% git repo-config --unset diff.renames</tt></pre>\r
+</div></div>\r
+<p>If you want to delete an entry for a multivar (like proxy.command above),\r
+you have to provide a regex matching the value of exactly one line.</p>\r
+<p>To query the value for a given key, do</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>% git repo-config --get core.filemode</tt></pre>\r
+</div></div>\r
+<p>or</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>% git repo-config core.filemode</tt></pre>\r
+</div></div>\r
+<p>or, to query a multivar:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>% git repo-config --get proxy.command "for kernel.org$"</tt></pre>\r
+</div></div>\r
+<p>If you want to know all the values for a multivar, do:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>% git repo-config --get-all proxy.command</tt></pre>\r
+</div></div>\r
+<p>If you like to live dangerous, you can replace <strong>all</strong> proxy.commands by a\r
+new one with</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>% git repo-config --replace-all proxy.command ssh</tt></pre>\r
+</div></div>\r
+<p>However, if you really only want to replace the line for the default proxy,\r
+i.e. the one without a "for &#8230;" postfix, do something like this:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>% git repo-config proxy.command ssh '! for '</tt></pre>\r
+</div></div>\r
+<p>To actually match only values with an exclamation mark, you have to</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>% git repo-config section.key value '[!]'</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Johannes Schindelin &lt;Johannes.Schindelin@gmx.de&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Johannes Schindelin.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:35 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-repo-config.txt b/git-repo-config.txt
new file mode 100644 (file)
index 0000000..5eefe02
--- /dev/null
@@ -0,0 +1,170 @@
+git-repo-config(1)
+==================
+
+NAME
+----
+git-repo-config - Get and set options in .git/config.
+
+
+SYNOPSIS
+--------
+'git-repo-config' name [value [value_regex]]
+'git-repo-config' --replace-all name [value [value_regex]]
+'git-repo-config' --get name [value_regex]
+'git-repo-config' --get-all name [value_regex]
+'git-repo-config' --unset name [value_regex]
+'git-repo-config' --unset-all name [value_regex]
+
+DESCRIPTION
+-----------
+You can query/set/replace/unset options with this command. The name is
+actually the section and the key separated by a dot, and the value will be
+escaped.
+
+If you want to set/unset an option which can occor on multiple lines, you
+should provide a POSIX regex for the value. If you want to handle the lines
+*not* matching the regex, just prepend a single exlamation mark in front
+(see EXAMPLES).
+
+This command will fail if
+
+. .git/config is invalid,
+. .git/config can not be written to,
+. no section was provided,
+. the section or key is invalid,
+. you try to unset an option which does not exist, or
+. you try to unset/set an option for which multiple lines match.
+
+
+OPTIONS
+-------
+
+--replace-all::
+       Default behaviour is to replace at most one line. This replaces
+       all lines matching the key (and optionally the value_regex)
+
+--get::
+       Get the value for a given key (optionally filtered by a regex
+       matching the value).
+
+--get-all::
+       Like get, but does not fail if the number of values for the key
+       is not exactly one.
+
+--unset::
+       Remove the line matching the key from .git/config.
+
+--unset-all::
+       Remove all matching lines from .git/config.
+
+
+EXAMPLE
+-------
+
+Given a .git/config like this:
+
+       #
+       # This is the config file, and
+       # a '#' or ';' character indicates
+       # a comment
+       #
+
+       ; core variables
+       [core]
+               ; Don't trust file modes
+               filemode = false
+
+       ; Our diff algorithm
+       [diff]
+               external = "/usr/local/bin/gnu-diff -u"
+               renames = true
+
+       ; Proxy settings
+       [proxy]
+               command="ssh" for "ssh://kernel.org/"
+               command="proxy-command" for kernel.org
+               command="myprotocol-command" for "my://"
+               command=default-proxy ; for all the rest
+
+you can set the filemode to true with
+
+------------
+% git repo-config core.filemode true
+------------
+
+The hypothetic proxy command entries actually have a postfix to discern
+to what URL they apply. Here is how to change the entry for kernel.org
+to "ssh".
+
+------------
+% git repo-config proxy.command '"ssh" for kernel.org' 'for kernel.org$'
+------------
+
+This makes sure that only the key/value pair for kernel.org is replaced.
+
+To delete the entry for renames, do
+
+------------
+% git repo-config --unset diff.renames
+------------
+
+If you want to delete an entry for a multivar (like proxy.command above),
+you have to provide a regex matching the value of exactly one line.
+
+To query the value for a given key, do
+
+------------
+% git repo-config --get core.filemode
+------------
+
+or
+
+------------
+% git repo-config core.filemode
+------------
+
+or, to query a multivar:
+
+------------
+% git repo-config --get proxy.command "for kernel.org$"
+------------
+
+If you want to know all the values for a multivar, do:
+
+------------
+% git repo-config --get-all proxy.command
+------------
+
+If you like to live dangerous, you can replace *all* proxy.commands by a
+new one with
+
+------------
+% git repo-config --replace-all proxy.command ssh
+------------
+
+However, if you really only want to replace the line for the default proxy,
+i.e. the one without a "for ..." postfix, do something like this:
+
+------------
+% git repo-config proxy.command ssh '! for '
+------------
+
+To actually match only values with an exclamation mark, you have to
+
+------------
+% git repo-config section.key value '[!]'
+------------
+
+
+Author
+------
+Written by Johannes Schindelin <Johannes.Schindelin@gmx.de>
+
+Documentation
+--------------
+Documentation by Johannes Schindelin.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-request-pull.html b/git-request-pull.html
new file mode 100644 (file)
index 0000000..e953aaa
--- /dev/null
@@ -0,0 +1,329 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-request-pull(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-request-pull(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-request-pull -\r
+   Generates a summary of pending changes.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-request-pull</em> &lt;start&gt; &lt;url&gt; [&lt;end&gt;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Summarizes the changes between two commits to the standard output, and includes\r
+the given URL in the generated summary.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;start&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Commit to start at.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;url&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        URL to include in the summary.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;end&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Commit to send at; defaults to HEAD.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Ryan Anderson &lt;ryan@michonline.com&gt; and Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:36 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-request-pull.txt b/git-request-pull.txt
new file mode 100644 (file)
index 0000000..2463ec9
--- /dev/null
@@ -0,0 +1,40 @@
+git-request-pull(1)
+===================
+
+NAME
+----
+git-request-pull - Generates a summary of pending changes.
+
+SYNOPSIS
+--------
+'git-request-pull' <start> <url> [<end>]
+
+DESCRIPTION
+-----------
+
+Summarizes the changes between two commits to the standard output, and includes
+the given URL in the generated summary.
+
+OPTIONS
+-------
+<start>::
+       Commit to start at.
+
+<url>::
+       URL to include in the summary.
+
+<end>::
+       Commit to send at; defaults to HEAD.
+
+Author
+------
+Written by Ryan Anderson <ryan@michonline.com> and Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-reset.html b/git-reset.html
new file mode 100644 (file)
index 0000000..7cacfd2
--- /dev/null
@@ -0,0 +1,467 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-reset(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-reset(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-reset -\r
+   Reset current HEAD to the specified state.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-reset</em> [--mixed | --soft | --hard] [&lt;commit-ish&gt;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Sets the current head to the specified commit and optionally resets the\r
+index and working tree to match.</p>\r
+<p>This command is useful if you notice some small error in a recent\r
+commit (or set of commits) and want to redo that part without showing\r
+the undo in the history.</p>\r
+<p>If you want to undo a commit other than the latest on a branch,\r
+<a href="git-revert.html">git-revert(1)</a> is your friend.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--mixed\r
+</dt>\r
+<dd>\r
+<p>\r
+        Resets the index but not the working tree (ie, the changed files\r
+        are preserved but not marked for commit) and reports what has not\r
+        been updated. This is the default action.\r
+</p>\r
+</dd>\r
+<dt>\r
+--soft\r
+</dt>\r
+<dd>\r
+<p>\r
+        Does not touch the index file nor the working tree at all, but\r
+        requires them to be in a good order. This leaves all your changed\r
+        files "Updated but not checked in", as <a href="git-status.html">git-status(1)</a> would\r
+        put it.\r
+</p>\r
+</dd>\r
+<dt>\r
+--hard\r
+</dt>\r
+<dd>\r
+<p>\r
+        Matches the working tree and index to that of the tree being\r
+        switched to. Any changes to tracked files in the working tree\r
+        since &lt;commit-ish&gt; are lost.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;commit-ish&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Commit to make the current HEAD.\r
+</p>\r
+</dd>\r
+</dl>\r
+<h3>Examples</h3>\r
+<dl>\r
+<dt>\r
+Undo a commit and redo\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git commit ...\r
+$ git reset --soft HEAD^ <b>(1)</b>\r
+$ edit <b>(2)</b>\r
+$ git commit -a -c ORIG_HEAD <b>(3)</b>\r
+\r
+<b>(1)</b> This is most often done when you remembered what you\r
+just committed is incomplete, or you misspelled your commit\r
+message, or both.  Leaves working tree as it was before "reset".\r
+<b>(2)</b> make corrections to working tree files.\r
+<b>(3)</b> "reset" copies the old head to .git/ORIG_HEAD; redo the\r
+commit by starting with its log message.  If you do not need to\r
+edit the message further, you can give -C option instead.</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Undo commits permanently\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git commit ...\r
+$ git reset --hard HEAD~3 <b>(1)</b>\r
+\r
+<b>(1)</b> The last three commits (HEAD, HEAD^, and HEAD~2) were bad\r
+and you do not want to ever see them again.  Do *not* do this if\r
+you have already given these commits to somebody else.</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Undo a commit, making it a topic branch\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git branch topic/wip <b>(1)</b>\r
+$ git reset --hard HEAD~3 <b>(2)</b>\r
+$ git checkout topic/wip <b>(3)</b>\r
+\r
+<b>(1)</b> You have made some commits, but realize they were premature\r
+to be in the "master" branch.  You want to continue polishing\r
+them in a topic branch, so create "topic/wip" branch off of the\r
+current HEAD.\r
+<b>(2)</b> Rewind the master branch to get rid of those three commits.\r
+<b>(3)</b> Switch to "topic/wip" branch and keep working.</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Undo update-index\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ edit <b>(1)</b>\r
+$ git-update-index frotz.c filfre.c\r
+$ mailx <b>(2)</b>\r
+$ git reset <b>(3)</b>\r
+$ git pull git://info.example.com/ nitfol <b>(4)</b>\r
+\r
+<b>(1)</b> you are happily working on something, and find the changes\r
+in these files are in good order.  You do not want to see them\r
+when you run "git diff", because you plan to work on other files\r
+and changes with these files are distracting.\r
+<b>(2)</b> somebody asks you to pull, and the changes sounds worthy of merging.\r
+<b>(3)</b> however, you already dirtied the index (i.e. your index does\r
+not match the HEAD commit).  But you know the pull you are going\r
+to make does not affect frotz.c nor filfre.c, so you revert the\r
+index changes for these two files.  Your changes in working tree\r
+remain there.\r
+<b>(4)</b> then you can pull and merge, leaving frotz.c and filfre.c\r
+changes still in the working tree.</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+Undo a merge or pull\r
+</dt>\r
+<dd>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git pull <b>(1)</b>\r
+Trying really trivial in-index merge...\r
+fatal: Merge requires file-level merging\r
+Nope.\r
+...\r
+Auto-merging nitfol\r
+CONFLICT (content): Merge conflict in nitfol\r
+Automatic merge failed/prevented; fix up by hand\r
+$ git reset --hard <b>(2)</b>\r
+\r
+<b>(1)</b> try to update from the upstream resulted in a lot of\r
+conflicts; you were not ready to spend a lot of time merging\r
+right now, so you decide to do that later.\r
+<b>(2)</b> "pull" has not made merge commit, so "git reset --hard"\r
+which is a synonym for "git reset --hard HEAD" clears the mess\r
+from the index file and the working tree.\r
+\r
+$ git pull . topic/branch <b>(3)</b>\r
+Updating from 41223... to 13134...\r
+Fast forward\r
+$ git reset --hard ORIG_HEAD <b>(4)</b>\r
+\r
+<b>(3)</b> merge a topic branch into the current branch, which resulted\r
+in a fast forward.\r
+<b>(4)</b> but you decided that the topic branch is not ready for public\r
+consumption yet.  "pull" or "merge" always leaves the original\r
+tip of the current branch in ORIG_HEAD, so resetting hard to it\r
+brings your index file and the working tree back to that state,\r
+and resets the tip of the branch to that commit.</tt></pre>\r
+</div></div>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt; and Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:36 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-reset.txt b/git-reset.txt
new file mode 100644 (file)
index 0000000..c6a269b
--- /dev/null
@@ -0,0 +1,159 @@
+git-reset(1)
+============
+
+NAME
+----
+git-reset - Reset current HEAD to the specified state.
+
+SYNOPSIS
+--------
+'git-reset' [--mixed | --soft | --hard] [<commit-ish>]
+
+DESCRIPTION
+-----------
+Sets the current head to the specified commit and optionally resets the
+index and working tree to match.
+
+This command is useful if you notice some small error in a recent
+commit (or set of commits) and want to redo that part without showing
+the undo in the history.
+
+If you want to undo a commit other than the latest on a branch,
+gitlink:git-revert[1] is your friend.
+
+OPTIONS
+-------
+--mixed::
+       Resets the index but not the working tree (ie, the changed files
+       are preserved but not marked for commit) and reports what has not
+       been updated. This is the default action.
+
+--soft::
+       Does not touch the index file nor the working tree at all, but
+       requires them to be in a good order. This leaves all your changed
+       files "Updated but not checked in", as gitlink:git-status[1] would
+       put it.
+
+--hard::
+       Matches the working tree and index to that of the tree being
+       switched to. Any changes to tracked files in the working tree
+       since <commit-ish> are lost.
+
+<commit-ish>::
+       Commit to make the current HEAD.
+
+Examples
+~~~~~~~~
+
+Undo a commit and redo::
++
+------------
+$ git commit ...
+$ git reset --soft HEAD^ <1>
+$ edit <2>
+$ git commit -a -c ORIG_HEAD <3>
+
+<1> This is most often done when you remembered what you
+just committed is incomplete, or you misspelled your commit
+message, or both.  Leaves working tree as it was before "reset".
+<2> make corrections to working tree files.
+<3> "reset" copies the old head to .git/ORIG_HEAD; redo the
+commit by starting with its log message.  If you do not need to
+edit the message further, you can give -C option instead.
+------------
+
+Undo commits permanently::
++
+------------
+$ git commit ...
+$ git reset --hard HEAD~3 <1>
+
+<1> The last three commits (HEAD, HEAD^, and HEAD~2) were bad
+and you do not want to ever see them again.  Do *not* do this if
+you have already given these commits to somebody else.
+------------
+
+Undo a commit, making it a topic branch::
++
+------------
+$ git branch topic/wip <1>
+$ git reset --hard HEAD~3 <2>
+$ git checkout topic/wip <3>
+
+<1> You have made some commits, but realize they were premature
+to be in the "master" branch.  You want to continue polishing
+them in a topic branch, so create "topic/wip" branch off of the
+current HEAD.
+<2> Rewind the master branch to get rid of those three commits.
+<3> Switch to "topic/wip" branch and keep working.
+------------
+
+Undo update-index::
++
+------------
+$ edit <1>
+$ git-update-index frotz.c filfre.c
+$ mailx <2>
+$ git reset <3>
+$ git pull git://info.example.com/ nitfol <4>
+
+<1> you are happily working on something, and find the changes
+in these files are in good order.  You do not want to see them
+when you run "git diff", because you plan to work on other files
+and changes with these files are distracting.
+<2> somebody asks you to pull, and the changes sounds worthy of merging.
+<3> however, you already dirtied the index (i.e. your index does
+not match the HEAD commit).  But you know the pull you are going
+to make does not affect frotz.c nor filfre.c, so you revert the
+index changes for these two files.  Your changes in working tree
+remain there.
+<4> then you can pull and merge, leaving frotz.c and filfre.c
+changes still in the working tree.
+------------
+
+Undo a merge or pull::
++
+------------
+$ git pull <1>
+Trying really trivial in-index merge...
+fatal: Merge requires file-level merging
+Nope.
+...
+Auto-merging nitfol
+CONFLICT (content): Merge conflict in nitfol
+Automatic merge failed/prevented; fix up by hand
+$ git reset --hard <2>
+
+<1> try to update from the upstream resulted in a lot of
+conflicts; you were not ready to spend a lot of time merging
+right now, so you decide to do that later.
+<2> "pull" has not made merge commit, so "git reset --hard"
+which is a synonym for "git reset --hard HEAD" clears the mess
+from the index file and the working tree.
+
+$ git pull . topic/branch <3>
+Updating from 41223... to 13134...
+Fast forward
+$ git reset --hard ORIG_HEAD <4>
+
+<3> merge a topic branch into the current branch, which resulted
+in a fast forward.
+<4> but you decided that the topic branch is not ready for public
+consumption yet.  "pull" or "merge" always leaves the original
+tip of the current branch in ORIG_HEAD, so resetting hard to it
+brings your index file and the working tree back to that state,
+and resets the tip of the branch to that commit.
+------------
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net> and Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-resolve.html b/git-resolve.html
new file mode 100644 (file)
index 0000000..2e72a35
--- /dev/null
@@ -0,0 +1,305 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-resolve(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-resolve(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-resolve -\r
+   Merge two commits\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-resolve</em> &lt;current&gt; &lt;merged&gt; &lt;message&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Given two commits and a merge message, merge the &lt;merged&gt; commit\r
+into &lt;current&gt; commit, with the commit log message &lt;message&gt;.</p>\r
+<p>When &lt;current&gt; is a descendant of &lt;merged&gt;, or &lt;current&gt; is an\r
+ancestor of &lt;merged&gt;, no new commit is created and the &lt;message&gt;\r
+is ignored.  The former is informally called "already up to\r
+date", and the latter is often called "fast forward".</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt; and\r
+Dan Holmsand &lt;holmsand@gmail.com&gt;.</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:37 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-resolve.txt b/git-resolve.txt
new file mode 100644 (file)
index 0000000..4e57c2b
--- /dev/null
@@ -0,0 +1,36 @@
+git-resolve(1)
+==============
+
+NAME
+----
+git-resolve - Merge two commits
+
+
+SYNOPSIS
+--------
+'git-resolve' <current> <merged> <message>
+
+DESCRIPTION
+-----------
+Given two commits and a merge message, merge the <merged> commit
+into <current> commit, with the commit log message <message>.
+
+When <current> is a descendant of <merged>, or <current> is an
+ancestor of <merged>, no new commit is created and the <message>
+is ignored.  The former is informally called "already up to
+date", and the latter is often called "fast forward".
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org> and
+Dan Holmsand <holmsand@gmail.com>.
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-rev-list.html b/git-rev-list.html
new file mode 100644 (file)
index 0000000..cac8732
--- /dev/null
@@ -0,0 +1,480 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-rev-list(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-rev-list(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-rev-list -\r
+   Lists commit objects in reverse chronological order\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-rev-list</em> [ --max-count=number ]\r
+        [ --max-age=timestamp ]\r
+        [ --min-age=timestamp ]\r
+        [ --sparse ]\r
+        [ --no-merges ]\r
+        [ --all ]\r
+        [ [ --merge-order [ --show-breaks ] ] | [ --topo-order ] | ]\r
+        [ --parents ]\r
+        [ --objects [ --unpacked ] ]\r
+        [ --pretty | --header | ]\r
+        [ --bisect ]\r
+        &lt;commit&gt;&#8230; [ -- &lt;paths&gt;&#8230; ]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Lists commit objects in reverse chronological order starting at the\r
+given commit(s), taking ancestry relationship into account.  This is\r
+useful to produce human-readable log output.</p>\r
+<p>Commits which are stated with a preceding <em>^</em> cause listing to stop at\r
+that point. Their parents are implied. "git-rev-list foo bar ^baz" thus\r
+means "list all the commits which are included in <em>foo</em> and <em>bar</em>, but\r
+not in <em>baz</em>".</p>\r
+<p>A special notation &lt;commit1&gt;..&lt;commit2&gt; can be used as a\r
+short-hand for ^&lt;commit1&gt; &lt;commit2&gt;.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--pretty\r
+</dt>\r
+<dd>\r
+<p>\r
+        Print the contents of the commit changesets in human-readable form.\r
+</p>\r
+</dd>\r
+<dt>\r
+--header\r
+</dt>\r
+<dd>\r
+<p>\r
+        Print the contents of the commit in raw-format; each\r
+        record is separated with a NUL character.\r
+</p>\r
+</dd>\r
+<dt>\r
+--objects\r
+</dt>\r
+<dd>\r
+<p>\r
+        Print the object IDs of any object referenced by the listed commits.\r
+        <em>git-rev-list --objects foo ^bar</em> thus means "send me all object IDs\r
+        which I need to download if I have the commit object <em>bar</em>, but\r
+        not <em>foo</em>".\r
+</p>\r
+</dd>\r
+<dt>\r
+--unpacked\r
+</dt>\r
+<dd>\r
+<p>\r
+        Only useful with <tt>--objects</tt>; print the object IDs that\r
+        are not in packs.\r
+</p>\r
+</dd>\r
+<dt>\r
+--bisect\r
+</dt>\r
+<dd>\r
+<p>\r
+        Limit output to the one commit object which is roughly halfway\r
+        between the included and excluded commits. Thus, if <em>git-rev-list\r
+        --bisect foo <sup>bar </sup>baz</em> outputs <em>midpoint</em>, the output\r
+        of <em>git-rev-list foo ^midpoint</em> and <em>git-rev-list midpoint\r
+        <sup>bar </sup>baz</em> would be of roughly the same length. Finding the change\r
+        which introduces a regression is thus reduced to a binary search:\r
+        repeatedly generate and test new 'midpoint's until the commit chain\r
+        is of length one.\r
+</p>\r
+</dd>\r
+<dt>\r
+--max-count\r
+</dt>\r
+<dd>\r
+<p>\r
+        Limit the number of commits output.\r
+</p>\r
+</dd>\r
+<dt>\r
+--max-age=timestamp, --min-age=timestamp\r
+</dt>\r
+<dd>\r
+<p>\r
+        Limit the commits output to specified time range.\r
+</p>\r
+</dd>\r
+<dt>\r
+--sparse\r
+</dt>\r
+<dd>\r
+<p>\r
+        When optional paths are given, the command outputs only\r
+        the commits that changes at least one of them, and also\r
+        ignores merges that do not touch the given paths.  This\r
+        flag makes the command output all eligible commits\r
+        (still subject to count and age limitation), but apply\r
+        merge simplification nevertheless.\r
+</p>\r
+</dd>\r
+<dt>\r
+--all\r
+</dt>\r
+<dd>\r
+<p>\r
+        Pretend as if all the refs in <tt>$GIT_DIR/refs/</tt> are\r
+        listed on the command line as &lt;commit&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+--topo-order\r
+</dt>\r
+<dd>\r
+<p>\r
+        By default, the commits are shown in reverse\r
+        chronological order.  This option makes them appear in\r
+        topological order (i.e. descendant commits are shown\r
+        before their parents).\r
+</p>\r
+</dd>\r
+<dt>\r
+--merge-order\r
+</dt>\r
+<dd>\r
+<p>\r
+        When specified the commit history is decomposed into a unique\r
+        sequence of minimal, non-linear epochs and maximal, linear epochs.\r
+        Non-linear epochs are then linearised by sorting them into merge\r
+        order, which is described below.\r
+</p>\r
+<p>Maximal, linear epochs correspond to periods of sequential development.\r
+Minimal, non-linear epochs correspond to periods of divergent development\r
+followed by a converging merge. The theory of epochs is described in more\r
+detail at\r
+<a href="http://blackcubes.dyndns.org/epoch/">http://blackcubes.dyndns.org/epoch/</a>.</p>\r
+<p>The merge order for a non-linear epoch is defined as a linearisation for which\r
+the following invariants are true:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+if a commit P is reachable from commit N, commit P sorts after commit N\r
+       in the linearised list.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+if Pi and Pj are any two parents of a merge M (with i &lt; j), then any\r
+       commit N, such that N is reachable from Pj but not reachable from Pi,\r
+       sorts before all commits reachable from Pi.\r
+</p>\r
+<p>Invariant 1 states that later commits appear before earlier commits they are\r
+derived from.</p>\r
+<p>Invariant 2 states that commits unique to "later" parents in a merge, appear\r
+before all commits from "earlier" parents of a merge.</p>\r
+</li>\r
+</ol>\r
+</dd>\r
+<dt>\r
+--show-breaks\r
+</dt>\r
+<dd>\r
+<p>\r
+        Each item of the list is output with a 2-character prefix consisting\r
+        of one of: (|), (^), (=) followed by a space.\r
+</p>\r
+<p>Commits marked with (=) represent the boundaries of minimal, non-linear epochs\r
+and correspond either to the start of a period of divergent development or to\r
+the end of such a period.</p>\r
+<p>Commits marked with (|) are direct parents of commits immediately preceding\r
+the marked commit in the list.</p>\r
+<p>Commits marked with (^) are not parents of the immediately preceding commit.\r
+These "breaks" represent necessary discontinuities implied by trying to\r
+represent an arbtirary DAG in a linear form.</p>\r
+<p><tt>--show-breaks</tt> is only valid if <tt>--merge-order</tt> is also specified.</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+<p>Original <strong>--merge-order</strong> logic by Jon Seymour &lt;jon.seymour@gmail.com&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:38 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-rev-list.txt b/git-rev-list.txt
new file mode 100644 (file)
index 0000000..064ccb1
--- /dev/null
@@ -0,0 +1,150 @@
+git-rev-list(1)
+===============
+
+NAME
+----
+git-rev-list - Lists commit objects in reverse chronological order
+
+
+SYNOPSIS
+--------
+'git-rev-list' [ \--max-count=number ]
+       [ \--max-age=timestamp ]
+       [ \--min-age=timestamp ]
+       [ \--sparse ]
+       [ \--no-merges ]
+       [ \--all ]
+       [ [ \--merge-order [ \--show-breaks ] ] | [ \--topo-order ] | ]
+       [ \--parents ]
+       [ \--objects [ \--unpacked ] ]
+       [ \--pretty | \--header | ]
+       [ \--bisect ]
+       <commit>... [ \-- <paths>... ]
+
+DESCRIPTION
+-----------
+Lists commit objects in reverse chronological order starting at the
+given commit(s), taking ancestry relationship into account.  This is
+useful to produce human-readable log output.
+
+Commits which are stated with a preceding '{caret}' cause listing to stop at
+that point. Their parents are implied. "git-rev-list foo bar {caret}baz" thus
+means "list all the commits which are included in 'foo' and 'bar', but
+not in 'baz'".
+
+A special notation <commit1>..<commit2> can be used as a
+short-hand for {caret}<commit1> <commit2>.
+
+
+OPTIONS
+-------
+--pretty::
+       Print the contents of the commit changesets in human-readable form.
+
+--header::
+       Print the contents of the commit in raw-format; each
+       record is separated with a NUL character.
+
+--objects::
+       Print the object IDs of any object referenced by the listed commits.
+       'git-rev-list --objects foo ^bar' thus means "send me all object IDs
+       which I need to download if I have the commit object 'bar', but
+       not 'foo'".
+
+--unpacked::
+       Only useful with `--objects`; print the object IDs that
+       are not in packs.
+
+--bisect::
+       Limit output to the one commit object which is roughly halfway
+       between the included and excluded commits. Thus, if 'git-rev-list
+       --bisect foo ^bar ^baz' outputs 'midpoint', the output
+       of 'git-rev-list foo ^midpoint' and 'git-rev-list midpoint
+       ^bar ^baz' would be of roughly the same length. Finding the change
+       which introduces a regression is thus reduced to a binary search:
+       repeatedly generate and test new 'midpoint's until the commit chain
+       is of length one.
+
+--max-count::
+       Limit the number of commits output.
+
+--max-age=timestamp, --min-age=timestamp::
+       Limit the commits output to specified time range.
+
+--sparse::
+       When optional paths are given, the command outputs only
+       the commits that changes at least one of them, and also
+       ignores merges that do not touch the given paths.  This
+       flag makes the command output all eligible commits
+       (still subject to count and age limitation), but apply
+       merge simplification nevertheless.
+
+--all::
+       Pretend as if all the refs in `$GIT_DIR/refs/` are
+       listed on the command line as <commit>.
+
+--topo-order::
+       By default, the commits are shown in reverse
+       chronological order.  This option makes them appear in
+       topological order (i.e. descendant commits are shown
+       before their parents).
+
+--merge-order::
+       When specified the commit history is decomposed into a unique
+       sequence of minimal, non-linear epochs and maximal, linear epochs.
+       Non-linear epochs are then linearised by sorting them into merge
+       order, which is described below.
++
+Maximal, linear epochs correspond to periods of sequential development.
+Minimal, non-linear epochs correspond to periods of divergent development
+followed by a converging merge. The theory of epochs is described in more
+detail at
+link:http://blackcubes.dyndns.org/epoch/[http://blackcubes.dyndns.org/epoch/].
++
+The merge order for a non-linear epoch is defined as a linearisation for which
+the following invariants are true:
++
+    1. if a commit P is reachable from commit N, commit P sorts after commit N
+       in the linearised list.
+    2. if Pi and Pj are any two parents of a merge M (with i < j), then any
+       commit N, such that N is reachable from Pj but not reachable from Pi,
+       sorts before all commits reachable from Pi.
++
+Invariant 1 states that later commits appear before earlier commits they are
+derived from.
++
+Invariant 2 states that commits unique to "later" parents in a merge, appear
+before all commits from "earlier" parents of a merge.
+
+--show-breaks::
+       Each item of the list is output with a 2-character prefix consisting
+       of one of: (|), (^), (=) followed by a space.
++
+Commits marked with (=) represent the boundaries of minimal, non-linear epochs
+and correspond either to the start of a period of divergent development or to
+the end of such a period.
++
+Commits marked with (|) are direct parents of commits immediately preceding
+the marked commit in the list.
++
+Commits marked with (^) are not parents of the immediately preceding commit.
+These "breaks" represent necessary discontinuities implied by trying to
+represent an arbtirary DAG in a linear form.
++
+`--show-breaks` is only valid if `--merge-order` is also specified.
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Original *--merge-order* logic by Jon Seymour <jon.seymour@gmail.com>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-rev-parse.html b/git-rev-parse.html
new file mode 100644 (file)
index 0000000..0c898cc
--- /dev/null
@@ -0,0 +1,543 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-rev-parse(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-rev-parse(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-rev-parse -\r
+   Pick out and massage parameters.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-rev-parse</em> [ --option ] &lt;args&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Many git Porcelainish commands take mixture of flags\r
+(i.e. parameters that begin with a dash <em>-</em>) and parameters\r
+meant for underlying <tt>git-rev-list</tt> command they use internally\r
+and flags and parameters for other commands they use as the\r
+downstream of <tt>git-rev-list</tt>.  This command is used to\r
+distinguish between them.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--revs-only\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not output flags and parameters not meant for\r
+        <tt>git-rev-list</tt> command.\r
+</p>\r
+</dd>\r
+<dt>\r
+--no-revs\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not output flags and parameters meant for\r
+        <tt>git-rev-list</tt> command.\r
+</p>\r
+</dd>\r
+<dt>\r
+--flags\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not output non-flag parameters.\r
+</p>\r
+</dd>\r
+<dt>\r
+--no-flags\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not output flag parameters.\r
+</p>\r
+</dd>\r
+<dt>\r
+--default &lt;arg&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        If there is no parameter given by the user, use <tt>&lt;arg&gt;</tt>\r
+        instead.\r
+</p>\r
+</dd>\r
+<dt>\r
+--verify\r
+</dt>\r
+<dd>\r
+<p>\r
+        The parameter given must be usable as a single, valid\r
+        object name.  Otherwise barf and abort.\r
+</p>\r
+</dd>\r
+<dt>\r
+--sq\r
+</dt>\r
+<dd>\r
+<p>\r
+        Usually the output is made one line per flag and\r
+        parameter.  This option makes output a single line,\r
+        properly quoted for consumption by shell.  Useful when\r
+        you expect your parameter to contain whitespaces and\r
+        newlines (e.g. when using pickaxe <tt>-S</tt> with\r
+        <tt>git-diff-*</tt>).\r
+</p>\r
+</dd>\r
+<dt>\r
+--not\r
+</dt>\r
+<dd>\r
+<p>\r
+        When showing object names, prefix them with <em>^</em> and\r
+        strip <em>^</em> prefix from the object names that already have\r
+        one.\r
+</p>\r
+</dd>\r
+<dt>\r
+--symbolic\r
+</dt>\r
+<dd>\r
+<p>\r
+        Usually the object names are output in SHA1 form (with\r
+        possible <em>^</em> prefix); this option makes them output in a\r
+        form as close to the original input as possible.\r
+</p>\r
+</dd>\r
+<dt>\r
+--all\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show all refs found in <tt>$GIT_DIR/refs</tt>.\r
+</p>\r
+</dd>\r
+<dt>\r
+--show-prefix\r
+</dt>\r
+<dd>\r
+<p>\r
+        When the command is invoked from a subdirectory, show the\r
+        path of the current directory relative to the top-level\r
+        directory.\r
+</p>\r
+</dd>\r
+<dt>\r
+--show-cdup\r
+</dt>\r
+<dd>\r
+<p>\r
+        When the command is invoked from a subdirectory, show the\r
+        path of the top-level directory relative to the current\r
+        directory (typically a sequence of "../", or an empty string).\r
+</p>\r
+</dd>\r
+<dt>\r
+--since=datestring, --after=datestring\r
+</dt>\r
+<dd>\r
+<p>\r
+        Parses the date string, and outputs corresponding\r
+        --max-age= parameter for git-rev-list command.\r
+</p>\r
+</dd>\r
+<dt>\r
+--until=datestring, --before=datestring\r
+</dt>\r
+<dd>\r
+<p>\r
+        Parses the date string, and outputs corresponding\r
+        --min-age= parameter for git-rev-list command.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;args&gt;&#8230;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Flags and parameters to be parsed.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>SPECIFYING REVISIONS</h2>\r
+<div class="sectionbody">\r
+<p>A revision parameter typically, but not necessarily, names a\r
+commit object.  They use what is called an <em>extended SHA1</em>\r
+syntax.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+The full SHA1 object name (40-byte hexadecimal string), or\r
+  a substring of such that is unique within the repository.\r
+  E.g. dae86e1950b1277e545cee180551750029cfe735 and dae86e both\r
+  name the same commit object if there are no other object in\r
+  your repository whose object name starts with dae86e.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+A symbolic ref name.  E.g. <em>master</em> typically means the commit\r
+  object referenced by $GIT_DIR/refs/heads/master.  If you\r
+  happen to have both heads/master and tags/master, you can\r
+  explicitly say <em>heads/master</em> to tell git which one you mean.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+A suffix <em>^</em> to a revision parameter means the first parent of\r
+  that commit object.  <em>^&lt;n&gt;</em> means the &lt;n&gt;th parent (i.e.\r
+  <em>rev^</em>\r
+  is equivalent to <em>rev^1</em>).  As a special rule,\r
+  <em>rev^0</em> means the commit itself and is used when <em>rev</em> is the\r
+  object name of a tag object that refers to a commit object.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+A suffix <em>~&lt;n&gt;</em> to a revision parameter means the commit\r
+  object that is the &lt;n&gt;th generation grand-parent of the named\r
+  commit object, following only the first parent.  I.e. rev~3 is\r
+  equivalent to rev^^^ which is equivalent to  rev^1^1^1.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+A suffix <em>^</em> followed by an object type name enclosed in\r
+  brace pair (e.g. <tt>v0.99.8^{commit}</tt>) means the object\r
+  could be a tag, and dereference the tag recursively until an\r
+  object of that type is found or the object cannot be\r
+  dereferenced anymore (in which case, barf).  <tt>rev^0</tt>\r
+  introduced earlier is a short-hand for <tt>rev^{commit}</tt>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+A suffix <em>^</em> followed by an empty brace pair\r
+  (e.g. <tt>v0.99.8^{}</tt>) means the object could be a tag,\r
+  and dereference the tag recursively until a non-tag object is\r
+  found.\r
+</p>\r
+</li>\r
+</ul>\r
+<p><em>git-rev-parse</em> also accepts a prefix <em>^</em> to revision parameter,\r
+which is passed to <em>git-rev-list</em>.  Two revision parameters\r
+concatenated with <em>..</em> is a short-hand for writing a range\r
+between them.  I.e. <em>r1..r2</em> is equivalent to saying <em>^r1 r2</em></p>\r
+<p>Here is an illustration, by Jon Loeliger.  Both node B and C are\r
+a commit parents of commit node A.  Parent commits are ordered\r
+left-to-right.</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>G   H   I   J\r
+ \ /     \ /\r
+  D   E   F\r
+   \  |  /\r
+    \ | /\r
+     \|/\r
+      B     C\r
+       \   /\r
+        \ /\r
+         A</tt></pre>\r
+</div></div>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>A =      = A^0\r
+B = A^   = A^1     = A~1\r
+C = A^2  = A^2\r
+D = A^^  = A^1^1   = A~2\r
+E = B^2  = A^^2\r
+F = B^3  = A^^3\r
+G = A^^^ = A^1^1^1 = A~3\r
+H = D^2  = B^^2    = A^^^2  = A~2^2\r
+I = F^   = B^3^    = A^^3^\r
+J = F^2  = B^3^2   = A^^3^2</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt; and\r
+Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:39 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-rev-parse.txt b/git-rev-parse.txt
new file mode 100644 (file)
index 0000000..d638bfc
--- /dev/null
@@ -0,0 +1,179 @@
+git-rev-parse(1)
+================
+
+NAME
+----
+git-rev-parse - Pick out and massage parameters.
+
+
+SYNOPSIS
+--------
+'git-rev-parse' [ --option ] <args>...
+
+DESCRIPTION
+-----------
+
+Many git Porcelainish commands take mixture of flags
+(i.e. parameters that begin with a dash '-') and parameters
+meant for underlying `git-rev-list` command they use internally
+and flags and parameters for other commands they use as the
+downstream of `git-rev-list`.  This command is used to
+distinguish between them.
+
+
+OPTIONS
+-------
+--revs-only::
+       Do not output flags and parameters not meant for
+       `git-rev-list` command.
+
+--no-revs::
+       Do not output flags and parameters meant for
+       `git-rev-list` command.
+
+--flags::
+       Do not output non-flag parameters.
+
+--no-flags::
+       Do not output flag parameters.
+
+--default <arg>::
+       If there is no parameter given by the user, use `<arg>`
+       instead.
+
+--verify::
+       The parameter given must be usable as a single, valid
+       object name.  Otherwise barf and abort.
+
+--sq::
+       Usually the output is made one line per flag and
+       parameter.  This option makes output a single line,
+       properly quoted for consumption by shell.  Useful when
+       you expect your parameter to contain whitespaces and
+       newlines (e.g. when using pickaxe `-S` with
+       `git-diff-\*`).
+
+--not::
+       When showing object names, prefix them with '{caret}' and
+       strip '{caret}' prefix from the object names that already have
+       one.
+
+--symbolic::
+       Usually the object names are output in SHA1 form (with
+       possible '{caret}' prefix); this option makes them output in a
+       form as close to the original input as possible.
+
+
+--all::
+       Show all refs found in `$GIT_DIR/refs`.
+
+--show-prefix::
+       When the command is invoked from a subdirectory, show the
+       path of the current directory relative to the top-level
+       directory.
+
+--show-cdup::
+       When the command is invoked from a subdirectory, show the
+       path of the top-level directory relative to the current
+       directory (typically a sequence of "../", or an empty string).
+
+--since=datestring, --after=datestring::
+       Parses the date string, and outputs corresponding
+       --max-age= parameter for git-rev-list command.
+
+--until=datestring, --before=datestring::
+       Parses the date string, and outputs corresponding
+       --min-age= parameter for git-rev-list command.
+
+<args>...::
+       Flags and parameters to be parsed.
+
+
+SPECIFYING REVISIONS
+--------------------
+
+A revision parameter typically, but not necessarily, names a
+commit object.  They use what is called an 'extended SHA1'
+syntax.
+
+* The full SHA1 object name (40-byte hexadecimal string), or
+  a substring of such that is unique within the repository.
+  E.g. dae86e1950b1277e545cee180551750029cfe735 and dae86e both
+  name the same commit object if there are no other object in
+  your repository whose object name starts with dae86e.
+
+* A symbolic ref name.  E.g. 'master' typically means the commit
+  object referenced by $GIT_DIR/refs/heads/master.  If you
+  happen to have both heads/master and tags/master, you can
+  explicitly say 'heads/master' to tell git which one you mean.
+
+* A suffix '{caret}' to a revision parameter means the first parent of
+  that commit object.  '{caret}<n>' means the <n>th parent (i.e.
+  'rev{caret}'
+  is equivalent to 'rev{caret}1').  As a special rule,
+  'rev{caret}0' means the commit itself and is used when 'rev' is the
+  object name of a tag object that refers to a commit object.
+
+* A suffix '~<n>' to a revision parameter means the commit
+  object that is the <n>th generation grand-parent of the named
+  commit object, following only the first parent.  I.e. rev~3 is
+  equivalent to rev{caret}{caret}{caret} which is equivalent to\
+  rev{caret}1{caret}1{caret}1.
+
+* A suffix '{caret}' followed by an object type name enclosed in
+  brace pair (e.g. `v0.99.8{caret}\{commit\}`) means the object
+  could be a tag, and dereference the tag recursively until an
+  object of that type is found or the object cannot be
+  dereferenced anymore (in which case, barf).  `rev{caret}0`
+  introduced earlier is a short-hand for `rev{caret}\{commit\}`.
+
+* A suffix '{caret}' followed by an empty brace pair
+  (e.g. `v0.99.8{caret}\{\}`) means the object could be a tag,
+  and dereference the tag recursively until a non-tag object is
+  found.
+
+'git-rev-parse' also accepts a prefix '{caret}' to revision parameter,
+which is passed to 'git-rev-list'.  Two revision parameters
+concatenated with '..' is a short-hand for writing a range
+between them.  I.e. 'r1..r2' is equivalent to saying '{caret}r1 r2'
+
+Here is an illustration, by Jon Loeliger.  Both node B and C are
+a commit parents of commit node A.  Parent commits are ordered
+left-to-right.
+
+    G   H   I   J
+     \ /     \ /
+      D   E   F
+       \  |  /
+        \ | /
+         \|/
+          B     C
+           \   /
+            \ /
+             A
+
+    A =      = A^0
+    B = A^   = A^1     = A~1
+    C = A^2  = A^2
+    D = A^^  = A^1^1   = A~2
+    E = B^2  = A^^2
+    F = B^3  = A^^3
+    G = A^^^ = A^1^1^1 = A~3
+    H = D^2  = B^^2    = A^^^2  = A~2^2
+    I = F^   = B^3^    = A^^3^
+    J = F^2  = B^3^2   = A^^3^2
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org> and
+Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-revert.html b/git-revert.html
new file mode 100644 (file)
index 0000000..c73721a
--- /dev/null
@@ -0,0 +1,350 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-revert(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-revert(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-revert -\r
+   Revert an existing commit.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-revert</em> [--edit | --no-edit] [-n] &lt;commit&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Given one existing commit, revert the change the patch introduces, and record a\r
+new commit that records it.  This requires your working tree to be clean (no\r
+modifications from the HEAD commit).</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;commit&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Commit to revert.\r
+</p>\r
+</dd>\r
+<dt>\r
+-e|--edit\r
+</dt>\r
+<dd>\r
+<p>\r
+        With this option, <tt>git-revert</tt> will let you edit the commit\r
+        message prior committing the revert. This is the default if\r
+        you run the command from a terminal.\r
+</p>\r
+</dd>\r
+<dt>\r
+--no-edit\r
+</dt>\r
+<dd>\r
+<p>\r
+        With this option, <tt>git-revert</tt> will not start the commit\r
+        message editor.\r
+</p>\r
+</dd>\r
+<dt>\r
+-n|--no-commit\r
+</dt>\r
+<dd>\r
+<p>\r
+        Usually the command automatically creates a commit with\r
+        a commit log message stating which commit was reverted.\r
+        This flag applies the change necessary to revert the\r
+        named commit to your working tree, but does not make the\r
+        commit.  In addition, when this option is used, your\r
+        working tree does not have to match the HEAD commit.\r
+        The revert is done against the beginning state of your\r
+        working tree.\r
+</p>\r
+<p>This is useful when reverting more than one commits'\r
+effect to your working tree in a row.</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:39 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-revert.txt b/git-revert.txt
new file mode 100644 (file)
index 0000000..e27c680
--- /dev/null
@@ -0,0 +1,57 @@
+git-revert(1)
+=============
+
+NAME
+----
+git-revert - Revert an existing commit.
+
+SYNOPSIS
+--------
+'git-revert' [--edit | --no-edit] [-n] <commit>
+
+DESCRIPTION
+-----------
+Given one existing commit, revert the change the patch introduces, and record a
+new commit that records it.  This requires your working tree to be clean (no
+modifications from the HEAD commit).
+
+OPTIONS
+-------
+<commit>::
+       Commit to revert.
+
+-e|--edit::
+       With this option, `git-revert` will let you edit the commit
+       message prior committing the revert. This is the default if
+       you run the command from a terminal.
+
+--no-edit::
+       With this option, `git-revert` will not start the commit
+       message editor.
+
+-n|--no-commit::
+       Usually the command automatically creates a commit with
+       a commit log message stating which commit was reverted.
+       This flag applies the change necessary to revert the
+       named commit to your working tree, but does not make the
+       commit.  In addition, when this option is used, your
+       working tree does not have to match the HEAD commit.
+       The revert is done against the beginning state of your
+       working tree.
++
+This is useful when reverting more than one commits'
+effect to your working tree in a row.
+
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-send-email.html b/git-send-email.html
new file mode 100644 (file)
index 0000000..af79b67
--- /dev/null
@@ -0,0 +1,383 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-send-email(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-send-email(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-send-email -\r
+   Send a collection of patches as emails\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-send-email</em> [options] &lt;file|directory&gt; [&#8230; file|directory]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Takes the patches given on the command line and emails them out.</p>\r
+<p>The header of the email is configurable by command line options.  If not\r
+specified on the command line, the user will be prompted with a ReadLine\r
+enabled interface to provide the necessary information.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<p>The options available are:</p>\r
+<dl>\r
+<dt>\r
+--to\r
+</dt>\r
+<dd>\r
+<p>\r
+        Specify the primary recipient of the emails generated.\r
+        Generally, this will be the upstream maintainer of the\r
+        project involved.\r
+</p>\r
+</dd>\r
+<dt>\r
+--from\r
+</dt>\r
+<dd>\r
+<p>\r
+        Specify the sender of the emails.  This will default to\r
+        the value GIT_COMMITTER_IDENT, as returned by "git-var -l".\r
+        The user will still be prompted to confirm this entry.\r
+</p>\r
+</dd>\r
+<dt>\r
+--compose\r
+</dt>\r
+<dd>\r
+<p>\r
+        Use \$EDITOR to edit an introductory message for the\r
+        patch series.\r
+</p>\r
+</dd>\r
+<dt>\r
+--subject\r
+</dt>\r
+<dd>\r
+<p>\r
+        Specify the initial subject of the email thread.\r
+        Only necessary if --compose is also set.  If --compose\r
+        is not set, this will be prompted for.\r
+</p>\r
+</dd>\r
+<dt>\r
+--in-reply-to\r
+</dt>\r
+<dd>\r
+<p>\r
+        Specify the contents of the first In-Reply-To header.\r
+        Subsequent emails will refer to the previous email\r
+        instead of this if --chain-reply-to is set (the default)\r
+        Only necessary if --compose is also set.  If --compose\r
+        is not set, this will be prompted for.\r
+</p>\r
+</dd>\r
+<dt>\r
+--chain-reply-to, --no-chain-reply-to\r
+</dt>\r
+<dd>\r
+<p>\r
+        If this is set, each email will be sent as a reply to the previous\r
+        email sent.  If disabled with "--no-chain-reply-to", all emails after\r
+        the first will be sent as replies to the first email sent.  When using\r
+        this, it is recommended that the first file given be an overview of the\r
+        entire patch series.\r
+        Default is --chain-reply-to\r
+</p>\r
+</dd>\r
+<dt>\r
+--smtp-server\r
+</dt>\r
+<dd>\r
+<p>\r
+        If set, specifies the outgoing SMTP server to use.  Defaults to\r
+        localhost.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Ryan Anderson &lt;ryan@michonline.com&gt;</p>\r
+<p>git-send-email is originally based upon\r
+send_lots_of_email.pl by Greg Kroah-Hartman.</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Ryan Anderson</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:40 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-send-email.txt b/git-send-email.txt
new file mode 100644 (file)
index 0000000..b9bec55
--- /dev/null
@@ -0,0 +1,80 @@
+git-send-email(1)
+=================
+
+NAME
+----
+git-send-email - Send a collection of patches as emails
+
+
+SYNOPSIS
+--------
+'git-send-email' [options] <file|directory> [... file|directory]
+
+
+
+DESCRIPTION
+-----------
+Takes the patches given on the command line and emails them out.
+
+The header of the email is configurable by command line options.  If not
+specified on the command line, the user will be prompted with a ReadLine
+enabled interface to provide the necessary information.
+
+OPTIONS
+-------
+The options available are:
+
+--to::
+       Specify the primary recipient of the emails generated.
+       Generally, this will be the upstream maintainer of the
+       project involved.
+
+--from::
+       Specify the sender of the emails.  This will default to
+       the value GIT_COMMITTER_IDENT, as returned by "git-var -l".
+       The user will still be prompted to confirm this entry.
+
+--compose::
+       Use \$EDITOR to edit an introductory message for the
+       patch series.
+
+--subject::
+       Specify the initial subject of the email thread.
+       Only necessary if --compose is also set.  If --compose
+       is not set, this will be prompted for.
+
+--in-reply-to::
+       Specify the contents of the first In-Reply-To header.
+       Subsequent emails will refer to the previous email 
+       instead of this if --chain-reply-to is set (the default)
+       Only necessary if --compose is also set.  If --compose
+       is not set, this will be prompted for.
+
+--chain-reply-to, --no-chain-reply-to::
+       If this is set, each email will be sent as a reply to the previous
+       email sent.  If disabled with "--no-chain-reply-to", all emails after
+       the first will be sent as replies to the first email sent.  When using
+       this, it is recommended that the first file given be an overview of the
+       entire patch series.
+       Default is --chain-reply-to
+
+--smtp-server::
+       If set, specifies the outgoing SMTP server to use.  Defaults to
+       localhost.
+
+
+Author
+------
+Written by Ryan Anderson <ryan@michonline.com>
+
+git-send-email is originally based upon
+send_lots_of_email.pl by Greg Kroah-Hartman.
+
+Documentation
+--------------
+Documentation by Ryan Anderson
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-send-pack.html b/git-send-pack.html
new file mode 100644 (file)
index 0000000..06975ac
--- /dev/null
@@ -0,0 +1,417 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-send-pack(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-send-pack(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-send-pack -\r
+   Push missing objects packed.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-send-pack</em> [--all] [--force] [--exec=&lt;git-receive-pack&gt;] [&lt;host&gt;:]&lt;directory&gt; [&lt;ref&gt;&#8230;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Invokes <em>git-receive-pack</em> on a possibly remote repository, and\r
+updates it from the current repository, sending named refs.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--exec=&lt;git-receive-pack&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Path to the <em>git-receive-pack</em> program on the remote\r
+        end.  Sometimes useful when pushing to a remote\r
+        repository over ssh, and you do not have the program in\r
+        a directory on the default $PATH.\r
+</p>\r
+</dd>\r
+<dt>\r
+--all\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of explicitly specifying which refs to update,\r
+        update all refs that locally exist.\r
+</p>\r
+</dd>\r
+<dt>\r
+--force\r
+</dt>\r
+<dd>\r
+<p>\r
+        Usually, the command refuses to update a remote ref that\r
+        is not an ancestor of the local ref used to overwrite it.\r
+        This flag disables the check.  What this means is that\r
+        the remote repository can lose commits; use it with\r
+        care.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;host&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        A remote host to house the repository.  When this\r
+        part is specified, <em>git-receive-pack</em> is invoked via\r
+        ssh.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;directory&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The repository to update.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>&lt;ref&gt;&#8230;:\r
+        The remote refs to update.</p>\r
+</div>\r
+<h2>Specifying the Refs</h2>\r
+<div class="sectionbody">\r
+<p>There are three ways to specify which refs to update on the\r
+remote end.</p>\r
+<p>With <em>--all</em> flag, all refs that exist locally are transfered to\r
+the remote side.  You cannot specify any <em>&lt;ref&gt;</em> if you use\r
+this flag.</p>\r
+<p>Without <em>--all</em> and without any <em>&lt;ref&gt;</em>, the refs that exist\r
+both on the local side and on the remote side are updated.</p>\r
+<p>When one or more <em>&lt;ref&gt;</em> are specified explicitly, it can be either a\r
+single pattern, or a pair of such pattern separated by a colon\r
+":" (this means that a ref name cannot have a colon in it).  A\r
+single pattern <em>&lt;name&gt;</em> is just a shorthand for <em>&lt;name&gt;:&lt;name&gt;</em>.</p>\r
+<p>Each pattern pair consists of the source side (before the colon)\r
+and the destination side (after the colon).  The ref to be\r
+pushed is determined by finding a match that matches the source\r
+side, and where it is pushed is determined by using the\r
+destination side.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+It is an error if &lt;src&gt; does not match exactly one of the\r
+   local refs.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+It is an error if &lt;dst&gt; matches more than one remote refs.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+If &lt;dst&gt; does not match any remote ref, either\r
+</p>\r
+<ul>\r
+<li>\r
+<p>\r
+it has to start with "refs/"; &lt;dst&gt; is used as the\r
+     destination literally in this case.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+&lt;src&gt; == &lt;dst&gt; and the ref that matched the &lt;src&gt; must not\r
+     exist in the set of remote refs; the ref matched &lt;src&gt;\r
+     locally is used as the name of the destination.\r
+</p>\r
+</li>\r
+</ul>\r
+</li>\r
+</ul>\r
+<p>Without <em>--force</em>, the &lt;src&gt; ref is stored at the remote only if\r
+&lt;dst&gt; does not exist, or &lt;dst&gt; is a proper subset (i.e. an\r
+ancestor) of &lt;src&gt;.  This check, known as "fast forward check",\r
+is performed in order to avoid accidentally overwriting the\r
+remote ref and lose other peoples' commits from there.</p>\r
+<p>With <em>--force</em>, the fast forward check is disabled for all refs.</p>\r
+<p>Optionally, a &lt;ref&gt; parameter can be prefixed with a plus <em>+</em> sign\r
+to disable the fast-forward check only on that ref.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:41 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-send-pack.txt b/git-send-pack.txt
new file mode 100644 (file)
index 0000000..577f06a
--- /dev/null
@@ -0,0 +1,110 @@
+git-send-pack(1)
+================
+
+NAME
+----
+git-send-pack - Push missing objects packed.
+
+
+SYNOPSIS
+--------
+'git-send-pack' [--all] [--force] [--exec=<git-receive-pack>] [<host>:]<directory> [<ref>...]
+
+DESCRIPTION
+-----------
+Invokes 'git-receive-pack' on a possibly remote repository, and
+updates it from the current repository, sending named refs.
+
+
+OPTIONS
+-------
+--exec=<git-receive-pack>::
+       Path to the 'git-receive-pack' program on the remote
+       end.  Sometimes useful when pushing to a remote
+       repository over ssh, and you do not have the program in
+       a directory on the default $PATH.
+
+--all::
+       Instead of explicitly specifying which refs to update,
+       update all refs that locally exist.
+
+--force::
+       Usually, the command refuses to update a remote ref that
+       is not an ancestor of the local ref used to overwrite it.
+       This flag disables the check.  What this means is that
+       the remote repository can lose commits; use it with
+       care.
+
+<host>::
+       A remote host to house the repository.  When this
+       part is specified, 'git-receive-pack' is invoked via
+       ssh.
+
+<directory>::
+       The repository to update.
+
+<ref>...:
+       The remote refs to update.
+
+
+Specifying the Refs
+-------------------
+
+There are three ways to specify which refs to update on the
+remote end.
+
+With '--all' flag, all refs that exist locally are transfered to
+the remote side.  You cannot specify any '<ref>' if you use
+this flag.
+
+Without '--all' and without any '<ref>', the refs that exist
+both on the local side and on the remote side are updated.
+
+When one or more '<ref>' are specified explicitly, it can be either a
+single pattern, or a pair of such pattern separated by a colon
+":" (this means that a ref name cannot have a colon in it).  A
+single pattern '<name>' is just a shorthand for '<name>:<name>'.
+
+Each pattern pair consists of the source side (before the colon)
+and the destination side (after the colon).  The ref to be
+pushed is determined by finding a match that matches the source
+side, and where it is pushed is determined by using the
+destination side.
+
+ - It is an error if <src> does not match exactly one of the
+   local refs.
+
+ - It is an error if <dst> matches more than one remote refs.
+
+ - If <dst> does not match any remote ref, either
+
+   * it has to start with "refs/"; <dst> is used as the
+     destination literally in this case.
+
+   * <src> == <dst> and the ref that matched the <src> must not
+     exist in the set of remote refs; the ref matched <src>
+     locally is used as the name of the destination.
+
+Without '--force', the <src> ref is stored at the remote only if
+<dst> does not exist, or <dst> is a proper subset (i.e. an
+ancestor) of <src>.  This check, known as "fast forward check",
+is performed in order to avoid accidentally overwriting the
+remote ref and lose other peoples' commits from there.
+
+With '--force', the fast forward check is disabled for all refs.
+
+Optionally, a <ref> parameter can be prefixed with a plus '+' sign
+to disable the fast-forward check only on that ref.
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano.
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-sh-setup.html b/git-sh-setup.html
new file mode 100644 (file)
index 0000000..cbadd6b
--- /dev/null
@@ -0,0 +1,306 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-sh-setup(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-sh-setup(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-sh-setup -\r
+   Common git shell script setup code.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-sh-setup</em></p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Sets up the normal git environment variables and a few helper functions\r
+(currently just "die()"), and returns ok if it all looks like a git archive.\r
+So, to make the rest of the git scripts more careful and readable,\r
+use it as follows:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>. git-sh-setup || die "Not a git archive"</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:42 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-sh-setup.txt b/git-sh-setup.txt
new file mode 100644 (file)
index 0000000..6ef59ac
--- /dev/null
@@ -0,0 +1,35 @@
+git-sh-setup(1)
+===============
+
+NAME
+----
+git-sh-setup - Common git shell script setup code.
+
+SYNOPSIS
+--------
+'git-sh-setup'
+
+DESCRIPTION
+-----------
+
+Sets up the normal git environment variables and a few helper functions
+(currently just "die()"), and returns ok if it all looks like a git archive.
+So, to make the rest of the git scripts more careful and readable,
+use it as follows:
+
+-------------------------------------------------
+. git-sh-setup || die "Not a git archive"
+-------------------------------------------------
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-shell.html b/git-shell.html
new file mode 100644 (file)
index 0000000..71609be
--- /dev/null
@@ -0,0 +1,305 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-shell(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-shell(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-shell -\r
+   Restricted login shell for GIT over SSH only\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-shell -c &lt;command&gt; &lt;argument&gt;</em></p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>This is meant to be used as a login shell for SSH accounts you want\r
+to restrict to GIT pull/push access only. It permits execution only\r
+of server-side GIT commands implementing the pull/push functionality.\r
+The commands can be executed only by the <em>-c</em> option; the shell is not\r
+interactive.</p>\r
+<p>Currently, only the <tt>git-receive-pack</tt> and <tt>git-upload-pack</tt> commands\r
+are permitted to be called, with a single required argument.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Petr Baudis and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:42 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-shell.txt b/git-shell.txt
new file mode 100644 (file)
index 0000000..3f4d804
--- /dev/null
@@ -0,0 +1,35 @@
+git-shell(1)
+============
+
+NAME
+----
+git-shell - Restricted login shell for GIT over SSH only
+
+
+SYNOPSIS
+--------
+'git-shell -c <command> <argument>'
+
+DESCRIPTION
+-----------
+This is meant to be used as a login shell for SSH accounts you want
+to restrict to GIT pull/push access only. It permits execution only
+of server-side GIT commands implementing the pull/push functionality.
+The commands can be executed only by the '-c' option; the shell is not
+interactive.
+
+Currently, only the `git-receive-pack` and `git-upload-pack` commands
+are permitted to be called, with a single required argument.
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Petr Baudis and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-shortlog.html b/git-shortlog.html
new file mode 100644 (file)
index 0000000..806d094
--- /dev/null
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-shortlog(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-shortlog(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-shortlog -\r
+   Summarize 'git log' output.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-log --pretty=short | git shortlog</em></p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Summarizes <em>git log</em> output in a format suitable for inclusion\r
+in release announcements.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Jeff Garzik &lt;jgarzik@pobox.com&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:43 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-shortlog.txt b/git-shortlog.txt
new file mode 100644 (file)
index 0000000..65ca77f
--- /dev/null
@@ -0,0 +1,30 @@
+git-shortlog(1)
+===============
+
+NAME
+----
+git-shortlog - Summarize 'git log' output.
+
+
+SYNOPSIS
+--------
+'git-log --pretty=short | git shortlog'
+
+DESCRIPTION
+-----------
+Summarizes 'git log' output in a format suitable for inclusion
+in release announcements.
+
+
+Author
+------
+Written by Jeff Garzik <jgarzik@pobox.com>
+
+Documentation
+--------------
+Documentation by Junio C Hamano.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-show-branch.html b/git-show-branch.html
new file mode 100644 (file)
index 0000000..a9df581
--- /dev/null
@@ -0,0 +1,445 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-show-branch(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-show-branch(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-show-branch -\r
+   Show branches and their commits.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-show-branch [--all] [--heads] [--tags] [--topo-order] [--more=&lt;n&gt; | --list | --independent | --merge-base] [--no-name | --sha1-name] [&lt;rev&gt; | &lt;glob&gt;]&#8230;</em></p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Shows the commit ancestry graph starting from the commits named\r
+with &lt;rev&gt;s or &lt;globs&gt;s (or all refs under $GIT_DIR/refs/heads\r
+and/or $GIT_DIR/refs/tags) semi-visually.</p>\r
+<p>It cannot show more than 29 branches and commits at a time.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;rev&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Arbitrary extended SHA1 expression (see <tt>git-rev-parse</tt>)\r
+        that typically names a branch HEAD or a tag.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;glob&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        A glob pattern that matches branch or tag names under\r
+        $GIT_DIR/refs.  For example, if you have many topic\r
+        branches under $GIT_DIR/refs/heads/topic, giving\r
+        <tt>topic/*</tt> would show all of them.\r
+</p>\r
+</dd>\r
+<dt>\r
+--all --heads --tags\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show all refs under $GIT_DIR/refs, $GIT_DIR/refs/heads,\r
+        and $GIT_DIR/refs/tags, respectively.\r
+</p>\r
+</dd>\r
+<dt>\r
+--topo-order\r
+</dt>\r
+<dd>\r
+<p>\r
+        By default, the branches and their commits are shown in\r
+        reverse chronological order.  This option makes them\r
+        appear in topological order (i.e., descendant commits\r
+        are shown before their parents).\r
+</p>\r
+</dd>\r
+<dt>\r
+--more=&lt;n&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Usually the command stops output upon showing the commit\r
+        that is the common ancestor of all the branches.  This\r
+        flag tells the command to go &lt;n&gt; more common commits\r
+        beyond that.  When &lt;n&gt; is negative, display only the\r
+        &lt;reference&gt;s given, without showing the commit ancestry\r
+        tree.\r
+</p>\r
+</dd>\r
+<dt>\r
+--list\r
+</dt>\r
+<dd>\r
+<p>\r
+        Synomym to <tt>--more=-1</tt>\r
+</p>\r
+</dd>\r
+<dt>\r
+--merge-base\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of showing the commit list, just act like the\r
+        <em>git-merge-base -a</em> command, except that it can accept\r
+        more than two heads.\r
+</p>\r
+</dd>\r
+<dt>\r
+--independent\r
+</dt>\r
+<dd>\r
+<p>\r
+        Among the &lt;reference&gt;s given, display only the ones that\r
+        cannot be reached from any other &lt;reference&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+--no-name\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not show naming strings for each commit.\r
+</p>\r
+</dd>\r
+<dt>\r
+--sha1-name\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of naming the commits using the path to reach\r
+        them from heads (e.g. "master~2" to mean the grandparent\r
+        of "master"), name them with the unique prefix of their\r
+        object names.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>Note that --more, --list, --independent and --merge-base options\r
+are mutually exclusive.</p>\r
+</div>\r
+<h2>OUTPUT</h2>\r
+<div class="sectionbody">\r
+<p>Given N &lt;references&gt;, the first N lines are the one-line\r
+description from their commit message.  The branch head that is\r
+pointed at by $GIT_DIR/HEAD is prefixed with an asterisk <em>*</em>\r
+character while other heads are prefixed with a <em>!</em> character.</p>\r
+<p>Following these N lines, one-line log for each commit is\r
+displayed, indented N places.  If a commit is on the I-th\r
+branch, the I-th indentation character shows a <em>+</em> sign;\r
+otherwise it shows a space.  Each commit shows a short name that\r
+can be used as an exended SHA1 to name that commit.</p>\r
+<p>The following example shows three branches, "master", "fixes"\r
+and "mhf":</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git show-branch master fixes mhf\r
+! [master] Add 'git show-branch'.\r
+ ! [fixes] Introduce "reset type" flag to "git reset"\r
+  ! [mhf] Allow "+remote:local" refspec to cause --force when fetching.\r
+---\r
+  + [mhf] Allow "+remote:local" refspec to cause --force when fetching.\r
+  + [mhf~1] Use git-octopus when pulling more than one heads.\r
+ +  [fixes] Introduce "reset type" flag to "git reset"\r
+  + [mhf~2] "git fetch --force".\r
+  + [mhf~3] Use .git/remote/origin, not .git/branches/origin.\r
+  + [mhf~4] Make "git pull" and "git fetch" default to origin\r
+  + [mhf~5] Infamous 'octopus merge'\r
+  + [mhf~6] Retire git-parse-remote.\r
+  + [mhf~7] Multi-head fetch.\r
+  + [mhf~8] Start adding the $GIT_DIR/remotes/ support.\r
++++ [master] Add 'git show-branch'.</tt></pre>\r
+</div></div>\r
+<p>These three branches all forked from a common commit, [master],\r
+whose commit message is "Add <em>git show-branch</em>.  "fixes" branch\r
+adds one commit <em>Introduce "reset type"</em>.  "mhf" branch has many\r
+other commits.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:43 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-show-branch.txt b/git-show-branch.txt
new file mode 100644 (file)
index 0000000..ffe64d8
--- /dev/null
@@ -0,0 +1,130 @@
+git-show-branch(1)
+==================
+
+NAME
+----
+git-show-branch - Show branches and their commits.
+
+SYNOPSIS
+--------
+'git-show-branch [--all] [--heads] [--tags] [--topo-order] [--more=<n> | --list | --independent | --merge-base] [--no-name | --sha1-name] [<rev> | <glob>]...'
+
+DESCRIPTION
+-----------
+
+Shows the commit ancestry graph starting from the commits named
+with <rev>s or <globs>s (or all refs under $GIT_DIR/refs/heads
+and/or $GIT_DIR/refs/tags) semi-visually.
+
+It cannot show more than 29 branches and commits at a time.
+
+
+OPTIONS
+-------
+<rev>::
+       Arbitrary extended SHA1 expression (see `git-rev-parse`)
+       that typically names a branch HEAD or a tag.
+
+<glob>::
+       A glob pattern that matches branch or tag names under
+       $GIT_DIR/refs.  For example, if you have many topic
+       branches under $GIT_DIR/refs/heads/topic, giving
+       `topic/*` would show all of them.
+
+--all --heads --tags::
+       Show all refs under $GIT_DIR/refs, $GIT_DIR/refs/heads,
+       and $GIT_DIR/refs/tags, respectively.
+
+--topo-order::
+        By default, the branches and their commits are shown in
+        reverse chronological order.  This option makes them
+        appear in topological order (i.e., descendant commits
+        are shown before their parents).
+
+--more=<n>::
+       Usually the command stops output upon showing the commit
+       that is the common ancestor of all the branches.  This
+       flag tells the command to go <n> more common commits
+       beyond that.  When <n> is negative, display only the
+       <reference>s given, without showing the commit ancestry
+       tree.
+
+--list::
+       Synomym to `--more=-1`
+
+--merge-base::
+       Instead of showing the commit list, just act like the
+       'git-merge-base -a' command, except that it can accept
+       more than two heads.
+
+--independent::
+       Among the <reference>s given, display only the ones that
+       cannot be reached from any other <reference>.
+
+--no-name::
+       Do not show naming strings for each commit.
+
+--sha1-name::
+       Instead of naming the commits using the path to reach
+       them from heads (e.g. "master~2" to mean the grandparent
+       of "master"), name them with the unique prefix of their
+       object names.
+
+Note that --more, --list, --independent and --merge-base options
+are mutually exclusive.
+
+
+OUTPUT
+------
+Given N <references>, the first N lines are the one-line
+description from their commit message.  The branch head that is
+pointed at by $GIT_DIR/HEAD is prefixed with an asterisk '*'
+character while other heads are prefixed with a '!' character.
+
+Following these N lines, one-line log for each commit is
+displayed, indented N places.  If a commit is on the I-th
+branch, the I-th indentation character shows a '+' sign;
+otherwise it shows a space.  Each commit shows a short name that
+can be used as an exended SHA1 to name that commit.
+
+The following example shows three branches, "master", "fixes"
+and "mhf":
+
+------------------------------------------------
+$ git show-branch master fixes mhf
+! [master] Add 'git show-branch'.
+ ! [fixes] Introduce "reset type" flag to "git reset"
+  ! [mhf] Allow "+remote:local" refspec to cause --force when fetching.
+---
+  + [mhf] Allow "+remote:local" refspec to cause --force when fetching.
+  + [mhf~1] Use git-octopus when pulling more than one heads.
+ +  [fixes] Introduce "reset type" flag to "git reset"
+  + [mhf~2] "git fetch --force".
+  + [mhf~3] Use .git/remote/origin, not .git/branches/origin.
+  + [mhf~4] Make "git pull" and "git fetch" default to origin
+  + [mhf~5] Infamous 'octopus merge'
+  + [mhf~6] Retire git-parse-remote.
+  + [mhf~7] Multi-head fetch.
+  + [mhf~8] Start adding the $GIT_DIR/remotes/ support.
++++ [master] Add 'git show-branch'.
+------------------------------------------------
+
+These three branches all forked from a common commit, [master],
+whose commit message is "Add 'git show-branch'.  "fixes" branch
+adds one commit 'Introduce "reset type"'.  "mhf" branch has many
+other commits.
+
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+
+Documentation
+--------------
+Documentation by Junio C Hamano.
+
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-show-index.html b/git-show-index.html
new file mode 100644 (file)
index 0000000..6485f4d
--- /dev/null
@@ -0,0 +1,303 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-show-index(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-show-index(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-show-index -\r
+   Show packed archive index\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-show-index</em> &lt; idx-file</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Reads given idx file for packed git archive created with\r
+git-pack-objects command, and dumps its contents.</p>\r
+<p>The information it outputs is subset of what you can get from\r
+<em>git-verify-pack -v</em>; this command only shows the packfile\r
+offset and SHA1 of each object.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:44 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-show-index.txt b/git-show-index.txt
new file mode 100644 (file)
index 0000000..be09b62
--- /dev/null
@@ -0,0 +1,35 @@
+git-show-index(1)
+=================
+
+NAME
+----
+git-show-index - Show packed archive index
+
+
+SYNOPSIS
+--------
+'git-show-index' < idx-file
+
+
+DESCRIPTION
+-----------
+Reads given idx file for packed git archive created with
+git-pack-objects command, and dumps its contents.
+
+The information it outputs is subset of what you can get from
+'git-verify-pack -v'; this command only shows the packfile
+offset and SHA1 of each object.
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-ssh-fetch.html b/git-ssh-fetch.html
new file mode 100644 (file)
index 0000000..36e088c
--- /dev/null
@@ -0,0 +1,356 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-ssh-fetch(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-ssh-fetch(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-ssh-fetch -\r
+   Pulls from a remote repository over ssh connection\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-ssh-fetch</em> [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] commit-id url</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Pulls from a remote repository over ssh connection, invoking\r
+git-ssh-upload on the other end. It functions identically to\r
+git-ssh-upload, aside from which end you run it on.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+commit-id\r
+</dt>\r
+<dd>\r
+<p>\r
+        Either the hash or the filename under [URL]/refs/ to\r
+        pull.\r
+</p>\r
+</dd>\r
+<dt>\r
+-c\r
+</dt>\r
+<dd>\r
+<p>\r
+        Get the commit objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+-t\r
+</dt>\r
+<dd>\r
+<p>\r
+        Get trees associated with the commit objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+-a\r
+</dt>\r
+<dd>\r
+<p>\r
+        Get all the objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+        Report what is downloaded.\r
+</p>\r
+</dd>\r
+<dt>\r
+-w\r
+</dt>\r
+<dd>\r
+<p>\r
+        Writes the commit-id into the filename under $GIT_DIR/refs/ on\r
+        the local end after the transfer is complete.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Daniel Barkalow &lt;barkalow@iabervon.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:45 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-ssh-fetch.txt b/git-ssh-fetch.txt
new file mode 100644 (file)
index 0000000..b7116b3
--- /dev/null
@@ -0,0 +1,51 @@
+git-ssh-fetch(1)
+================
+
+NAME
+----
+git-ssh-fetch - Pulls from a remote repository over ssh connection
+
+
+
+SYNOPSIS
+--------
+'git-ssh-fetch' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] commit-id url
+
+DESCRIPTION
+-----------
+Pulls from a remote repository over ssh connection, invoking
+git-ssh-upload on the other end. It functions identically to
+git-ssh-upload, aside from which end you run it on.
+
+
+OPTIONS
+-------
+commit-id::
+        Either the hash or the filename under [URL]/refs/ to
+        pull.
+
+-c::
+       Get the commit objects.
+-t::
+       Get trees associated with the commit objects.
+-a::
+       Get all the objects.
+-v::
+       Report what is downloaded.
+-w::
+        Writes the commit-id into the filename under $GIT_DIR/refs/ on
+        the local end after the transfer is complete.
+
+
+Author
+------
+Written by Daniel Barkalow <barkalow@iabervon.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-ssh-upload.html b/git-ssh-upload.html
new file mode 100644 (file)
index 0000000..72bf8d0
--- /dev/null
@@ -0,0 +1,355 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-ssh-upload(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-ssh-upload(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-ssh-upload -\r
+   Pushes to a remote repository over ssh connection\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-ssh-upload</em> [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] commit-id url</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Pushes from a remote repository over ssh connection, invoking\r
+git-ssh-fetch on the other end. It functions identically to\r
+git-ssh-fetch, aside from which end you run it on.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+commit-id\r
+</dt>\r
+<dd>\r
+<p>\r
+        Id of commit to push.\r
+</p>\r
+</dd>\r
+<dt>\r
+-c\r
+</dt>\r
+<dd>\r
+<p>\r
+        Get the commit objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+-t\r
+</dt>\r
+<dd>\r
+<p>\r
+        Get tree associated with the requested commit object.\r
+</p>\r
+</dd>\r
+<dt>\r
+-a\r
+</dt>\r
+<dd>\r
+<p>\r
+        Get all the objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+        Report what is uploaded.\r
+</p>\r
+</dd>\r
+<dt>\r
+-w\r
+</dt>\r
+<dd>\r
+<p>\r
+        Writes the commit-id into the filename under [URL]/refs/ on\r
+        the remote end after the transfer is complete.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Daniel Barkalow &lt;barkalow@iabervon.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Daniel Barkalow</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:46 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-ssh-upload.txt b/git-ssh-upload.txt
new file mode 100644 (file)
index 0000000..702674e
--- /dev/null
@@ -0,0 +1,47 @@
+git-ssh-upload(1)
+=================
+
+NAME
+----
+git-ssh-upload - Pushes to a remote repository over ssh connection
+
+
+SYNOPSIS
+--------
+'git-ssh-upload' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] commit-id url
+
+DESCRIPTION
+-----------
+Pushes from a remote repository over ssh connection, invoking
+git-ssh-fetch on the other end. It functions identically to
+git-ssh-fetch, aside from which end you run it on.
+
+OPTIONS
+-------
+commit-id::
+        Id of commit to push.
+
+-c::
+        Get the commit objects.
+-t::
+        Get tree associated with the requested commit object.
+-a::
+        Get all the objects.
+-v::
+        Report what is uploaded.
+-w::
+        Writes the commit-id into the filename under [URL]/refs/ on
+        the remote end after the transfer is complete.
+
+Author
+------
+Written by Daniel Barkalow <barkalow@iabervon.org>
+
+Documentation
+--------------
+Documentation by Daniel Barkalow
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-status.html b/git-status.html
new file mode 100644 (file)
index 0000000..86383d3
--- /dev/null
@@ -0,0 +1,313 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-status(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-status(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-status -\r
+   Show working tree status.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-status</em></p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Examines paths in the working tree that has changes unrecorded\r
+to the index file, and changes between the index file and the\r
+current HEAD commit.  The former paths are what you _could_\r
+commit by running <em>git-update-index</em> before running <em>git\r
+commit</em>, and the latter paths are what you _would_ commit by\r
+running <em>git commit</em>.</p>\r
+<p>If there is no path that is different between the index file and\r
+the current HEAD commit, the command exits with non-zero\r
+status.</p>\r
+</div>\r
+<h2>OUTPUT</h2>\r
+<div class="sectionbody">\r
+<p>The output from this command is designed to be used as a commit\r
+template comments, and all the output lines are prefixed with <em>#</em>.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt; and\r
+Junio C Hamano &lt;junkio@cox.net&gt;.</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:46 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-status.txt b/git-status.txt
new file mode 100644 (file)
index 0000000..753fc08
--- /dev/null
@@ -0,0 +1,45 @@
+git-status(1)
+=============
+
+NAME
+----
+git-status - Show working tree status.
+
+
+SYNOPSIS
+--------
+'git-status'
+
+DESCRIPTION
+-----------
+Examines paths in the working tree that has changes unrecorded
+to the index file, and changes between the index file and the
+current HEAD commit.  The former paths are what you _could_
+commit by running 'git-update-index' before running 'git
+commit', and the latter paths are what you _would_ commit by
+running 'git commit'.
+
+If there is no path that is different between the index file and
+the current HEAD commit, the command exits with non-zero
+status.
+
+
+OUTPUT
+------
+The output from this command is designed to be used as a commit
+template comments, and all the output lines are prefixed with '#'.
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org> and
+Junio C Hamano <junkio@cox.net>.
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-stripspace.html b/git-stripspace.html
new file mode 100644 (file)
index 0000000..219c018
--- /dev/null
@@ -0,0 +1,312 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-stripspace(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-stripspace(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-stripspace -\r
+   Filter out empty lines.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-stripspace</em> &lt; &lt;stream&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Remove multiple empty lines, and empty lines at beginning and end.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;stream&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Byte stream to act on.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:47 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-stripspace.txt b/git-stripspace.txt
new file mode 100644 (file)
index 0000000..528a1b6
--- /dev/null
@@ -0,0 +1,33 @@
+git-stripspace(1)
+=================
+
+NAME
+----
+git-stripspace - Filter out empty lines.
+
+
+SYNOPSIS
+--------
+'git-stripspace' < <stream>
+
+DESCRIPTION
+-----------
+Remove multiple empty lines, and empty lines at beginning and end.
+
+OPTIONS
+-------
+<stream>::
+       Byte stream to act on.
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-svnimport.html b/git-svnimport.html
new file mode 100644 (file)
index 0000000..2b38ab9
--- /dev/null
@@ -0,0 +1,490 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-svnimport(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-svnimport(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-svnimport -\r
+   Import a SVN repository into git\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-svnimport</em> [ -o &lt;branch-for-HEAD&gt; ] [ -h ] [ -v ] [ -d | -D ]\r
+                        [ -C &lt;GIT_repository&gt; ] [ -i ] [ -u ] [-l limit_rev]\r
+                        [ -b branch_subdir ] [ -t trunk_subdir ] [ -T tag_subdir ]\r
+                        [ -s start_chg ] [ -m ] [ -M regex ]\r
+                        &lt;SVN_repository_URL&gt; [ &lt;path&gt; ]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Imports a SVN repository into git. It will either create a new\r
+repository, or incrementally import into an existing one.</p>\r
+<div class="hlist"><table>\r
+<tr>\r
+<td class="hlist1">\r
+SVN access is done by the SVN\r
+</td>\r
+<td class="hlist2">\r
+Perl module.\r
+</td>\r
+</tr>\r
+</table></div>\r
+<p>git-svnimport assumes that SVN repositories are organized into one\r
+"trunk" directory where the main development happens, "branch/FOO"\r
+directories for branches, and "/tags/FOO" directories for tags.\r
+Other subdirectories are ignored.</p>\r
+<p>git-svnimport creates a file ".git/svn2git", which is required for\r
+incremental SVN imports.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-C &lt;target-dir&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The GIT repository to import to.  If the directory doesn't\r
+        exist, it will be created.  Default is the current directory.\r
+</p>\r
+</dd>\r
+<dt>\r
+-s &lt;start_rev&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Start importing at this SVN change number. The  default is 1.\r
+</p>\r
+<p>When importing incementally, you might need to edit the .git/svn2git file.</p>\r
+</dd>\r
+<dt>\r
+-i\r
+</dt>\r
+<dd>\r
+<p>\r
+        Import-only: don't perform a checkout after importing.  This option\r
+        ensures the working directory and index remain untouched and will\r
+        not create them if they do not exist.\r
+</p>\r
+</dd>\r
+<dt>\r
+-t &lt;trunk_subdir&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Name the SVN trunk. Default "trunk".\r
+</p>\r
+</dd>\r
+<dt>\r
+-T &lt;tag_subdir&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Name the SVN subdirectory for tags. Default "tags".\r
+</p>\r
+</dd>\r
+<dt>\r
+-b &lt;branch_subdir&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Name the SVN subdirectory for branches. Default "branches".\r
+</p>\r
+</dd>\r
+<dt>\r
+-o &lt;branch-for-HEAD&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The <em>trunk</em> branch from SVN is imported to the <em>origin</em> branch within\r
+        the git repository. Use this option if you want to import into a\r
+        different branch.\r
+</p>\r
+</dd>\r
+<dt>\r
+-m\r
+</dt>\r
+<dd>\r
+<p>\r
+        Attempt to detect merges based on the commit message. This option\r
+        will enable default regexes that try to capture the name source\r
+        branch name from the commit message.\r
+</p>\r
+</dd>\r
+<dt>\r
+-M &lt;regex&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Attempt to detect merges based on the commit message with a custom\r
+        regex. It can be used with -m to also see the default regexes.\r
+        You must escape forward slashes.\r
+</p>\r
+</dd>\r
+<dt>\r
+-l &lt;max_rev&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Specify a maximum revision number to pull.\r
+</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>Formerly, this option controlled how many revisions to pull, due to\r
+SVN memory leaks. (These have been worked around.)</tt></pre>\r
+</div></div>\r
+</dd>\r
+<dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+        Verbosity: let <em>svnimport</em> report what it is doing.\r
+</p>\r
+</dd>\r
+<dt>\r
+-d\r
+</dt>\r
+<dd>\r
+<p>\r
+        Use direct HTTP requests if possible. The "&lt;path&gt;" argument is used\r
+        only for retrieving the SVN logs; the path to the contents is\r
+        included in the SVN log.\r
+</p>\r
+</dd>\r
+<dt>\r
+-D\r
+</dt>\r
+<dd>\r
+<p>\r
+        Use direct HTTP requests if possible. The "&lt;path&gt;" argument is used\r
+        for retrieving the logs, as well as for the contents.\r
+</p>\r
+<p>There's no safe way to automatically find out which of these options to\r
+use, so you need to try both. Usually, the one that's wrong will die\r
+with a 40x error pretty quickly.</p>\r
+</dd>\r
+<dt>\r
+&lt;SVN_repository_URL&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The URL of the SVN module you want to import. For local\r
+        repositories, use "file:///absolute/path".\r
+</p>\r
+<p>If you're using the "-d" or "-D" option, this is the URL of the SVN\r
+repository itself; it usually ends in "/svn".</p>\r
+</dd>\r
+<dt>\r
+&lt;SVN_repository_URL&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The URL of the SVN module you want to import. For local\r
+        repositories, use "file:///absolute/path".\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>&lt;path&gt;\r
+        The path to the module you want to check out.</p>\r
+<dl>\r
+<dt>\r
+-h\r
+</dt>\r
+<dd>\r
+<p>\r
+        Print a short usage message and exit.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>OUTPUT</h2>\r
+<div class="sectionbody">\r
+<p>If <em>-v</em> is specified, the script reports what it is doing.</p>\r
+<p>Otherwise, success is indicated the Unix way, i.e. by simply exiting with\r
+a zero exit status.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Matthias Urlichs &lt;smurf@smurf.noris.de&gt;, with help from\r
+various participants of the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+<p>Based on a cvs2git script by the same author.</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Matthias Urlichs &lt;smurf@smurf.noris.de&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:47 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-svnimport.txt b/git-svnimport.txt
new file mode 100644 (file)
index 0000000..f8dbee7
--- /dev/null
@@ -0,0 +1,134 @@
+git-svnimport(1)
+================
+v0.1, July 2005
+
+NAME
+----
+git-svnimport - Import a SVN repository into git
+
+
+SYNOPSIS
+--------
+'git-svnimport' [ -o <branch-for-HEAD> ] [ -h ] [ -v ] [ -d | -D ]
+                       [ -C <GIT_repository> ] [ -i ] [ -u ] [-l limit_rev]
+                       [ -b branch_subdir ] [ -t trunk_subdir ] [ -T tag_subdir ]
+                       [ -s start_chg ] [ -m ] [ -M regex ]
+                       <SVN_repository_URL> [ <path> ]
+
+
+DESCRIPTION
+-----------
+Imports a SVN repository into git. It will either create a new
+repository, or incrementally import into an existing one.
+
+SVN access is done by the SVN:: Perl module.
+
+git-svnimport assumes that SVN repositories are organized into one
+"trunk" directory where the main development happens, "branch/FOO"
+directories for branches, and "/tags/FOO" directories for tags.
+Other subdirectories are ignored.
+
+git-svnimport creates a file ".git/svn2git", which is required for
+incremental SVN imports.
+
+OPTIONS
+-------
+-C <target-dir>::
+        The GIT repository to import to.  If the directory doesn't
+        exist, it will be created.  Default is the current directory.
+
+-s <start_rev>::
+        Start importing at this SVN change number. The  default is 1.
++
+When importing incementally, you might need to edit the .git/svn2git file.
+
+-i::
+       Import-only: don't perform a checkout after importing.  This option
+       ensures the working directory and index remain untouched and will
+       not create them if they do not exist.
+
+-t <trunk_subdir>::
+       Name the SVN trunk. Default "trunk".
+
+-T <tag_subdir>::
+       Name the SVN subdirectory for tags. Default "tags".
+
+-b <branch_subdir>::
+       Name the SVN subdirectory for branches. Default "branches".
+
+-o <branch-for-HEAD>::
+       The 'trunk' branch from SVN is imported to the 'origin' branch within
+       the git repository. Use this option if you want to import into a
+       different branch.
+
+-m::
+       Attempt to detect merges based on the commit message. This option
+       will enable default regexes that try to capture the name source
+       branch name from the commit message.
+
+-M <regex>::
+       Attempt to detect merges based on the commit message with a custom
+       regex. It can be used with -m to also see the default regexes.
+       You must escape forward slashes.
+
+-l <max_rev>::
+       Specify a maximum revision number to pull.
+
+       Formerly, this option controlled how many revisions to pull, due to
+       SVN memory leaks. (These have been worked around.)
+
+-v::
+       Verbosity: let 'svnimport' report what it is doing.
+
+-d::
+       Use direct HTTP requests if possible. The "<path>" argument is used
+       only for retrieving the SVN logs; the path to the contents is
+       included in the SVN log.
+
+-D::
+       Use direct HTTP requests if possible. The "<path>" argument is used
+       for retrieving the logs, as well as for the contents.
++
+There's no safe way to automatically find out which of these options to
+use, so you need to try both. Usually, the one that's wrong will die
+with a 40x error pretty quickly.
+
+<SVN_repository_URL>::
+       The URL of the SVN module you want to import. For local
+       repositories, use "file:///absolute/path".
++
+If you're using the "-d" or "-D" option, this is the URL of the SVN
+repository itself; it usually ends in "/svn".
+
+<SVN_repository_URL>::
+       The URL of the SVN module you want to import. For local
+       repositories, use "file:///absolute/path".
+
+<path>
+       The path to the module you want to check out.
+
+-h::
+       Print a short usage message and exit.
+
+OUTPUT
+------
+If '-v' is specified, the script reports what it is doing.
+
+Otherwise, success is indicated the Unix way, i.e. by simply exiting with
+a zero exit status.
+
+Author
+------
+Written by Matthias Urlichs <smurf@smurf.noris.de>, with help from
+various participants of the git-list <git@vger.kernel.org>.
+
+Based on a cvs2git script by the same author.
+
+Documentation
+--------------
+Documentation by Matthias Urlichs <smurf@smurf.noris.de>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-symbolic-ref.html b/git-symbolic-ref.html
new file mode 100644 (file)
index 0000000..a9f80a7
--- /dev/null
@@ -0,0 +1,321 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-symbolic-ref(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-symbolic-ref(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-symbolic-ref -\r
+   read and modify symbolic refs\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-symbolic-ref</em> &lt;name&gt; [&lt;ref&gt;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Given one argument, reads which branch head the given symbolic\r
+ref refers to and outputs its path, relative to the <tt>.git/</tt>\r
+directory.  Typically you would give <tt>HEAD</tt> as the &lt;name&gt;\r
+argument to see on which branch your working tree is on.</p>\r
+<p>Give two arguments, create or update a symbolic ref &lt;name&gt; to\r
+point at the given branch &lt;ref&gt;.</p>\r
+<p>Traditionally, <tt>.git/HEAD</tt> is a symlink pointing at\r
+<tt>refs/heads/master</tt>.  When we want to switch to another branch,\r
+we did <tt>ln -sf refs/heads/newbranch .git/HEAD</tt>, and when we want\r
+to find out which branch we are on, we did <tt>readlink .git/HEAD</tt>.\r
+This was fine, and internally that is what still happens by\r
+default, but on platforms that do not have working symlinks,\r
+or that do not have the <tt>readlink(1)</tt> command, this was a bit\r
+cumbersome.  On some platforms, <tt>ln -sf</tt> does not even work as\r
+advertised (horrors).</p>\r
+<p>A symbolic ref can be a regular file that stores a string that\r
+begins with <tt>ref: refs/</tt>.  For example, your <tt>.git/HEAD</tt> <strong>can</strong>\r
+be a regular file whose contents is <tt>ref: refs/heads/master</tt>.\r
+This can be used on a filesystem that does not support symbolic\r
+links.  Instead of doing <tt>readlink .git/HEAD</tt>, <tt>git-symbolic-ref\r
+HEAD</tt> can be used to find out which branch we are on.  To point\r
+the HEAD to <tt>newbranch</tt>, instead of <tt>ln -sf refs/heads/newbranch\r
+.git/HEAD</tt>, <tt>git-symbolic-ref HEAD refs/heads/newbranch</tt> can be\r
+used.</p>\r
+<p>Currently, .git/HEAD uses a regular file symbolic ref on Cygwin,\r
+and everywhere else it is implemented as a symlink.  This can be\r
+changed at compilation time.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:48 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-symbolic-ref.txt b/git-symbolic-ref.txt
new file mode 100644 (file)
index 0000000..68ac6a6
--- /dev/null
@@ -0,0 +1,52 @@
+git-symbolic-ref(1)
+===================
+
+NAME
+----
+git-symbolic-ref - read and modify symbolic refs
+
+SYNOPSIS
+--------
+'git-symbolic-ref' <name> [<ref>]
+
+DESCRIPTION
+-----------
+Given one argument, reads which branch head the given symbolic
+ref refers to and outputs its path, relative to the `.git/`
+directory.  Typically you would give `HEAD` as the <name>
+argument to see on which branch your working tree is on.
+
+Give two arguments, create or update a symbolic ref <name> to
+point at the given branch <ref>.
+
+Traditionally, `.git/HEAD` is a symlink pointing at
+`refs/heads/master`.  When we want to switch to another branch,
+we did `ln -sf refs/heads/newbranch .git/HEAD`, and when we want
+to find out which branch we are on, we did `readlink .git/HEAD`.
+This was fine, and internally that is what still happens by
+default, but on platforms that do not have working symlinks,
+or that do not have the `readlink(1)` command, this was a bit
+cumbersome.  On some platforms, `ln -sf` does not even work as
+advertised (horrors).
+
+A symbolic ref can be a regular file that stores a string that
+begins with `ref: refs/`.  For example, your `.git/HEAD` *can*
+be a regular file whose contents is `ref: refs/heads/master`.
+This can be used on a filesystem that does not support symbolic
+links.  Instead of doing `readlink .git/HEAD`, `git-symbolic-ref
+HEAD` can be used to find out which branch we are on.  To point
+the HEAD to `newbranch`, instead of `ln -sf refs/heads/newbranch
+.git/HEAD`, `git-symbolic-ref HEAD refs/heads/newbranch` can be
+used.
+
+Currently, .git/HEAD uses a regular file symbolic ref on Cygwin,
+and everywhere else it is implemented as a symlink.  This can be
+changed at compilation time.
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-tag.html b/git-tag.html
new file mode 100644 (file)
index 0000000..4c46ca2
--- /dev/null
@@ -0,0 +1,366 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-tag(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-tag(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-tag -\r
+   Create a tag object signed with GPG\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-tag</em> [-a | -s | -u &lt;key-id&gt;] [-f | -d] [-m &lt;msg&gt;] &lt;name&gt; [&lt;head&gt;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Adds a <em>tag</em> reference in .git/refs/tags/</p>\r
+<p>Unless <tt>-f</tt> is given, the tag must not yet exist in\r
+<tt>.git/refs/tags/</tt> directory.</p>\r
+<p>If one of <tt>-a</tt>, <tt>-s</tt>, or <tt>-u &lt;key-id&gt;</tt> is passed, the command\r
+creates a <em>tag</em> object, and requires the tag message.  Unless\r
+<tt>-m &lt;msg&gt;</tt> is given, an editor is started for the user to type\r
+in the tag message.</p>\r
+<p>Otherwise just the SHA1 object name of the commit object is\r
+written (i.e. a lightweight tag).</p>\r
+<p>A GnuPG signed tag object will be created when <tt>-s</tt> or <tt>-u\r
+&lt;key-id&gt;</tt> is used.  When <tt>-u &lt;key-id&gt;</tt> is not used, the\r
+committer identity for the current user is used to find the\r
+GnuPG key for signing.</p>\r
+<p><tt>-d &lt;tag&gt;</tt> deletes the tag.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-a\r
+</dt>\r
+<dd>\r
+<p>\r
+        Make an unsigned, annotated tag object\r
+</p>\r
+</dd>\r
+<dt>\r
+-s\r
+</dt>\r
+<dd>\r
+<p>\r
+        Make a GPG-signed tag, using the default e-mail address's key\r
+</p>\r
+</dd>\r
+<dt>\r
+-u &lt;key-id&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Make a GPG-signed tag, using the given key\r
+</p>\r
+</dd>\r
+<dt>\r
+-f\r
+</dt>\r
+<dd>\r
+<p>\r
+        Replace an existing tag with the given name (instead of failing)\r
+</p>\r
+</dd>\r
+<dt>\r
+-d\r
+</dt>\r
+<dd>\r
+<p>\r
+        Delete an existing tag with the given name\r
+</p>\r
+</dd>\r
+<dt>\r
+-m &lt;msg&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Use the given tag message (instead of prompting)\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;,\r
+Junio C Hamano &lt;junkio@cox.net&gt; and Chris Wright &lt;chrisw@osdl.org&gt;.</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:49 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-tag.txt b/git-tag.txt
new file mode 100644 (file)
index 0000000..e8892bb
--- /dev/null
@@ -0,0 +1,67 @@
+git-tag(1)
+==========
+
+NAME
+----
+git-tag -  Create a tag object signed with GPG
+
+
+SYNOPSIS
+--------
+'git-tag' [-a | -s | -u <key-id>] [-f | -d] [-m <msg>] <name> [<head>]
+
+DESCRIPTION
+-----------
+Adds a 'tag' reference in .git/refs/tags/
+
+Unless `-f` is given, the tag must not yet exist in
+`.git/refs/tags/` directory.
+
+If one of `-a`, `-s`, or `-u <key-id>` is passed, the command
+creates a 'tag' object, and requires the tag message.  Unless
+`-m <msg>` is given, an editor is started for the user to type
+in the tag message.
+
+Otherwise just the SHA1 object name of the commit object is
+written (i.e. a lightweight tag).
+
+A GnuPG signed tag object will be created when `-s` or `-u
+<key-id>` is used.  When `-u <key-id>` is not used, the
+committer identity for the current user is used to find the
+GnuPG key for signing.
+
+`-d <tag>` deletes the tag.
+
+OPTIONS
+-------
+-a::
+       Make an unsigned, annotated tag object
+
+-s::
+       Make a GPG-signed tag, using the default e-mail address's key
+
+-u <key-id>::
+       Make a GPG-signed tag, using the given key
+
+-f::
+       Replace an existing tag with the given name (instead of failing)
+
+-d::
+       Delete an existing tag with the given name
+
+-m <msg>::
+       Use the given tag message (instead of prompting)
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>,
+Junio C Hamano <junkio@cox.net> and Chris Wright <chrisw@osdl.org>.
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-tar-tree.html b/git-tar-tree.html
new file mode 100644 (file)
index 0000000..26b84f6
--- /dev/null
@@ -0,0 +1,307 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-tar-tree(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-tar-tree(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-tar-tree -\r
+   Creates a tar archive of the files in the named tree\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-tar-tree</em> &lt;tree-ish&gt; [ &lt;base&gt; ]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Creates a tar archive containing the tree structure for the named tree.\r
+When &lt;base&gt; is specified it is added as a leading path to the files in the\r
+generated tar archive.</p>\r
+<p>git-tar-tree behaves differently when given a tree ID versus when given\r
+a commit ID or tag ID.  In the first case the current time is used as\r
+modification time of each file in the archive.  In the latter case the\r
+commit time as recorded in the referenced commit object is used instead.\r
+Additionally the commit ID is stored in a global extended pax header.\r
+It can be extracted using git-get-tar-commit-id.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Rene Scharfe.</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:50 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-tar-tree.txt b/git-tar-tree.txt
new file mode 100644 (file)
index 0000000..2139b6f
--- /dev/null
@@ -0,0 +1,38 @@
+git-tar-tree(1)
+===============
+
+NAME
+----
+git-tar-tree - Creates a tar archive of the files in the named tree
+
+
+SYNOPSIS
+--------
+'git-tar-tree' <tree-ish> [ <base> ]
+
+DESCRIPTION
+-----------
+Creates a tar archive containing the tree structure for the named tree.
+When <base> is specified it is added as a leading path to the files in the
+generated tar archive.
+
+git-tar-tree behaves differently when given a tree ID versus when given
+a commit ID or tag ID.  In the first case the current time is used as
+modification time of each file in the archive.  In the latter case the
+commit time as recorded in the referenced commit object is used instead.
+Additionally the commit ID is stored in a global extended pax header.
+It can be extracted using git-get-tar-commit-id.
+
+
+Author
+------
+Written by Rene Scharfe.
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-unpack-file.html b/git-unpack-file.html
new file mode 100644 (file)
index 0000000..2bf9a41
--- /dev/null
@@ -0,0 +1,314 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-unpack-file(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-unpack-file(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-unpack-file -\r
+   Creates a temporary file with a blob's contents\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-unpack-file</em> &lt;blob&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Creates a file holding the contents of the blob specified by sha1. It\r
+returns the name of the temporary file in the following format:\r
+        .merge_file_XXXXX</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;blob&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Must be a blob id\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:51 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-unpack-file.txt b/git-unpack-file.txt
new file mode 100644 (file)
index 0000000..213dc81
--- /dev/null
@@ -0,0 +1,36 @@
+git-unpack-file(1)
+==================
+
+NAME
+----
+git-unpack-file - Creates a temporary file with a blob's contents
+
+
+
+SYNOPSIS
+--------
+'git-unpack-file' <blob>
+
+DESCRIPTION
+-----------
+Creates a file holding the contents of the blob specified by sha1. It
+returns the name of the temporary file in the following format:
+       .merge_file_XXXXX
+
+OPTIONS
+-------
+<blob>::
+       Must be a blob id
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-unpack-objects.html b/git-unpack-objects.html
new file mode 100644 (file)
index 0000000..4e7a689
--- /dev/null
@@ -0,0 +1,324 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-unpack-objects(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-unpack-objects(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-unpack-objects -\r
+   Unpack objects from a packed archive.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-unpack-objects</em> [-n] [-q] &lt;pack-file</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Reads a packed archive (.pack) from the standard input, and\r
+expands the objects contained in the pack into "one-file\r
+one-object" format in $GIT_OBJECT_DIRECTORY.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-n\r
+</dt>\r
+<dd>\r
+<p>\r
+        Only list the objects that would be unpacked, don't actually unpack\r
+        them.\r
+</p>\r
+</dd>\r
+<dt>\r
+-q\r
+</dt>\r
+<dd>\r
+<p>\r
+        The command usually shows percentage progress.  This\r
+        flag suppresses it.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:51 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-unpack-objects.txt b/git-unpack-objects.txt
new file mode 100644 (file)
index 0000000..31ea34d
--- /dev/null
@@ -0,0 +1,42 @@
+git-unpack-objects(1)
+=====================
+
+NAME
+----
+git-unpack-objects - Unpack objects from a packed archive.
+
+
+SYNOPSIS
+--------
+'git-unpack-objects' [-n] [-q] <pack-file
+
+
+DESCRIPTION
+-----------
+Reads a packed archive (.pack) from the standard input, and
+expands the objects contained in the pack into "one-file
+one-object" format in $GIT_OBJECT_DIRECTORY.
+
+OPTIONS
+-------
+-n::
+        Only list the objects that would be unpacked, don't actually unpack
+        them.
+
+-q::
+       The command usually shows percentage progress.  This
+       flag suppresses it.
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+-------------
+Documentation by Junio C Hamano
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-update-index.html b/git-update-index.html
new file mode 100644 (file)
index 0000000..d97d30d
--- /dev/null
@@ -0,0 +1,584 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-update-index(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-update-index(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-update-index -\r
+   Modifies the index or directory cache\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-update-index</em>\r
+             [--add] [--remove | --force-remove] [--replace]\r
+             [--refresh [-q] [--unmerged] [--ignore-missing]]\r
+             [--cacheinfo &lt;mode&gt; &lt;object&gt; &lt;file&gt;]*\r
+             [--chmod=(+|-)x]\r
+             [--info-only] [--index-info]\r
+             [-z] [--stdin]\r
+             [--verbose]\r
+             [--] [&lt;file&gt;]*</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Modifies the index or directory cache. Each file mentioned is updated\r
+into the index and any <em>unmerged</em> or <em>needs updating</em> state is\r
+cleared.</p>\r
+<p>The way "git-update-index" handles files it is told about can be modified\r
+using the various options:</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--add\r
+</dt>\r
+<dd>\r
+<p>\r
+        If a specified file isn't in the index already then it's\r
+        added.\r
+        Default behaviour is to ignore new files.\r
+</p>\r
+</dd>\r
+<dt>\r
+--remove\r
+</dt>\r
+<dd>\r
+<p>\r
+        If a specified file is in the index but is missing then it's\r
+        removed.\r
+        Default behaviour is to ignore removed file.\r
+</p>\r
+</dd>\r
+<dt>\r
+--refresh\r
+</dt>\r
+<dd>\r
+<p>\r
+        Looks at the current index and checks to see if merges or\r
+        updates are needed by checking stat() information.\r
+</p>\r
+</dd>\r
+<dt>\r
+-q\r
+</dt>\r
+<dd>\r
+<p>\r
+        Quiet.  If --refresh finds that the index needs an update, the\r
+        default behavior is to error out.  This option makes\r
+        git-update-index continue anyway.\r
+</p>\r
+</dd>\r
+<dt>\r
+--unmerged\r
+</dt>\r
+<dd>\r
+<p>\r
+        If --refresh finds unmerged changes in the index, the default\r
+        behavior is to error out.  This option makes git-update-index\r
+        continue anyway.\r
+</p>\r
+</dd>\r
+<dt>\r
+--ignore-missing\r
+</dt>\r
+<dd>\r
+<p>\r
+        Ignores missing files during a --refresh\r
+</p>\r
+</dd>\r
+<dt>\r
+--cacheinfo &lt;mode&gt; &lt;object&gt; &lt;path&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Directly insert the specified info into the index.\r
+</p>\r
+</dd>\r
+<dt>\r
+--index-info\r
+</dt>\r
+<dd>\r
+<p>\r
+        Read index information from stdin.\r
+</p>\r
+</dd>\r
+<dt>\r
+--chmod=(+|-)x\r
+</dt>\r
+<dd>\r
+<p>\r
+        Set the execute permissions on the updated files.\r
+</p>\r
+</dd>\r
+<dt>\r
+--info-only\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not create objects in the object database for all\r
+        &lt;file&gt; arguments that follow this flag; just insert\r
+        their object IDs into the index.\r
+</p>\r
+</dd>\r
+<dt>\r
+--force-remove\r
+</dt>\r
+<dd>\r
+<p>\r
+        Remove the file from the index even when the working directory\r
+        still has such a file. (Implies --remove.)\r
+</p>\r
+</dd>\r
+<dt>\r
+--replace\r
+</dt>\r
+<dd>\r
+<p>\r
+        By default, when a file <tt>path</tt> exists in the index,\r
+        git-update-index refuses an attempt to add <tt>path/file</tt>.\r
+        Similarly if a file <tt>path/file</tt> exists, a file <tt>path</tt>\r
+        cannot be added.  With --replace flag, existing entries\r
+        that conflicts with the entry being added are\r
+        automatically removed with warning messages.\r
+</p>\r
+</dd>\r
+<dt>\r
+--stdin\r
+</dt>\r
+<dd>\r
+<p>\r
+        Instead of taking list of paths from the command line,\r
+        read list of paths from the standard input.  Paths are\r
+        separated by LF (i.e. one path per line) by default.\r
+</p>\r
+</dd>\r
+<dt>\r
+--verbose\r
+</dt>\r
+<dd>\r
+<p>\r
+        Report what is being added and removed from index.\r
+</p>\r
+</dd>\r
+<dt>\r
+-z\r
+</dt>\r
+<dd>\r
+<p>\r
+        Only meaningful with <tt>--stdin</tt>; paths are separated with\r
+        NUL character instead of LF.\r
+</p>\r
+</dd>\r
+<dt>\r
+&#8212;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not interpret any more arguments as options.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;file&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Files to act on.\r
+        Note that files beginning with <em>.</em> are discarded. This includes\r
+        <tt>./file</tt> and <tt>dir/./file</tt>. If you don't want this, then use\r
+        cleaner names.\r
+        The same applies to directories ending <em>/</em> and paths with <em>//</em>\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Using --refresh</h2>\r
+<div class="sectionbody">\r
+<p><em>--refresh</em> does not calculate a new sha1 file or bring the index\r
+up-to-date for mode/content changes. But what it <strong>does</strong> do is to\r
+"re-match" the stat information of a file with the index, so that you\r
+can refresh the index for a file that hasn't been changed but where\r
+the stat entry is out of date.</p>\r
+<p>For example, you'd want to do this after doing a "git-read-tree", to link\r
+up the stat index details with the proper files.</p>\r
+</div>\r
+<h2>Using --cacheinfo or --info-only</h2>\r
+<div class="sectionbody">\r
+<p><em>--cacheinfo</em> is used to register a file that is not in the\r
+current working directory.  This is useful for minimum-checkout\r
+merging.</p>\r
+<p>To pretend you have a file with mode and sha1 at path, say:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-update-index --cacheinfo mode sha1 path</tt></pre>\r
+</div></div>\r
+<p><em>--info-only</em> is used to register files without placing them in the object\r
+database.  This is useful for status-only repositories.</p>\r
+<p>Both <em>--cacheinfo</em> and <em>--info-only</em> behave similarly: the index is updated\r
+but the object database isn't.  <em>--cacheinfo</em> is useful when the object is\r
+in the database but the file isn't available locally.  <em>--info-only</em> is\r
+useful when the file is available, but you do not wish to update the\r
+object database.</p>\r
+</div>\r
+<h2>Using --index-info</h2>\r
+<div class="sectionbody">\r
+<p><tt>--index-info</tt> is a more powerful mechanism that lets you feed\r
+multiple entry definitions from the standard input, and designed\r
+specifically for scripts.  It can take inputs of three formats:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+mode         SP sha1          TAB path\r
+</p>\r
+<p>The first format is what "git-apply --index-info"\r
+reports, and used to reconstruct a partial tree\r
+that is used for phony merge base tree when falling\r
+back on 3-way merge.</p>\r
+</li>\r
+<li>\r
+<p>\r
+mode SP type SP sha1          TAB path\r
+</p>\r
+<p>The second format is to stuff git-ls-tree output\r
+into the index file.</p>\r
+</li>\r
+<li>\r
+<p>\r
+mode         SP sha1 SP stage TAB path\r
+</p>\r
+<p>This format is to put higher order stages into the\r
+index file and matches git-ls-files --stage output.</p>\r
+</li>\r
+</ol>\r
+<p>To place a higher stage entry to the index, the path should\r
+first be removed by feeding a mode=0 entry for the path, and\r
+then feeding necessary input lines in the third format.</p>\r
+<p>For example, starting with this index:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git ls-files -s\r
+100644 8a1218a1024a212bb3db30becd860315f9f3ac52 0       frotz</tt></pre>\r
+</div></div>\r
+<p>you can feed the following input to <tt>--index-info</tt>:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git update-index --index-info\r
+0 0000000000000000000000000000000000000000      frotz\r
+100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1       frotz\r
+100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2       frotz</tt></pre>\r
+</div></div>\r
+<p>The first line of the input feeds 0 as the mode to remove the\r
+path; the SHA1 does not matter as long as it is well formatted.\r
+Then the second and third line feeds stage 1 and stage 2 entries\r
+for that path.  After the above, we would end up with this:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git ls-files -s\r
+100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1       frotz\r
+100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2       frotz</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Examples</h2>\r
+<div class="sectionbody">\r
+<p>To update and refresh only the files already checked out:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-checkout-index -n -f -a &amp;&amp; git-update-index --ignore-missing --refresh</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Configuration</h2>\r
+<div class="sectionbody">\r
+<p>The command honors <tt>core.filemode</tt> configuration variable.  If\r
+your repository is on an filesystem whose executable bits are\r
+unreliable, this should be set to <em>false</em> (see <a href="git-repo-config.html">git-repo-config(1)</a>).\r
+This causes the command to ignore differences in file modes recorded\r
+in the index and the file mode on the filesystem if they differ only on\r
+executable bit.   On such an unfortunate filesystem, you may\r
+need to use <tt>git-update-index --chmod=</tt>.</p>\r
+</div>\r
+<h2>See Also</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-repo-config.html">git-repo-config(1)</a></p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:52 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-update-index.txt b/git-update-index.txt
new file mode 100644 (file)
index 0000000..c74311d
--- /dev/null
@@ -0,0 +1,233 @@
+git-update-index(1)
+===================
+
+NAME
+----
+git-update-index - Modifies the index or directory cache
+
+
+SYNOPSIS
+--------
+'git-update-index'
+            [--add] [--remove | --force-remove] [--replace] 
+            [--refresh [-q] [--unmerged] [--ignore-missing]]
+            [--cacheinfo <mode> <object> <file>]\*
+            [--chmod=(+|-)x]
+            [--info-only] [--index-info]
+            [-z] [--stdin]
+            [--verbose]
+            [--] [<file>]\*
+
+DESCRIPTION
+-----------
+Modifies the index or directory cache. Each file mentioned is updated
+into the index and any 'unmerged' or 'needs updating' state is
+cleared.
+
+The way "git-update-index" handles files it is told about can be modified
+using the various options:
+
+OPTIONS
+-------
+--add::
+       If a specified file isn't in the index already then it's
+       added.
+       Default behaviour is to ignore new files.
+
+--remove::
+       If a specified file is in the index but is missing then it's
+       removed.
+       Default behaviour is to ignore removed file.
+
+--refresh::
+       Looks at the current index and checks to see if merges or
+       updates are needed by checking stat() information.
+
+-q::
+        Quiet.  If --refresh finds that the index needs an update, the
+        default behavior is to error out.  This option makes
+        git-update-index continue anyway.
+
+--unmerged::
+        If --refresh finds unmerged changes in the index, the default
+        behavior is to error out.  This option makes git-update-index 
+        continue anyway.
+
+--ignore-missing::
+       Ignores missing files during a --refresh
+
+--cacheinfo <mode> <object> <path>::
+       Directly insert the specified info into the index.
+       
+--index-info::
+        Read index information from stdin.
+
+--chmod=(+|-)x::
+        Set the execute permissions on the updated files.        
+
+--info-only::
+       Do not create objects in the object database for all
+       <file> arguments that follow this flag; just insert
+       their object IDs into the index.
+
+--force-remove::
+       Remove the file from the index even when the working directory
+       still has such a file. (Implies --remove.)
+
+--replace::
+       By default, when a file `path` exists in the index,
+       git-update-index refuses an attempt to add `path/file`.
+       Similarly if a file `path/file` exists, a file `path`
+       cannot be added.  With --replace flag, existing entries
+       that conflicts with the entry being added are
+       automatically removed with warning messages.
+
+--stdin::
+       Instead of taking list of paths from the command line,
+       read list of paths from the standard input.  Paths are
+       separated by LF (i.e. one path per line) by default.
+
+--verbose::
+        Report what is being added and removed from index.
+
+-z::
+       Only meaningful with `--stdin`; paths are separated with
+       NUL character instead of LF.
+
+--::
+       Do not interpret any more arguments as options.
+
+<file>::
+       Files to act on.
+       Note that files beginning with '.' are discarded. This includes
+       `./file` and `dir/./file`. If you don't want this, then use     
+       cleaner names.
+       The same applies to directories ending '/' and paths with '//'
+
+Using --refresh
+---------------
+'--refresh' does not calculate a new sha1 file or bring the index
+up-to-date for mode/content changes. But what it *does* do is to
+"re-match" the stat information of a file with the index, so that you
+can refresh the index for a file that hasn't been changed but where
+the stat entry is out of date.
+
+For example, you'd want to do this after doing a "git-read-tree", to link
+up the stat index details with the proper files.
+
+Using --cacheinfo or --info-only
+--------------------------------
+'--cacheinfo' is used to register a file that is not in the
+current working directory.  This is useful for minimum-checkout
+merging.
+
+To pretend you have a file with mode and sha1 at path, say:
+
+----------------
+$ git-update-index --cacheinfo mode sha1 path
+----------------
+
+'--info-only' is used to register files without placing them in the object
+database.  This is useful for status-only repositories.
+
+Both '--cacheinfo' and '--info-only' behave similarly: the index is updated
+but the object database isn't.  '--cacheinfo' is useful when the object is
+in the database but the file isn't available locally.  '--info-only' is
+useful when the file is available, but you do not wish to update the
+object database.
+
+
+Using --index-info
+------------------
+
+`--index-info` is a more powerful mechanism that lets you feed
+multiple entry definitions from the standard input, and designed
+specifically for scripts.  It can take inputs of three formats:
+
+    . mode         SP sha1          TAB path
++
+The first format is what "git-apply --index-info"
+reports, and used to reconstruct a partial tree
+that is used for phony merge base tree when falling
+back on 3-way merge.
+
+    . mode SP type SP sha1          TAB path
++
+The second format is to stuff git-ls-tree output
+into the index file.
+
+    . mode         SP sha1 SP stage TAB path
++
+This format is to put higher order stages into the
+index file and matches git-ls-files --stage output.
+
+To place a higher stage entry to the index, the path should
+first be removed by feeding a mode=0 entry for the path, and
+then feeding necessary input lines in the third format.
+
+For example, starting with this index:
+
+------------
+$ git ls-files -s
+100644 8a1218a1024a212bb3db30becd860315f9f3ac52 0       frotz
+------------
+
+you can feed the following input to `--index-info`:
+
+------------
+$ git update-index --index-info
+0 0000000000000000000000000000000000000000     frotz
+100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1      frotz
+100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2      frotz
+------------
+
+The first line of the input feeds 0 as the mode to remove the
+path; the SHA1 does not matter as long as it is well formatted.
+Then the second and third line feeds stage 1 and stage 2 entries
+for that path.  After the above, we would end up with this:
+
+------------
+$ git ls-files -s
+100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1      frotz
+100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2      frotz
+------------
+
+
+Examples
+--------
+To update and refresh only the files already checked out:
+
+----------------
+$ git-checkout-index -n -f -a && git-update-index --ignore-missing --refresh
+----------------
+
+
+Configuration
+-------------
+
+The command honors `core.filemode` configuration variable.  If
+your repository is on an filesystem whose executable bits are
+unreliable, this should be set to 'false' (see gitlink:git-repo-config[1]).
+This causes the command to ignore differences in file modes recorded
+in the index and the file mode on the filesystem if they differ only on
+executable bit.   On such an unfortunate filesystem, you may
+need to use `git-update-index --chmod=`.
+
+
+See Also
+--------
+gitlink:git-repo-config[1]
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-update-ref.html b/git-update-ref.html
new file mode 100644 (file)
index 0000000..7c887b6
--- /dev/null
@@ -0,0 +1,329 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-update-ref(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-update-ref(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-update-ref -\r
+   update the object name stored in a ref safely\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><tt>git-update-ref</tt> &lt;ref&gt; &lt;newvalue&gt; [&lt;oldvalue&gt;]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Given two arguments, stores the &lt;newvalue&gt; in the &lt;ref&gt;, possibly\r
+dereferencing the symbolic refs.  E.g. <tt>git-update-ref HEAD\r
+&lt;newvalue&gt;</tt> updates the current branch head to the new object.</p>\r
+<p>Given three arguments, stores the &lt;newvalue&gt; in the &lt;ref&gt;,\r
+possibly dereferencing the symbolic refs, after verifying that\r
+the current value of the &lt;ref&gt; matches &lt;oldvalue&gt;.\r
+E.g. <tt>git-update-ref refs/heads/master &lt;newvalue&gt; &lt;oldvalue&gt;</tt>\r
+updates the master branch head to &lt;newvalue&gt; only if its current\r
+value is &lt;oldvalue&gt;.</p>\r
+<p>It also allows a "ref" file to be a symbolic pointer to another\r
+ref file by starting with the four-byte header sequence of\r
+"ref:".</p>\r
+<p>More importantly, it allows the update of a ref file to follow\r
+these symbolic pointers, whether they are symlinks or these\r
+"regular file symbolic refs".  It follows <strong>real</strong> symlinks only\r
+if they start with "refs/": otherwise it will just try to read\r
+them and update them as a regular file (i.e. it will allow the\r
+filesystem to follow them, but will overwrite such a symlink to\r
+somewhere else with a regular filename).</p>\r
+<p>In general, using</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-update-ref HEAD "$head"</tt></pre>\r
+</div></div>\r
+<p>should be a _lot_ safer than doing</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>echo "$head" &gt; "$GIT_DIR/HEAD"</tt></pre>\r
+</div></div>\r
+<p>both from a symlink following standpoint <strong>and</strong> an error checking\r
+standpoint.  The "refs/" rule for symlinks means that symlinks\r
+that point to "outside" the tree are safe: they'll be followed\r
+for reading but not for writing (so we'll never write through a\r
+ref symlink to some other tree, if you have copied a whole\r
+archive by creating a symlink tree).</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:53 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-update-ref.txt b/git-update-ref.txt
new file mode 100644 (file)
index 0000000..69715aa
--- /dev/null
@@ -0,0 +1,58 @@
+git-update-ref(1)
+=================
+
+NAME
+----
+git-update-ref - update the object name stored in a ref safely
+
+SYNOPSIS
+--------
+`git-update-ref` <ref> <newvalue> [<oldvalue>]
+
+DESCRIPTION
+-----------
+Given two arguments, stores the <newvalue> in the <ref>, possibly
+dereferencing the symbolic refs.  E.g. `git-update-ref HEAD
+<newvalue>` updates the current branch head to the new object.
+
+Given three arguments, stores the <newvalue> in the <ref>,
+possibly dereferencing the symbolic refs, after verifying that
+the current value of the <ref> matches <oldvalue>.
+E.g. `git-update-ref refs/heads/master <newvalue> <oldvalue>`
+updates the master branch head to <newvalue> only if its current
+value is <oldvalue>.
+
+It also allows a "ref" file to be a symbolic pointer to another
+ref file by starting with the four-byte header sequence of
+"ref:".
+
+More importantly, it allows the update of a ref file to follow
+these symbolic pointers, whether they are symlinks or these
+"regular file symbolic refs".  It follows *real* symlinks only
+if they start with "refs/": otherwise it will just try to read
+them and update them as a regular file (i.e. it will allow the
+filesystem to follow them, but will overwrite such a symlink to
+somewhere else with a regular filename).
+
+In general, using
+
+       git-update-ref HEAD "$head"
+
+should be a _lot_ safer than doing
+
+       echo "$head" > "$GIT_DIR/HEAD"
+
+both from a symlink following standpoint *and* an error checking
+standpoint.  The "refs/" rule for symlinks means that symlinks
+that point to "outside" the tree are safe: they'll be followed
+for reading but not for writing (so we'll never write through a
+ref symlink to some other tree, if you have copied a whole
+archive by creating a symlink tree).
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-update-server-info.html b/git-update-server-info.html
new file mode 100644 (file)
index 0000000..b00dabc
--- /dev/null
@@ -0,0 +1,339 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-update-server-info(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-update-server-info(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-update-server-info -\r
+   Update auxiliary info file to help dumb servers\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-update-server-info</em> [--force]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>A dumb server that does not do on-the-fly pack generations must\r
+have some auxiliary information files in $GIT_DIR/info and\r
+$GIT_OBJECT_DIRECTORY/info directories to help clients discover\r
+what references and packs the server has.  This command\r
+generates such auxiliary files.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-f|--force\r
+</dt>\r
+<dd>\r
+<p>\r
+        Update the info files from scratch.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>OUTPUT</h2>\r
+<div class="sectionbody">\r
+<p>Currently the command updates the following files.  Please see\r
+<a href="repository-layout.html">repository-layout</a> for description\r
+of what they are for:</p>\r
+<ul>\r
+<li>\r
+<p>\r
+objects/info/packs\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+info/refs\r
+</p>\r
+</li>\r
+</ul>\r
+</div>\r
+<h2>BUGS</h2>\r
+<div class="sectionbody">\r
+<p>When you remove an existing ref, the command fails to update\r
+info/refs file unless <tt>--force</tt> flag is given.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:53 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-update-server-info.txt b/git-update-server-info.txt
new file mode 100644 (file)
index 0000000..88a03c7
--- /dev/null
@@ -0,0 +1,58 @@
+git-update-server-info(1)
+=========================
+
+NAME
+----
+git-update-server-info - Update auxiliary info file to help dumb servers
+
+
+SYNOPSIS
+--------
+'git-update-server-info' [--force]
+
+DESCRIPTION
+-----------
+A dumb server that does not do on-the-fly pack generations must
+have some auxiliary information files in $GIT_DIR/info and
+$GIT_OBJECT_DIRECTORY/info directories to help clients discover
+what references and packs the server has.  This command
+generates such auxiliary files.
+
+
+OPTIONS
+-------
+
+-f|--force::
+       Update the info files from scratch.
+
+
+OUTPUT
+------
+
+Currently the command updates the following files.  Please see
+link:repository-layout.html[repository-layout] for description
+of what they are for:
+
+* objects/info/packs
+
+* info/refs
+
+
+BUGS
+----
+When you remove an existing ref, the command fails to update
+info/refs file unless `--force` flag is given.
+
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-upload-pack.html b/git-upload-pack.html
new file mode 100644 (file)
index 0000000..255564e
--- /dev/null
@@ -0,0 +1,317 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-upload-pack(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-upload-pack(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-upload-pack -\r
+   Send missing objects packed.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-upload-pack</em> &lt;directory&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Invoked by <em>git-clone-pack</em> and/or <em>git-fetch-pack</em>, learns what\r
+objects the other side is missing, and sends them after packing.</p>\r
+<p>This command is usually not invoked directly by the end user.\r
+The UI for the protocol is on the <em>git-fetch-pack</em> side, and the\r
+program pair is meant to be used to pull updates from a remote\r
+repository.  For push operations, see <em>git-send-pack</em>.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;directory&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The repository to sync from.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:54 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-upload-pack.txt b/git-upload-pack.txt
new file mode 100644 (file)
index 0000000..3d8f8ef
--- /dev/null
@@ -0,0 +1,39 @@
+git-upload-pack(1)
+==================
+
+NAME
+----
+git-upload-pack - Send missing objects packed.
+
+
+SYNOPSIS
+--------
+'git-upload-pack' <directory>
+
+DESCRIPTION
+-----------
+Invoked by 'git-clone-pack' and/or 'git-fetch-pack', learns what
+objects the other side is missing, and sends them after packing.
+
+This command is usually not invoked directly by the end user.
+The UI for the protocol is on the 'git-fetch-pack' side, and the
+program pair is meant to be used to pull updates from a remote
+repository.  For push operations, see 'git-send-pack'.
+
+
+OPTIONS
+-------
+<directory>::
+       The repository to sync from.
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano.
+
+GIT
+---
+Part of the gitlink:git[7] suite
diff --git a/git-var.html b/git-var.html
new file mode 100644 (file)
index 0000000..b007abc
--- /dev/null
@@ -0,0 +1,375 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-var(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-var(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-var -\r
+   Print the git users identity\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p>git-var [ -l | &lt;variable&gt; ]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Prints a git logical variable.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-l\r
+</dt>\r
+<dd>\r
+<p>\r
+        Cause the logical variables to be listed.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>EXAMPLE</h2>\r
+<div class="sectionbody">\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>$ git-var GIT_AUTHOR_IDENT\r
+Eric W. Biederman &lt;ebiederm@lnxi.com&gt; 1121223278 -0600</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>VARIABLES</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+GIT_AUTHOR_IDENT\r
+</dt>\r
+<dd>\r
+<p>\r
+    The author of a piece of code.\r
+</p>\r
+</dd>\r
+<dt>\r
+GIT_COMMITTER_IDENT\r
+</dt>\r
+<dd>\r
+<p>\r
+    The person who put a piece of code into git.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Diagnostics</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+You don't exist. Go away!\r
+</dt>\r
+<dd>\r
+<p>\r
+    The passwd(5) gecos field couldn't be read\r
+</p>\r
+</dd>\r
+<dt>\r
+Your parents must have hated you!\r
+</dt>\r
+<dd>\r
+<p>\r
+    The password(5) gecos field is longer than a giant static buffer.\r
+</p>\r
+</dd>\r
+<dt>\r
+Your sysadmin must hate you!\r
+</dt>\r
+<dd>\r
+<p>\r
+    The password(5) name field is longer than a giant static buffer.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>See Also</h2>\r
+<div class="sectionbody">\r
+<p><a href="git-commit-tree.html">git-commit-tree(1)</a>\r
+<a href="git-tag.html">git-tag(1)</a></p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Eric Biederman &lt;ebiederm@xmission.com&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Eric Biederman and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:55 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-var.txt b/git-var.txt
new file mode 100644 (file)
index 0000000..c22d34f
--- /dev/null
@@ -0,0 +1,61 @@
+git-var(1)
+==========
+
+NAME
+----
+git-var - Print the git users identity
+
+
+SYNOPSIS
+--------
+git-var [ -l | <variable> ]
+
+DESCRIPTION
+-----------
+Prints a git logical variable.
+
+OPTIONS
+-------
+-l::
+       Cause the logical variables to be listed.
+
+EXAMPLE
+--------
+       $ git-var GIT_AUTHOR_IDENT
+       Eric W. Biederman <ebiederm@lnxi.com> 1121223278 -0600
+
+
+VARIABLES
+----------
+GIT_AUTHOR_IDENT::
+    The author of a piece of code.
+
+GIT_COMMITTER_IDENT::
+    The person who put a piece of code into git.
+
+Diagnostics
+-----------
+You don't exist. Go away!::
+    The passwd(5) gecos field couldn't be read
+Your parents must have hated you!::
+    The password(5) gecos field is longer than a giant static buffer.
+Your sysadmin must hate you!::
+    The password(5) name field is longer than a giant static buffer.
+
+See Also
+--------
+gitlink:git-commit-tree[1]
+gitlink:git-tag[1]
+
+Author
+------
+Written by Eric Biederman <ebiederm@xmission.com>
+
+Documentation
+--------------
+Documentation by Eric Biederman and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-verify-pack.html b/git-verify-pack.html
new file mode 100644 (file)
index 0000000..9916cf6
--- /dev/null
@@ -0,0 +1,345 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-verify-pack(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-verify-pack(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-verify-pack -\r
+   Validate packed git archive files.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-verify-pack</em> [-v] [--] &lt;pack&gt;.idx &#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Reads given idx file for packed git archive created with\r
+git-pack-objects command and verifies idx file and the\r
+corresponding pack file.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;pack&gt;.idx &#8230;\r
+</dt>\r
+<dd>\r
+<p>\r
+        The idx files to verify.\r
+</p>\r
+</dd>\r
+<dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+        After verifying the pack, show list of objects contained\r
+        in the pack.\r
+</p>\r
+</dd>\r
+<dt>\r
+&#8212;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Do not interpret any more arguments as options.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>OUTPUT FORMAT</h2>\r
+<div class="sectionbody">\r
+<p>When specifying the -v option the format used is:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>SHA1 type size offset-in-packfile</tt></pre>\r
+</div></div>\r
+<p>for objects that are not deltified in the pack, and</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>SHA1 type size offset-in-packfile depth base-SHA1</tt></pre>\r
+</div></div>\r
+<p>for objects that are deltified.</p>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:55 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-verify-pack.txt b/git-verify-pack.txt
new file mode 100644 (file)
index 0000000..d032280
--- /dev/null
@@ -0,0 +1,54 @@
+git-verify-pack(1)
+==================
+
+NAME
+----
+git-verify-pack - Validate packed git archive files.
+
+
+SYNOPSIS
+--------
+'git-verify-pack' [-v] [--] <pack>.idx ...
+
+
+DESCRIPTION
+-----------
+Reads given idx file for packed git archive created with
+git-pack-objects command and verifies idx file and the
+corresponding pack file.
+
+OPTIONS
+-------
+<pack>.idx ...::
+       The idx files to verify.
+
+-v::
+       After verifying the pack, show list of objects contained
+       in the pack.
+--::
+       Do not interpret any more arguments as options.
+
+OUTPUT FORMAT
+-------------
+When specifying the -v option the format used is:
+
+       SHA1 type size offset-in-packfile
+
+for objects that are not deltified in the pack, and
+
+       SHA1 type size offset-in-packfile depth base-SHA1
+
+for objects that are deltified.
+
+Author
+------
+Written by Junio C Hamano <junkio@cox.net>
+
+Documentation
+--------------
+Documentation by Junio C Hamano
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-verify-tag.html b/git-verify-tag.html
new file mode 100644 (file)
index 0000000..9cefb4e
--- /dev/null
@@ -0,0 +1,312 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-verify-tag(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-verify-tag(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-verify-tag -\r
+   Check the GPG signature of tag.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-verify-tag</em> &lt;tag&gt;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Validates the gpg signature created by git-tag.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;tag&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        SHA1 identifier of a git tag object.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Jan Harkes &lt;jaharkes@cs.cmu.edu&gt; and Eric W. Biederman &lt;ebiederm@xmission.com&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:56 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-verify-tag.txt b/git-verify-tag.txt
new file mode 100644 (file)
index 0000000..b8a73c4
--- /dev/null
@@ -0,0 +1,32 @@
+git-verify-tag(1)
+=================
+
+NAME
+----
+git-verify-tag - Check the GPG signature of tag.
+
+SYNOPSIS
+--------
+'git-verify-tag' <tag>
+
+DESCRIPTION
+-----------
+Validates the gpg signature created by git-tag.
+
+OPTIONS
+-------
+<tag>::
+       SHA1 identifier of a git tag object.
+
+Author
+------
+Written by Jan Harkes <jaharkes@cs.cmu.edu> and Eric W. Biederman <ebiederm@xmission.com>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-whatchanged.html b/git-whatchanged.html
new file mode 100644 (file)
index 0000000..daf591e
--- /dev/null
@@ -0,0 +1,394 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-whatchanged(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-whatchanged(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-whatchanged -\r
+   Show logs with difference each commit introduces.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-whatchanged</em> &lt;option&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Shows commit logs and diff output each commit introduces.  The\r
+command internally invokes <em>git-rev-list</em> piped to\r
+<em>git-diff-tree</em>, and takes command line options for both of\r
+these commands.</p>\r
+<p>This manual page describes only the most frequently used options.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-p\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show textual diffs, instead of the git internal diff\r
+        output format that is useful only to tell the changed\r
+        paths and their nature of changes.\r
+</p>\r
+</dd>\r
+<dt>\r
+--max-count=&lt;n&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Limit output to &lt;n&gt; commits.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;since&gt;..&lt;until&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Limit output to between the two named commits (bottom\r
+        exclusive, top inclusive).\r
+</p>\r
+</dd>\r
+<dt>\r
+-r\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show git internal diff output, but for the whole tree,\r
+        not just the top level.\r
+</p>\r
+</dd>\r
+<dt>\r
+--pretty=&lt;format&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Controls the output format for the commit logs.\r
+        &lt;format&gt; can be one of <em>raw</em>, <em>medium</em>, <em>short</em>, <em>full</em>,\r
+        and <em>oneline</em>.\r
+</p>\r
+</dd>\r
+<dt>\r
+-m\r
+</dt>\r
+<dd>\r
+<p>\r
+        By default, differences for merge commits are not shown.\r
+        With this flag, show differences to that commit from all\r
+        of its parents.\r
+</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>However, it is not very useful in general, although it\r
+*is* useful on a file-by-file basis.</tt></pre>\r
+</div></div>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Examples</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+git-whatchanged -p v2.6.12.. include/scsi drivers/scsi\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show as patches the commits since version <em>v2.6.12</em> that changed\r
+        any file in the include/scsi or drivers/scsi subdirectories\r
+</p>\r
+</dd>\r
+<dt>\r
+git-whatchanged --since="2 weeks ago" &#8212; gitk\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show the changes during the last two weeks to the file <em>gitk</em>.\r
+        The "--" is necessary to avoid confusion with the <strong>branch</strong> named\r
+        <em>gitk</em>\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt; and\r
+Junio C Hamano &lt;junkio@cox.net&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:57 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-whatchanged.txt b/git-whatchanged.txt
new file mode 100644 (file)
index 0000000..6c150b0
--- /dev/null
@@ -0,0 +1,81 @@
+git-whatchanged(1)
+==================
+
+NAME
+----
+git-whatchanged - Show logs with difference each commit introduces.
+
+
+SYNOPSIS
+--------
+'git-whatchanged' <option>...
+
+DESCRIPTION
+-----------
+Shows commit logs and diff output each commit introduces.  The
+command internally invokes 'git-rev-list' piped to
+'git-diff-tree', and takes command line options for both of
+these commands.
+
+This manual page describes only the most frequently used options.
+
+
+OPTIONS
+-------
+-p::
+       Show textual diffs, instead of the git internal diff
+       output format that is useful only to tell the changed
+       paths and their nature of changes.
+
+--max-count=<n>::
+       Limit output to <n> commits.
+
+<since>..<until>::
+       Limit output to between the two named commits (bottom
+       exclusive, top inclusive).
+
+-r::
+       Show git internal diff output, but for the whole tree,
+       not just the top level.
+
+--pretty=<format>::
+       Controls the output format for the commit logs.
+       <format> can be one of 'raw', 'medium', 'short', 'full',
+       and 'oneline'.
+
+-m::
+       By default, differences for merge commits are not shown.
+       With this flag, show differences to that commit from all
+       of its parents.
+
+       However, it is not very useful in general, although it
+       *is* useful on a file-by-file basis.
+
+Examples
+--------
+git-whatchanged -p v2.6.12.. include/scsi drivers/scsi::
+
+       Show as patches the commits since version 'v2.6.12' that changed
+       any file in the include/scsi or drivers/scsi subdirectories
+
+git-whatchanged --since="2 weeks ago" -- gitk::
+
+       Show the changes during the last two weeks to the file 'gitk'.
+       The "--" is necessary to avoid confusion with the *branch* named
+       'gitk'
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org> and
+Junio C Hamano <junkio@cox.net>
+
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git-write-tree.html b/git-write-tree.html
new file mode 100644 (file)
index 0000000..5b188c9
--- /dev/null
@@ -0,0 +1,320 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-write-tree(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-write-tree(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-write-tree -\r
+   Creates a tree object from the current index\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git-write-tree</em> [--missing-ok]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Creates a tree object using the current index.</p>\r
+<p>The index must be in a fully merged state.</p>\r
+<p>Conceptually, <tt>git-write-tree</tt> sync()s the current index contents\r
+into a set of tree files.\r
+In order to have that match what is actually in your directory right\r
+now, you need to have done a <tt>git-update-index</tt> phase before you did the\r
+<tt>git-write-tree</tt>.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--missing-ok\r
+</dt>\r
+<dd>\r
+<p>\r
+        Normally <tt>git-write-tree</tt> ensures that the objects referenced by the\r
+        directory exist in the object database.  This option disables this\r
+        check.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:58 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git-write-tree.txt b/git-write-tree.txt
new file mode 100644 (file)
index 0000000..77e12cb
--- /dev/null
@@ -0,0 +1,44 @@
+git-write-tree(1)
+=================
+
+NAME
+----
+git-write-tree - Creates a tree object from the current index
+
+
+SYNOPSIS
+--------
+'git-write-tree' [--missing-ok]
+
+DESCRIPTION
+-----------
+Creates a tree object using the current index.
+
+The index must be in a fully merged state.
+
+Conceptually, `git-write-tree` sync()s the current index contents
+into a set of tree files.
+In order to have that match what is actually in your directory right
+now, you need to have done a `git-update-index` phase before you did the
+`git-write-tree`.
+
+
+OPTIONS
+-------
+--missing-ok::
+       Normally `git-write-tree` ensures that the objects referenced by the
+       directory exist in the object database.  This option disables this
+       check.
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/git.html b/git.html
new file mode 100644 (file)
index 0000000..d8176ef
--- /dev/null
+++ b/git.html
@@ -0,0 +1,2021 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git(7)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git(7) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git -\r
+   the stupid content tracker\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>git</em> [--version] [--exec-path[=GIT_EXEC_PATH]] [--help] COMMAND [ARGS]</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p><em>git</em> is both a program and a directory content tracker system.\r
+The program <em>git</em> is just a wrapper to reach the core git programs\r
+(or a potty if you like, as it's not exactly porcelain but still\r
+brings your stuff to the plumbing).</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--version\r
+</dt>\r
+<dd>\r
+<p>\r
+        prints the git suite version that the <em>git</em> program came from.\r
+</p>\r
+</dd>\r
+<dt>\r
+--help\r
+</dt>\r
+<dd>\r
+<p>\r
+        prints the synopsis and a list of available commands.\r
+        If a git command is named this option will bring up the\r
+        man-page for that command.\r
+</p>\r
+</dd>\r
+<dt>\r
+--exec-path\r
+</dt>\r
+<dd>\r
+<p>\r
+        path to wherever your core git programs are installed.\r
+        This can also be controlled by setting the GIT_EXEC_PATH\r
+        environment variable. If no path is given <em>git</em> will print\r
+        the current setting and then exit.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>NOT LEARNING CORE GIT COMMANDS</h2>\r
+<div class="sectionbody">\r
+<p>This manual is intended to give complete background information\r
+and internal workings of git, which may be too much for most\r
+people.  The <a href="#Discussion">[Discussion]</a> section below contains much useful\r
+definition and clarification - read that first.</p>\r
+<p>If you are interested in using git to manage (version control)\r
+projects, use <a href="everyday.html">Everyday GIT</a> as a guide to the\r
+minimum set of commands you need to know for day-to-day work.\r
+Most likely, that will get you started, and you can go a long\r
+way without knowing the low level details too much.</p>\r
+<p>The <a href="tutorial.html">tutorial</a> document covers how things\r
+internally work.</p>\r
+<p>If you are migrating from CVS, <a href="cvs-migration.html">cvs\r
+migration</a> document may be helpful after you finish the\r
+tutorial.</p>\r
+<p>After you get the general feel from the tutorial and this\r
+overview page, you may want to take a look at the\r
+<a href="howto-index.html">howto</a> documents.</p>\r
+</div>\r
+<h2>CORE GIT COMMANDS</h2>\r
+<div class="sectionbody">\r
+<p>If you are writing your own Porcelain, you need to be familiar\r
+with most of the low level commands --- I suggest starting from\r
+<a href="git-update-index.html">git-update-index(1)</a> and <a href="git-read-tree.html">git-read-tree(1)</a>.</p>\r
+</div>\r
+<h2>Commands Overview</h2>\r
+<div class="sectionbody">\r
+<p>The git commands can helpfully be split into those that manipulate\r
+the repository, the index and the files in the working tree, those that\r
+interrogate and compare them, and those that moves objects and\r
+references between repositories.</p>\r
+<p>In addition, git itself comes with a spartan set of porcelain\r
+commands.  They are usable but are not meant to compete with real\r
+Porcelains.</p>\r
+<p>There are also some ancillary programs that can be viewed as useful\r
+aids for using the core commands but which are unlikely to be used by\r
+SCMs layered over git.</p>\r
+<h3>Manipulation commands</h3>\r
+<dl>\r
+<dt>\r
+<a href="git-apply.html">git-apply(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Reads a "diff -up1" or git generated patch file and\r
+        applies it to the working tree.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-checkout-index.html">git-checkout-index(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Copy files from the index to the working tree.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-commit-tree.html">git-commit-tree(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Creates a new commit object.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-hash-object.html">git-hash-object(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Computes the object ID from a file.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-index-pack.html">git-index-pack(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Build pack idx file for an existing packed archive.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-init-db.html">git-init-db(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Creates an empty git object database, or reinitialize an\r
+        existing one.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-merge-index.html">git-merge-index(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Runs a merge for files needing merging.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-mktag.html">git-mktag(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Creates a tag object.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-pack-objects.html">git-pack-objects(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Creates a packed archive of objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-prune-packed.html">git-prune-packed(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Remove extra objects that are already in pack files.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-read-tree.html">git-read-tree(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Reads tree information into the index.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-repo-config.html">git-repo-config(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Get and set options in .git/config.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-unpack-objects.html">git-unpack-objects(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Unpacks objects out of a packed archive.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-update-index.html">git-update-index(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Registers files in the working tree to the index.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-write-tree.html">git-write-tree(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Creates a tree from the index.\r
+</p>\r
+</dd>\r
+</dl>\r
+<h3>Interrogation commands</h3>\r
+<dl>\r
+<dt>\r
+<a href="git-cat-file.html">git-cat-file(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Provide content or type/size information for repository objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-diff-index.html">git-diff-index(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compares content and mode of blobs between the index and repository.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-diff-files.html">git-diff-files(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compares files in the working tree and the index.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-diff-stages.html">git-diff-stages(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compares two "merge stages" in the index.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-diff-tree.html">git-diff-tree(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compares the content and mode of blobs found via two tree objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-fsck-objects.html">git-fsck-objects(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Verifies the connectivity and validity of the objects in the database.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-ls-files.html">git-ls-files(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Information about files in the index and the working tree.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-ls-tree.html">git-ls-tree(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Displays a tree object in human readable form.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-merge-base.html">git-merge-base(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Finds as good common ancestors as possible for a merge.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-name-rev.html">git-name-rev(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Find symbolic names for given revs.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-pack-redundant.html">git-pack-redundant(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Find redundant pack files.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-rev-list.html">git-rev-list(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Lists commit objects in reverse chronological order.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-show-index.html">git-show-index(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Displays contents of a pack idx file.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-tar-tree.html">git-tar-tree(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Creates a tar archive of the files in the named tree object.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-unpack-file.html">git-unpack-file(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Creates a temporary file with a blob's contents.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-var.html">git-var(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Displays a git logical variable.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-verify-pack.html">git-verify-pack(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Validates packed git archive files.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>In general, the interrogate commands do not touch the files in\r
+the working tree.</p>\r
+<h3>Synching repositories</h3>\r
+<dl>\r
+<dt>\r
+<a href="git-clone-pack.html">git-clone-pack(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Clones a repository into the current repository (engine\r
+        for ssh and local transport).\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-fetch-pack.html">git-fetch-pack(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Updates from a remote repository (engine for ssh and\r
+        local transport).\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-http-fetch.html">git-http-fetch(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Downloads a remote git repository via HTTP by walking\r
+        commit chain.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-local-fetch.html">git-local-fetch(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Duplicates another git repository on a local system by\r
+        walking commit chain.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-peek-remote.html">git-peek-remote(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Lists references on a remote repository using\r
+        upload-pack protocol (engine for ssh and local\r
+        transport).\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-receive-pack.html">git-receive-pack(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Invoked by <em>git-send-pack</em> to receive what is pushed to it.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-send-pack.html">git-send-pack(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Pushes to a remote repository, intelligently.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-http-push.html">git-http-push(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Push missing objects using HTTP/DAV.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-shell.html">git-shell(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Restricted shell for GIT-only SSH access.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-ssh-fetch.html">git-ssh-fetch(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Pulls from a remote repository over ssh connection by\r
+        walking commit chain.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-ssh-upload.html">git-ssh-upload(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Helper "server-side" program used by git-ssh-fetch.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-update-server-info.html">git-update-server-info(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Updates auxiliary information on a dumb server to help\r
+        clients discover references and packs on it.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-upload-pack.html">git-upload-pack(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Invoked by <em>git-clone-pack</em> and <em>git-fetch-pack</em> to push\r
+        what are asked for.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Porcelain-ish Commands</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+<a href="git-add.html">git-add(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Add paths to the index.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-am.html">git-am(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Apply patches from a mailbox, but cooler.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-applymbox.html">git-applymbox(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Apply patches from a mailbox, original version by Linus.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-bisect.html">git-bisect(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Find the change that introduced a bug by binary search.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-branch.html">git-branch(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Create and Show branches.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-checkout.html">git-checkout(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Checkout and switch to a branch.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-cherry-pick.html">git-cherry-pick(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Cherry-pick the effect of an existing commit.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-clone.html">git-clone(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Clones a repository into a new directory.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-commit.html">git-commit(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Record changes to the repository.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-diff.html">git-diff(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show changes between commits, commit and working tree, etc.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-fetch.html">git-fetch(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Download from a remote repository via various protocols.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-format-patch.html">git-format-patch(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Prepare patches for e-mail submission.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-grep.html">git-grep(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Print lines matching a pattern.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-log.html">git-log(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Shows commit logs.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-ls-remote.html">git-ls-remote(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Shows references in a remote or local repository.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-merge.html">git-merge(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Grand unified merge driver.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-mv.html">git-mv(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Move or rename a file, a directory, or a symlink.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-pull.html">git-pull(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Fetch from and merge with a remote repository.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-push.html">git-push(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Update remote refs along with associated objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-rebase.html">git-rebase(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Rebase local commits to the updated upstream head.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-repack.html">git-repack(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Pack unpacked objects in a repository.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-reset.html">git-reset(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Reset current HEAD to the specified state.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-resolve.html">git-resolve(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Merge two commits.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-revert.html">git-revert(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Revert an existing commit.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-shortlog.html">git-shortlog(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Summarizes <em>git log</em> output.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-show-branch.html">git-show-branch(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show branches and their commits.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-status.html">git-status(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Shows the working tree status.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-verify-tag.html">git-verify-tag(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Check the GPG signature of tag.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-whatchanged.html">git-whatchanged(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Shows commit logs and differences they introduce.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Ancillary Commands</h2>\r
+<div class="sectionbody">\r
+<p>Manipulators:</p>\r
+<dl>\r
+<dt>\r
+<a href="git-applypatch.html">git-applypatch(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Apply one patch extracted from an e-mail.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-archimport.html">git-archimport(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Import an arch repository into git.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-convert-objects.html">git-convert-objects(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Converts old-style git repository.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-cvsimport.html">git-cvsimport(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Salvage your data out of another SCM people love to hate.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-cvsexportcommit.html">git-cvsexportcommit(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Export a single commit to a CVS checkout.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-lost-found.html">git-lost-found(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Recover lost refs that luckily have not yet been pruned.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-merge-one-file.html">git-merge-one-file(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        The standard helper program to use with <tt>git-merge-index</tt>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-prune.html">git-prune(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Prunes all unreachable objects from the object database.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-relink.html">git-relink(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Hardlink common objects in local repositories.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-svnimport.html">git-svnimport(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Import a SVN repository into git.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-sh-setup.html">git-sh-setup(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Common git shell script setup code.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-symbolic-ref.html">git-symbolic-ref(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Read and modify symbolic refs.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-tag.html">git-tag(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        An example script to create a tag object signed with GPG.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-update-ref.html">git-update-ref(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Update the object name stored in a ref safely.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>Interrogators:</p>\r
+<dl>\r
+<dt>\r
+<a href="git-check-ref-format.html">git-check-ref-format(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Make sure ref name is well formed.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-cherry.html">git-cherry(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Find commits not merged upstream.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-count-objects.html">git-count-objects(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Count unpacked number of objects and their disk consumption.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-daemon.html">git-daemon(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        A really simple server for git repositories.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-get-tar-commit-id.html">git-get-tar-commit-id(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Extract commit ID from an archive created using git-tar-tree.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-mailinfo.html">git-mailinfo(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Extracts patch and authorship information from a single\r
+        e-mail message, optionally transliterating the commit\r
+        message into utf-8.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-mailsplit.html">git-mailsplit(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        A stupid program to split UNIX mbox format mailbox into\r
+        individual pieces of e-mail.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-patch-id.html">git-patch-id(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compute unique ID for a patch.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-parse-remote.html">git-parse-remote(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Routines to help parsing <tt>$GIT_DIR/remotes/</tt> files.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-request-pull.html">git-request-pull(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        git-request-pull.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-rev-parse.html">git-rev-parse(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Pick out and massage parameters.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-send-email.html">git-send-email(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Send patch e-mails out of "format-patch --mbox" output.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-symbolic-refs.html">git-symbolic-refs(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Read and modify symbolic refs.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a href="git-stripspace.html">git-stripspace(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Filter out empty lines.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Commands not yet documented</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+<a href="gitk.html">gitk(1)</a>\r
+</dt>\r
+<dd>\r
+<p>\r
+        The gitk repository browser.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Configuration Mechanism</h2>\r
+<div class="sectionbody">\r
+<p>Starting from 0.99.9 (actually mid 0.99.8.GIT), <tt>.git/config</tt> file\r
+is used to hold per-repository configuration options.  It is a\r
+simple text file modelled after <tt>.ini</tt> format familiar to some\r
+people.  Here is an example:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>#\r
+# A '#' or ';' character indicates a comment.\r
+#\r
+\r
+; core variables\r
+[core]\r
+        ; Don't trust file modes\r
+        filemode = false\r
+\r
+; user identity\r
+[user]\r
+        name = "Junio C Hamano"\r
+        email = "junkio@twinsun.com"\r
+</tt></pre>\r
+</div></div>\r
+<p>Various commands read from the configuration file and adjust\r
+their operation accordingly.</p>\r
+</div>\r
+<h2>Identifier Terminology</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+&lt;object&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Indicates the object name for any type of object.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;blob&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Indicates a blob object name.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;tree&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Indicates a tree object name.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;commit&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Indicates a commit object name.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;tree-ish&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Indicates a tree, commit or tag object name.  A\r
+        command that takes a &lt;tree-ish&gt; argument ultimately wants to\r
+        operate on a &lt;tree&gt; object but automatically dereferences\r
+        &lt;commit&gt; and &lt;tag&gt; objects that point at a &lt;tree&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;type&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Indicates that an object type is required.\r
+        Currently one of: <tt>blob</tt>, <tt>tree</tt>, <tt>commit</tt>, or <tt>tag</tt>.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;file&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Indicates a filename - almost always relative to the\r
+        root of the tree structure <tt>GIT_INDEX_FILE</tt> describes.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Symbolic Identifiers</h2>\r
+<div class="sectionbody">\r
+<p>Any git command accepting any &lt;object&gt; can also use the following\r
+symbolic notation:</p>\r
+<dl>\r
+<dt>\r
+HEAD\r
+</dt>\r
+<dd>\r
+<p>\r
+        indicates the head of the current branch (i.e. the\r
+        contents of <tt>$GIT_DIR/HEAD</tt>).\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;tag&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        a valid tag <em>name</em>\r
+        (i.e. the contents of <tt>$GIT_DIR/refs/tags/&lt;tag&gt;</tt>).\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;head&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        a valid head <em>name</em>\r
+        (i.e. the contents of <tt>$GIT_DIR/refs/heads/&lt;head&gt;</tt>).\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;snap&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        a valid snapshot <em>name</em>\r
+        (i.e. the contents of <tt>$GIT_DIR/refs/snap/&lt;snap&gt;</tt>).\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>File/Directory Structure</h2>\r
+<div class="sectionbody">\r
+<p>Please see <a href="repository-layout.html">repository layout</a> document.</p>\r
+<p>Higher level SCMs may provide and manage additional information in the\r
+<tt>$GIT_DIR</tt>.</p>\r
+</div>\r
+<h2>Terminology</h2>\r
+<div class="sectionbody">\r
+<p>Please see <a href="glossary.html">glossary</a> document.</p>\r
+</div>\r
+<h2>Environment Variables</h2>\r
+<div class="sectionbody">\r
+<p>Various git commands use the following environment variables:</p>\r
+<h3>The git Repository</h3>\r
+<p>These environment variables apply to <em>all</em> core git commands. Nb: it\r
+is worth noting that they may be used/overridden by SCMS sitting above\r
+git so take care if using Cogito etc.</p>\r
+<dl>\r
+<dt>\r
+<em>GIT_INDEX_FILE</em>\r
+</dt>\r
+<dd>\r
+<p>\r
+        This environment allows the specification of an alternate\r
+        index file. If not specified, the default of <tt>$GIT_DIR/index</tt>\r
+        is used.\r
+</p>\r
+</dd>\r
+<dt>\r
+<em>GIT_OBJECT_DIRECTORY</em>\r
+</dt>\r
+<dd>\r
+<p>\r
+        If the object storage directory is specified via this\r
+        environment variable then the sha1 directories are created\r
+        underneath - otherwise the default <tt>$GIT_DIR/objects</tt>\r
+        directory is used.\r
+</p>\r
+</dd>\r
+<dt>\r
+<em>GIT_ALTERNATE_OBJECT_DIRECTORIES</em>\r
+</dt>\r
+<dd>\r
+<p>\r
+        Due to the immutable nature of git objects, old objects can be\r
+        archived into shared, read-only directories. This variable\r
+        specifies a ":" separated list of git object directories which\r
+        can be used to search for git objects. New objects will not be\r
+        written to these directories.\r
+</p>\r
+</dd>\r
+<dt>\r
+<em>GIT_DIR</em>\r
+</dt>\r
+<dd>\r
+<p>\r
+        If the <em>GIT_DIR</em> environment variable is set then it\r
+        specifies a path to use instead of the default <tt>.git</tt>\r
+        for the base of the repository.\r
+</p>\r
+</dd>\r
+</dl>\r
+<h3>git Commits</h3>\r
+<dl>\r
+<dt>\r
+<em>GIT_AUTHOR_NAME</em>\r
+</dt>\r
+<dt>\r
+<em>GIT_AUTHOR_EMAIL</em>\r
+</dt>\r
+<dt>\r
+<em>GIT_AUTHOR_DATE</em>\r
+</dt>\r
+<dt>\r
+<em>GIT_COMMITTER_NAME</em>\r
+</dt>\r
+<dt>\r
+<em>GIT_COMMITTER_EMAIL</em>\r
+</dt>\r
+<dd>\r
+<p>\r
+        see <a href="git-commit-tree.html">git-commit-tree(1)</a>\r
+</p>\r
+</dd>\r
+</dl>\r
+<h3>git Diffs</h3>\r
+<dl>\r
+<dt>\r
+<em>GIT_DIFF_OPTS</em>\r
+</dt>\r
+<dt>\r
+<em>GIT_EXTERNAL_DIFF</em>\r
+</dt>\r
+<dd>\r
+<p>\r
+        see the "generating patches" section in :\r
+        <a href="git-diff-index.html">git-diff-index(1)</a>;\r
+        <a href="git-diff-files.html">git-diff-files(1)</a>;\r
+        <a href="git-diff-tree.html">git-diff-tree(1)</a>\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Discussion<a id="Discussion"></a></h2>\r
+<div class="sectionbody">\r
+<p>"git" can mean anything, depending on your mood.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+random three-letter combination that is pronounceable, and not\r
+   actually used by any common UNIX command.  The fact that it is a\r
+   mispronunciation of "get" may or may not be relevant.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+stupid. contemptible and despicable. simple. Take your pick from the\r
+   dictionary of slang.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+"global information tracker": you're in a good mood, and it actually\r
+   works for you. Angels sing, and a light suddenly fills the room.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+"goddamn idiotic truckload of sh*t": when it breaks\r
+</p>\r
+</li>\r
+</ul>\r
+<p>This is a stupid (but extremely fast) directory content manager.  It\r
+doesn't do a whole lot, but what it <em>does</em> do is track directory\r
+contents efficiently.</p>\r
+<p>There are two object abstractions: the "object database", and the\r
+"current directory cache" aka "index".</p>\r
+<h3>The Object Database</h3>\r
+<p>The object database is literally just a content-addressable collection\r
+of objects.  All objects are named by their content, which is\r
+approximated by the SHA1 hash of the object itself.  Objects may refer\r
+to other objects (by referencing their SHA1 hash), and so you can\r
+build up a hierarchy of objects.</p>\r
+<p>All objects have a statically determined "type" aka "tag", which is\r
+determined at object creation time, and which identifies the format of\r
+the object (i.e. how it is used, and how it can refer to other\r
+objects).  There are currently four different object types: "blob",\r
+"tree", "commit" and "tag".</p>\r
+<p>A "blob" object cannot refer to any other object, and is, like the type\r
+implies, a pure storage object containing some user data.  It is used to\r
+actually store the file data, i.e. a blob object is associated with some\r
+particular version of some file.</p>\r
+<p>A "tree" object is an object that ties one or more "blob" objects into a\r
+directory structure. In addition, a tree object can refer to other tree\r
+objects, thus creating a directory hierarchy.</p>\r
+<p>A "commit" object ties such directory hierarchies together into\r
+a DAG of revisions - each "commit" is associated with exactly one tree\r
+(the directory hierarchy at the time of the commit). In addition, a\r
+"commit" refers to one or more "parent" commit objects that describe the\r
+history of how we arrived at that directory hierarchy.</p>\r
+<p>As a special case, a commit object with no parents is called the "root"\r
+object, and is the point of an initial project commit.  Each project\r
+must have at least one root, and while you can tie several different\r
+root objects together into one project by creating a commit object which\r
+has two or more separate roots as its ultimate parents, that's probably\r
+just going to confuse people.  So aim for the notion of "one root object\r
+per project", even if git itself does not enforce that.</p>\r
+<p>A "tag" object symbolically identifies and can be used to sign other\r
+objects. It contains the identifier and type of another object, a\r
+symbolic name (of course!) and, optionally, a signature.</p>\r
+<p>Regardless of object type, all objects share the following\r
+characteristics: they are all deflated with zlib, and have a header\r
+that not only specifies their type, but also provides size information\r
+about the data in the object.  It's worth noting that the SHA1 hash\r
+that is used to name the object is the hash of the original data\r
+plus this header, so <tt>sha1sum</tt> <em>file</em> does not match the object name\r
+for <em>file</em>.\r
+(Historical note: in the dawn of the age of git the hash\r
+was the sha1 of the <em>compressed</em> object.)</p>\r
+<p>As a result, the general consistency of an object can always be tested\r
+independently of the contents or the type of the object: all objects can\r
+be validated by verifying that (a) their hashes match the content of the\r
+file and (b) the object successfully inflates to a stream of bytes that\r
+forms a sequence of &lt;ascii type without space&gt; + &lt;space&gt; + &lt;ascii decimal\r
+size&gt; + &lt;byte\0&gt; + &lt;binary object data&gt;.</p>\r
+<p>The structured objects can further have their structure and\r
+connectivity to other objects verified. This is generally done with\r
+the <tt>git-fsck-objects</tt> program, which generates a full dependency graph\r
+of all objects, and verifies their internal consistency (in addition\r
+to just verifying their superficial consistency through the hash).</p>\r
+<p>The object types in some more detail:</p>\r
+<h3>Blob Object</h3>\r
+<p>A "blob" object is nothing but a binary blob of data, and doesn't\r
+refer to anything else.  There is no signature or any other\r
+verification of the data, so while the object is consistent (it <em>is</em>\r
+indexed by its sha1 hash, so the data itself is certainly correct), it\r
+has absolutely no other attributes.  No name associations, no\r
+permissions.  It is purely a blob of data (i.e. normally "file\r
+contents").</p>\r
+<p>In particular, since the blob is entirely defined by its data, if two\r
+files in a directory tree (or in multiple different versions of the\r
+repository) have the same contents, they will share the same blob\r
+object. The object is totally independent of its location in the\r
+directory tree, and renaming a file does not change the object that\r
+file is associated with in any way.</p>\r
+<p>A blob is typically created when <a href="git-update-index.html">git-update-index(1)</a>\r
+is run, and its data can be accessed by <a href="git-cat-file.html">git-cat-file(1)</a>.</p>\r
+<h3>Tree Object</h3>\r
+<p>The next hierarchical object type is the "tree" object.  A tree object\r
+is a list of mode/name/blob data, sorted by name.  Alternatively, the\r
+mode data may specify a directory mode, in which case instead of\r
+naming a blob, that name is associated with another TREE object.</p>\r
+<p>Like the "blob" object, a tree object is uniquely determined by the\r
+set contents, and so two separate but identical trees will always\r
+share the exact same object. This is true at all levels, i.e. it's\r
+true for a "leaf" tree (which does not refer to any other trees, only\r
+blobs) as well as for a whole subdirectory.</p>\r
+<p>For that reason a "tree" object is just a pure data abstraction: it\r
+has no history, no signatures, no verification of validity, except\r
+that since the contents are again protected by the hash itself, we can\r
+trust that the tree is immutable and its contents never change.</p>\r
+<p>So you can trust the contents of a tree to be valid, the same way you\r
+can trust the contents of a blob, but you don't know where those\r
+contents <em>came</em> from.</p>\r
+<p>Side note on trees: since a "tree" object is a sorted list of\r
+"filename+content", you can create a diff between two trees without\r
+actually having to unpack two trees.  Just ignore all common parts,\r
+and your diff will look right.  In other words, you can effectively\r
+(and efficiently) tell the difference between any two random trees by\r
+O(n) where "n" is the size of the difference, rather than the size of\r
+the tree.</p>\r
+<p>Side note 2 on trees: since the name of a "blob" depends entirely and\r
+exclusively on its contents (i.e. there are no names or permissions\r
+involved), you can see trivial renames or permission changes by\r
+noticing that the blob stayed the same.  However, renames with data\r
+changes need a smarter "diff" implementation.</p>\r
+<p>A tree is created with <a href="git-write-tree.html">git-write-tree(1)</a> and\r
+its data can be accessed by <a href="git-ls-tree.html">git-ls-tree(1)</a>.\r
+Two trees can be compared with <a href="git-diff-tree.html">git-diff-tree(1)</a>.</p>\r
+<h3>Commit Object</h3>\r
+<p>The "commit" object is an object that introduces the notion of\r
+history into the picture.  In contrast to the other objects, it\r
+doesn't just describe the physical state of a tree, it describes how\r
+we got there, and why.</p>\r
+<p>A "commit" is defined by the tree-object that it results in, the\r
+parent commits (zero, one or more) that led up to that point, and a\r
+comment on what happened.  Again, a commit is not trusted per se:\r
+the contents are well-defined and "safe" due to the cryptographically\r
+strong signatures at all levels, but there is no reason to believe\r
+that the tree is "good" or that the merge information makes sense.\r
+The parents do not have to actually have any relationship with the\r
+result, for example.</p>\r
+<p>Note on commits: unlike real SCM's, commits do not contain\r
+rename information or file mode change information.  All of that is\r
+implicit in the trees involved (the result tree, and the result trees\r
+of the parents), and describing that makes no sense in this idiotic\r
+file manager.</p>\r
+<p>A commit is created with <a href="git-commit-tree.html">git-commit-tree(1)</a> and\r
+its data can be accessed by <a href="git-cat-file.html">git-cat-file(1)</a>.</p>\r
+<h3>Trust</h3>\r
+<p>An aside on the notion of "trust". Trust is really outside the scope\r
+of "git", but it's worth noting a few things.  First off, since\r
+everything is hashed with SHA1, you <em>can</em> trust that an object is\r
+intact and has not been messed with by external sources.  So the name\r
+of an object uniquely identifies a known state - just not a state that\r
+you may want to trust.</p>\r
+<p>Furthermore, since the SHA1 signature of a commit refers to the\r
+SHA1 signatures of the tree it is associated with and the signatures\r
+of the parent, a single named commit specifies uniquely a whole set\r
+of history, with full contents.  You can't later fake any step of the\r
+way once you have the name of a commit.</p>\r
+<p>So to introduce some real trust in the system, the only thing you need\r
+to do is to digitally sign just <em>one</em> special note, which includes the\r
+name of a top-level commit.  Your digital signature shows others\r
+that you trust that commit, and the immutability of the history of\r
+commits tells others that they can trust the whole history.</p>\r
+<p>In other words, you can easily validate a whole archive by just\r
+sending out a single email that tells the people the name (SHA1 hash)\r
+of the top commit, and digitally sign that email using something\r
+like GPG/PGP.</p>\r
+<p>To assist in this, git also provides the tag object&#8230;</p>\r
+<h3>Tag Object</h3>\r
+<p>Git provides the "tag" object to simplify creating, managing and\r
+exchanging symbolic and signed tokens.  The "tag" object at its\r
+simplest simply symbolically identifies another object by containing\r
+the sha1, type and symbolic name.</p>\r
+<p>However it can optionally contain additional signature information\r
+(which git doesn't care about as long as there's less than 8k of\r
+it). This can then be verified externally to git.</p>\r
+<p>Note that despite the tag features, "git" itself only handles content\r
+integrity; the trust framework (and signature provision and\r
+verification) has to come from outside.</p>\r
+<p>A tag is created with <a href="git-mktag.html">git-mktag(1)</a>,\r
+its data can be accessed by <a href="git-cat-file.html">git-cat-file(1)</a>,\r
+and the signature can be verified by\r
+<a href="git-verify-tag.html">git-verify-tag(1)</a>.</p>\r
+</div>\r
+<h2>The "index" aka "Current Directory Cache"</h2>\r
+<div class="sectionbody">\r
+<p>The index is a simple binary file, which contains an efficient\r
+representation of a virtual directory content at some random time.  It\r
+does so by a simple array that associates a set of names, dates,\r
+permissions and content (aka "blob") objects together.  The cache is\r
+always kept ordered by name, and names are unique (with a few very\r
+specific rules) at any point in time, but the cache has no long-term\r
+meaning, and can be partially updated at any time.</p>\r
+<p>In particular, the index certainly does not need to be consistent with\r
+the current directory contents (in fact, most operations will depend on\r
+different ways to make the index <em>not</em> be consistent with the directory\r
+hierarchy), but it has three very important attributes:</p>\r
+<p><em>(a) it can re-generate the full state it caches (not just the\r
+directory structure: it contains pointers to the "blob" objects so\r
+that it can regenerate the data too)</em></p>\r
+<p>As a special case, there is a clear and unambiguous one-way mapping\r
+from a current directory cache to a "tree object", which can be\r
+efficiently created from just the current directory cache without\r
+actually looking at any other data.  So a directory cache at any one\r
+time uniquely specifies one and only one "tree" object (but has\r
+additional data to make it easy to match up that tree object with what\r
+has happened in the directory)</p>\r
+<p><em>(b) it has efficient methods for finding inconsistencies between that\r
+cached state ("tree object waiting to be instantiated") and the\r
+current state.</em></p>\r
+<p><em>(c) it can additionally efficiently represent information about merge\r
+conflicts between different tree objects, allowing each pathname to be\r
+associated with sufficient information about the trees involved that\r
+you can create a three-way merge between them.</em></p>\r
+<p>Those are the three ONLY things that the directory cache does.  It's a\r
+cache, and the normal operation is to re-generate it completely from a\r
+known tree object, or update/compare it with a live tree that is being\r
+developed.  If you blow the directory cache away entirely, you generally\r
+haven't lost any information as long as you have the name of the tree\r
+that it described.</p>\r
+<p>At the same time, the index is at the same time also the\r
+staging area for creating new trees, and creating a new tree always\r
+involves a controlled modification of the index file.  In particular,\r
+the index file can have the representation of an intermediate tree that\r
+has not yet been instantiated.  So the index can be thought of as a\r
+write-back cache, which can contain dirty information that has not yet\r
+been written back to the backing store.</p>\r
+</div>\r
+<h2>The Workflow</h2>\r
+<div class="sectionbody">\r
+<p>Generally, all "git" operations work on the index file. Some operations\r
+work <strong>purely</strong> on the index file (showing the current state of the\r
+index), but most operations move data to and from the index file. Either\r
+from the database or from the working directory. Thus there are four\r
+main combinations:</p>\r
+<h3>1) working directory -&gt; index</h3>\r
+<p>You update the index with information from the working directory with\r
+the <a href="git-update-index.html">git-update-index(1)</a> command.  You\r
+generally update the index information by just specifying the filename\r
+you want to update, like so:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-update-index filename</tt></pre>\r
+</div></div>\r
+<p>but to avoid common mistakes with filename globbing etc, the command\r
+will not normally add totally new entries or remove old entries,\r
+i.e. it will normally just update existing cache entries.</p>\r
+<p>To tell git that yes, you really do realize that certain files no\r
+longer exist, or that new files should be added, you\r
+should use the <tt>--remove</tt> and <tt>--add</tt> flags respectively.</p>\r
+<p>NOTE! A <tt>--remove</tt> flag does <em>not</em> mean that subsequent filenames will\r
+necessarily be removed: if the files still exist in your directory\r
+structure, the index will be updated with their new status, not\r
+removed. The only thing <tt>--remove</tt> means is that update-cache will be\r
+considering a removed file to be a valid thing, and if the file really\r
+does not exist any more, it will update the index accordingly.</p>\r
+<p>As a special case, you can also do <tt>git-update-index --refresh</tt>, which\r
+will refresh the "stat" information of each index to match the current\r
+stat information. It will <em>not</em> update the object status itself, and\r
+it will only update the fields that are used to quickly test whether\r
+an object still matches its old backing store object.</p>\r
+<h3>2) index -&gt; object database</h3>\r
+<p>You write your current index file to a "tree" object with the program</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-write-tree</tt></pre>\r
+</div></div>\r
+<p>that doesn't come with any options - it will just write out the\r
+current index into the set of tree objects that describe that state,\r
+and it will return the name of the resulting top-level tree. You can\r
+use that tree to re-generate the index at any time by going in the\r
+other direction:</p>\r
+<h3>3) object database -&gt; index</h3>\r
+<p>You read a "tree" file from the object database, and use that to\r
+populate (and overwrite - don't do this if your index contains any\r
+unsaved state that you might want to restore later!) your current\r
+index.  Normal operation is just</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-read-tree &lt;sha1 of tree&gt;</tt></pre>\r
+</div></div>\r
+<p>and your index file will now be equivalent to the tree that you saved\r
+earlier. However, that is only your <em>index</em> file: your working\r
+directory contents have not been modified.</p>\r
+<h3>4) index -&gt; working directory</h3>\r
+<p>You update your working directory from the index by "checking out"\r
+files. This is not a very common operation, since normally you'd just\r
+keep your files updated, and rather than write to your working\r
+directory, you'd tell the index files about the changes in your\r
+working directory (i.e. <tt>git-update-index</tt>).</p>\r
+<p>However, if you decide to jump to a new version, or check out somebody\r
+else's version, or just restore a previous tree, you'd populate your\r
+index file with read-tree, and then you need to check out the result\r
+with</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-checkout-index filename</tt></pre>\r
+</div></div>\r
+<p>or, if you want to check out all of the index, use <tt>-a</tt>.</p>\r
+<p>NOTE! git-checkout-index normally refuses to overwrite old files, so\r
+if you have an old version of the tree already checked out, you will\r
+need to use the "-f" flag (<em>before</em> the "-a" flag or the filename) to\r
+<em>force</em> the checkout.</p>\r
+<p>Finally, there are a few odds and ends which are not purely moving\r
+from one representation to the other:</p>\r
+<h3>5) Tying it all together</h3>\r
+<p>To commit a tree you have instantiated with "git-write-tree", you'd\r
+create a "commit" object that refers to that tree and the history\r
+behind it - most notably the "parent" commits that preceded it in\r
+history.</p>\r
+<p>Normally a "commit" has one parent: the previous state of the tree\r
+before a certain change was made. However, sometimes it can have two\r
+or more parent commits, in which case we call it a "merge", due to the\r
+fact that such a commit brings together ("merges") two or more\r
+previous states represented by other commits.</p>\r
+<p>In other words, while a "tree" represents a particular directory state\r
+of a working directory, a "commit" represents that state in "time",\r
+and explains how we got there.</p>\r
+<p>You create a commit object by giving it the tree that describes the\r
+state at the time of the commit, and a list of parents:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-commit-tree &lt;tree&gt; -p &lt;parent&gt; [-p &lt;parent2&gt; ..]</tt></pre>\r
+</div></div>\r
+<p>and then giving the reason for the commit on stdin (either through\r
+redirection from a pipe or file, or by just typing it at the tty).</p>\r
+<p>git-commit-tree will return the name of the object that represents\r
+that commit, and you should save it away for later use. Normally,\r
+you'd commit a new <tt>HEAD</tt> state, and while git doesn't care where you\r
+save the note about that state, in practice we tend to just write the\r
+result to the file pointed at by <tt>.git/HEAD</tt>, so that we can always see\r
+what the last committed state was.</p>\r
+<p>Here is an ASCII art by Jon Loeliger that illustrates how\r
+various pieces fit together.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>\r
+                     commit-tree\r
+                      commit obj\r
+                       +----+\r
+                       |    |\r
+                       |    |\r
+                       V    V\r
+                    +-----------+\r
+                    | Object DB |\r
+                    |  Backing  |\r
+                    |   Store   |\r
+                    +-----------+\r
+                       ^\r
+           write-tree  |     |\r
+             tree obj  |     |\r
+                       |     |  read-tree\r
+                       |     |  tree obj\r
+                             V\r
+                    +-----------+\r
+                    |   Index   |\r
+                    |  "cache"  |\r
+                    +-----------+\r
+         update-index  ^\r
+             blob obj  |     |\r
+                       |     |\r
+    checkout-index -u  |     |  checkout-index\r
+             stat      |     |  blob obj\r
+                             V\r
+                    +-----------+\r
+                    |  Working  |\r
+                    | Directory |\r
+                    +-----------+\r
+</tt></pre>\r
+</div></div>\r
+<h3>6) Examining the data</h3>\r
+<p>You can examine the data represented in the object database and the\r
+index with various helper tools. For every object, you can use\r
+<a href="git-cat-file.html">git-cat-file(1)</a> to examine details about the\r
+object:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-cat-file -t &lt;objectname&gt;</tt></pre>\r
+</div></div>\r
+<p>shows the type of the object, and once you have the type (which is\r
+usually implicit in where you find the object), you can use</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-cat-file blob|tree|commit|tag &lt;objectname&gt;</tt></pre>\r
+</div></div>\r
+<p>to show its contents. NOTE! Trees have binary content, and as a result\r
+there is a special helper for showing that content, called\r
+<tt>git-ls-tree</tt>, which turns the binary content into a more easily\r
+readable form.</p>\r
+<p>It's especially instructive to look at "commit" objects, since those\r
+tend to be small and fairly self-explanatory. In particular, if you\r
+follow the convention of having the top commit name in <tt>.git/HEAD</tt>,\r
+you can do</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-cat-file commit HEAD</tt></pre>\r
+</div></div>\r
+<p>to see what the top commit was.</p>\r
+<h3>7) Merging multiple trees</h3>\r
+<p>Git helps you do a three-way merge, which you can expand to n-way by\r
+repeating the merge procedure arbitrary times until you finally\r
+"commit" the state.  The normal situation is that you'd only do one\r
+three-way merge (two parents), and commit it, but if you like to, you\r
+can do multiple parents in one go.</p>\r
+<p>To do a three-way merge, you need the two sets of "commit" objects\r
+that you want to merge, use those to find the closest common parent (a\r
+third "commit" object), and then use those commit objects to find the\r
+state of the directory ("tree" object) at these points.</p>\r
+<p>To get the "base" for the merge, you first look up the common parent\r
+of two commits with</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-merge-base &lt;commit1&gt; &lt;commit2&gt;</tt></pre>\r
+</div></div>\r
+<p>which will return you the commit they are both based on.  You should\r
+now look up the "tree" objects of those commits, which you can easily\r
+do with (for example)</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-cat-file commit &lt;commitname&gt; | head -1</tt></pre>\r
+</div></div>\r
+<p>since the tree object information is always the first line in a commit\r
+object.</p>\r
+<p>Once you know the three trees you are going to merge (the one\r
+"original" tree, aka the common case, and the two "result" trees, aka\r
+the branches you want to merge), you do a "merge" read into the\r
+index. This will complain if it has to throw away your old index contents, so you should\r
+make sure that you've committed those - in fact you would normally\r
+always do a merge against your last commit (which should thus match\r
+what you have in your current index anyway).</p>\r
+<p>To do the merge, do</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-read-tree -m -u &lt;origtree&gt; &lt;yourtree&gt; &lt;targettree&gt;</tt></pre>\r
+</div></div>\r
+<p>which will do all trivial merge operations for you directly in the\r
+index file, and you can just write the result out with\r
+<tt>git-write-tree</tt>.</p>\r
+<p>Historical note.  We did not have <tt>-u</tt> facility when this\r
+section was first written, so we used to warn that\r
+the merge is done in the index file, not in your\r
+working tree, and your working tree will not match your\r
+index after this step.\r
+This is no longer true.  The above command, thanks to <tt>-u</tt>\r
+option, updates your working tree with the merge results for\r
+paths that have been trivially merged.</p>\r
+<h3>8) Merging multiple trees, continued</h3>\r
+<p>Sadly, many merges aren't trivial. If there are files that have\r
+been added.moved or removed, or if both branches have modified the\r
+same file, you will be left with an index tree that contains "merge\r
+entries" in it. Such an index tree can <em>NOT</em> be written out to a tree\r
+object, and you will have to resolve any such merge clashes using\r
+other tools before you can write out the result.</p>\r
+<p>You can examine such index state with <tt>git-ls-files --unmerged</tt>\r
+command.  An example:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-read-tree -m $orig HEAD $target\r
+$ git-ls-files --unmerged\r
+100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1       hello.c\r
+100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2       hello.c\r
+100644 cc44c73eb783565da5831b4d820c962954019b69 3       hello.c</tt></pre>\r
+</div></div>\r
+<p>Each line of the <tt>git-ls-files --unmerged</tt> output begins with\r
+the blob mode bits, blob SHA1, <em>stage number</em>, and the\r
+filename.  The <em>stage number</em> is git's way to say which tree it\r
+came from: stage 1 corresponds to <tt>$orig</tt> tree, stage 2 <tt>HEAD</tt>\r
+tree, and stage3 <tt>$target</tt> tree.</p>\r
+<p>Earlier we said that trivial merges are done inside\r
+<tt>git-read-tree -m</tt>.  For example, if the file did not change\r
+from <tt>$orig</tt> to <tt>HEAD</tt> nor <tt>$target</tt>, or if the file changed\r
+from <tt>$orig</tt> to <tt>HEAD</tt> and <tt>$orig</tt> to <tt>$target</tt> the same way,\r
+obviously the final outcome is what is in <tt>HEAD</tt>.  What the\r
+above example shows is that file <tt>hello.c</tt> was changed from\r
+<tt>$orig</tt> to <tt>HEAD</tt> and <tt>$orig</tt> to <tt>$target</tt> in a different way.\r
+You could resolve this by running your favorite 3-way merge\r
+program, e.g.  <tt>diff3</tt> or <tt>merge</tt>, on the blob objects from\r
+these three stages yourself, like this:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-cat-file blob 263414f... &gt;hello.c~1\r
+$ git-cat-file blob 06fa6a2... &gt;hello.c~2\r
+$ git-cat-file blob cc44c73... &gt;hello.c~3\r
+$ merge hello.c~2 hello.c~1 hello.c~3</tt></pre>\r
+</div></div>\r
+<p>This would leave the merge result in <tt>hello.c~2</tt> file, along\r
+with conflict markers if there are conflicts.  After verifying\r
+the merge result makes sense, you can tell git what the final\r
+merge result for this file is by:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>mv -f hello.c~2 hello.c\r
+git-update-index hello.c</tt></pre>\r
+</div></div>\r
+<p>When a path is in unmerged state, running <tt>git-update-index</tt> for\r
+that path tells git to mark the path resolved.</p>\r
+<p>The above is the description of a git merge at the lowest level,\r
+to help you understand what conceptually happens under the hood.\r
+In practice, nobody, not even git itself, uses three <tt>git-cat-file</tt>\r
+for this.  There is <tt>git-merge-index</tt> program that extracts the\r
+stages to temporary files and calls a "merge" script on it:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-merge-index git-merge-one-file hello.c</tt></pre>\r
+</div></div>\r
+<p>and that is what higher level <tt>git resolve</tt> is implemented with.</p>\r
+</div>\r
+<h2>Authors</h2>\r
+<div class="sectionbody">\r
+<ul>\r
+<li>\r
+<p>\r
+git's founding father is Linus Torvalds &lt;torvalds@osdl.org&gt;.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The current git nurse is Junio C Hamano &lt;junkio@cox.net&gt;.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The git potty was written by Andres Ericsson &lt;ae@op5.se&gt;.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+General upbringing is handled by the git-list &lt;git@vger.kernel.org&gt;.\r
+</p>\r
+</li>\r
+</ul>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>The documentation for git suite was started by David Greaves\r
+&lt;david@dgreaves.com&gt;, and later enhanced greatly by the\r
+contributors on the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:59 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/git.txt b/git.txt
new file mode 100644 (file)
index 0000000..5f068c2
--- /dev/null
+++ b/git.txt
@@ -0,0 +1,603 @@
+git(7)
+======
+
+NAME
+----
+git - the stupid content tracker
+
+
+SYNOPSIS
+--------
+'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [--help] COMMAND [ARGS]
+
+DESCRIPTION
+-----------
+'git' is both a program and a directory content tracker system.
+The program 'git' is just a wrapper to reach the core git programs
+(or a potty if you like, as it's not exactly porcelain but still
+brings your stuff to the plumbing).
+
+OPTIONS
+-------
+--version::
+       prints the git suite version that the 'git' program came from.
+
+--help::
+       prints the synopsis and a list of available commands.
+       If a git command is named this option will bring up the
+       man-page for that command.
+
+--exec-path::
+       path to wherever your core git programs are installed.
+       This can also be controlled by setting the GIT_EXEC_PATH
+       environment variable. If no path is given 'git' will print
+       the current setting and then exit.
+
+
+NOT LEARNING CORE GIT COMMANDS
+------------------------------
+
+This manual is intended to give complete background information
+and internal workings of git, which may be too much for most
+people.  The <<Discussion>> section below contains much useful
+definition and clarification - read that first.
+
+If you are interested in using git to manage (version control)
+projects, use link:everyday.html[Everyday GIT] as a guide to the
+minimum set of commands you need to know for day-to-day work.
+Most likely, that will get you started, and you can go a long
+way without knowing the low level details too much.
+
+The link:tutorial.html[tutorial] document covers how things
+internally work.
+
+If you are migrating from CVS, link:cvs-migration.html[cvs
+migration] document may be helpful after you finish the
+tutorial.
+
+After you get the general feel from the tutorial and this
+overview page, you may want to take a look at the
+link:howto-index.html[howto] documents.
+
+
+CORE GIT COMMANDS
+-----------------
+
+If you are writing your own Porcelain, you need to be familiar
+with most of the low level commands --- I suggest starting from
+gitlink:git-update-index[1] and gitlink:git-read-tree[1].
+
+
+Commands Overview
+-----------------
+The git commands can helpfully be split into those that manipulate
+the repository, the index and the files in the working tree, those that
+interrogate and compare them, and those that moves objects and
+references between repositories.
+
+In addition, git itself comes with a spartan set of porcelain
+commands.  They are usable but are not meant to compete with real
+Porcelains.
+
+There are also some ancillary programs that can be viewed as useful
+aids for using the core commands but which are unlikely to be used by
+SCMs layered over git.
+
+Manipulation commands
+~~~~~~~~~~~~~~~~~~~~~
+gitlink:git-apply[1]::
+       Reads a "diff -up1" or git generated patch file and
+       applies it to the working tree.
+
+gitlink:git-checkout-index[1]::
+       Copy files from the index to the working tree.
+
+gitlink:git-commit-tree[1]::
+       Creates a new commit object.
+
+gitlink:git-hash-object[1]::
+       Computes the object ID from a file.
+
+gitlink:git-index-pack[1]::
+       Build pack idx file for an existing packed archive.
+
+gitlink:git-init-db[1]::
+       Creates an empty git object database, or reinitialize an
+       existing one.
+
+gitlink:git-merge-index[1]::
+       Runs a merge for files needing merging.
+
+gitlink:git-mktag[1]::
+       Creates a tag object.
+
+gitlink:git-pack-objects[1]::
+       Creates a packed archive of objects.
+
+gitlink:git-prune-packed[1]::
+       Remove extra objects that are already in pack files.
+
+gitlink:git-read-tree[1]::
+       Reads tree information into the index.
+
+gitlink:git-repo-config[1]::
+       Get and set options in .git/config.
+
+gitlink:git-unpack-objects[1]::
+       Unpacks objects out of a packed archive.
+
+gitlink:git-update-index[1]::
+       Registers files in the working tree to the index.
+
+gitlink:git-write-tree[1]::
+       Creates a tree from the index.
+
+
+Interrogation commands
+~~~~~~~~~~~~~~~~~~~~~~
+
+gitlink:git-cat-file[1]::
+       Provide content or type/size information for repository objects.
+
+gitlink:git-diff-index[1]::
+       Compares content and mode of blobs between the index and repository.
+
+gitlink:git-diff-files[1]::
+       Compares files in the working tree and the index.
+
+gitlink:git-diff-stages[1]::
+       Compares two "merge stages" in the index.
+
+gitlink:git-diff-tree[1]::
+       Compares the content and mode of blobs found via two tree objects.
+
+gitlink:git-fsck-objects[1]::
+       Verifies the connectivity and validity of the objects in the database.
+
+gitlink:git-ls-files[1]::
+       Information about files in the index and the working tree.
+
+gitlink:git-ls-tree[1]::
+       Displays a tree object in human readable form.
+
+gitlink:git-merge-base[1]::
+       Finds as good common ancestors as possible for a merge.
+
+gitlink:git-name-rev[1]::
+       Find symbolic names for given revs.
+
+gitlink:git-pack-redundant[1]::
+       Find redundant pack files.
+
+gitlink:git-rev-list[1]::
+       Lists commit objects in reverse chronological order.
+
+gitlink:git-show-index[1]::
+       Displays contents of a pack idx file.
+
+gitlink:git-tar-tree[1]::
+       Creates a tar archive of the files in the named tree object.
+
+gitlink:git-unpack-file[1]::
+       Creates a temporary file with a blob's contents.
+
+gitlink:git-var[1]::
+       Displays a git logical variable.
+
+gitlink:git-verify-pack[1]::
+       Validates packed git archive files.
+
+In general, the interrogate commands do not touch the files in
+the working tree.
+
+
+Synching repositories
+~~~~~~~~~~~~~~~~~~~~~
+
+gitlink:git-clone-pack[1]::
+       Clones a repository into the current repository (engine
+       for ssh and local transport).
+
+gitlink:git-fetch-pack[1]::
+       Updates from a remote repository (engine for ssh and
+       local transport).
+
+gitlink:git-http-fetch[1]::
+       Downloads a remote git repository via HTTP by walking
+       commit chain.
+
+gitlink:git-local-fetch[1]::
+       Duplicates another git repository on a local system by
+       walking commit chain.
+
+gitlink:git-peek-remote[1]::
+       Lists references on a remote repository using
+       upload-pack protocol (engine for ssh and local
+       transport).
+
+gitlink:git-receive-pack[1]::
+       Invoked by 'git-send-pack' to receive what is pushed to it.
+
+gitlink:git-send-pack[1]::
+       Pushes to a remote repository, intelligently.
+
+gitlink:git-http-push[1]::
+       Push missing objects using HTTP/DAV.
+
+gitlink:git-shell[1]::
+       Restricted shell for GIT-only SSH access.
+
+gitlink:git-ssh-fetch[1]::
+       Pulls from a remote repository over ssh connection by
+       walking commit chain.
+
+gitlink:git-ssh-upload[1]::
+       Helper "server-side" program used by git-ssh-fetch.
+
+gitlink:git-update-server-info[1]::
+       Updates auxiliary information on a dumb server to help
+       clients discover references and packs on it.
+
+gitlink:git-upload-pack[1]::
+       Invoked by 'git-clone-pack' and 'git-fetch-pack' to push
+       what are asked for.
+
+
+Porcelain-ish Commands
+----------------------
+
+gitlink:git-add[1]::
+       Add paths to the index.
+
+gitlink:git-am[1]::
+       Apply patches from a mailbox, but cooler.
+
+gitlink:git-applymbox[1]::
+       Apply patches from a mailbox, original version by Linus.
+
+gitlink:git-bisect[1]::
+       Find the change that introduced a bug by binary search.
+
+gitlink:git-branch[1]::
+       Create and Show branches.
+
+gitlink:git-checkout[1]::
+       Checkout and switch to a branch.
+
+gitlink:git-cherry-pick[1]::
+       Cherry-pick the effect of an existing commit.
+
+gitlink:git-clone[1]::
+       Clones a repository into a new directory.
+
+gitlink:git-commit[1]::
+       Record changes to the repository.
+
+gitlink:git-diff[1]::
+       Show changes between commits, commit and working tree, etc.
+
+gitlink:git-fetch[1]::
+       Download from a remote repository via various protocols.
+
+gitlink:git-format-patch[1]::
+       Prepare patches for e-mail submission.
+
+gitlink:git-grep[1]::
+       Print lines matching a pattern.
+
+gitlink:git-log[1]::
+       Shows commit logs.
+
+gitlink:git-ls-remote[1]::
+       Shows references in a remote or local repository.
+
+gitlink:git-merge[1]::
+       Grand unified merge driver.
+
+gitlink:git-mv[1]::
+       Move or rename a file, a directory, or a symlink.
+
+gitlink:git-pull[1]::
+       Fetch from and merge with a remote repository.
+
+gitlink:git-push[1]::
+       Update remote refs along with associated objects.
+
+gitlink:git-rebase[1]::
+       Rebase local commits to the updated upstream head.
+
+gitlink:git-repack[1]::
+       Pack unpacked objects in a repository.
+
+gitlink:git-reset[1]::
+       Reset current HEAD to the specified state.
+
+gitlink:git-resolve[1]::
+       Merge two commits.
+
+gitlink:git-revert[1]::
+       Revert an existing commit.
+
+gitlink:git-shortlog[1]::
+       Summarizes 'git log' output.
+
+gitlink:git-show-branch[1]::
+       Show branches and their commits.
+
+gitlink:git-status[1]::
+       Shows the working tree status.
+
+gitlink:git-verify-tag[1]::
+       Check the GPG signature of tag.
+
+gitlink:git-whatchanged[1]::
+       Shows commit logs and differences they introduce.
+
+
+Ancillary Commands
+------------------
+Manipulators:
+
+gitlink:git-applypatch[1]::
+       Apply one patch extracted from an e-mail.
+
+gitlink:git-archimport[1]::
+       Import an arch repository into git.
+
+gitlink:git-convert-objects[1]::
+       Converts old-style git repository.
+
+gitlink:git-cvsimport[1]::
+       Salvage your data out of another SCM people love to hate.
+
+gitlink:git-cvsexportcommit[1]::
+       Export a single commit to a CVS checkout.
+
+gitlink:git-lost-found[1]::
+       Recover lost refs that luckily have not yet been pruned.
+
+gitlink:git-merge-one-file[1]::
+       The standard helper program to use with `git-merge-index`.
+
+gitlink:git-prune[1]::
+       Prunes all unreachable objects from the object database.
+
+gitlink:git-relink[1]::
+       Hardlink common objects in local repositories.
+
+gitlink:git-svnimport[1]::
+       Import a SVN repository into git.
+
+gitlink:git-sh-setup[1]::
+       Common git shell script setup code.
+
+gitlink:git-symbolic-ref[1]::
+       Read and modify symbolic refs.
+
+gitlink:git-tag[1]::
+       An example script to create a tag object signed with GPG.
+
+gitlink:git-update-ref[1]::
+       Update the object name stored in a ref safely.
+
+
+Interrogators:
+
+gitlink:git-check-ref-format[1]::
+       Make sure ref name is well formed.
+
+gitlink:git-cherry[1]::
+       Find commits not merged upstream.
+
+gitlink:git-count-objects[1]::
+       Count unpacked number of objects and their disk consumption.
+
+gitlink:git-daemon[1]::
+       A really simple server for git repositories.
+
+gitlink:git-get-tar-commit-id[1]::
+       Extract commit ID from an archive created using git-tar-tree.
+
+gitlink:git-mailinfo[1]::
+       Extracts patch and authorship information from a single
+       e-mail message, optionally transliterating the commit
+       message into utf-8.
+
+gitlink:git-mailsplit[1]::
+       A stupid program to split UNIX mbox format mailbox into
+       individual pieces of e-mail.
+
+gitlink:git-patch-id[1]::
+       Compute unique ID for a patch.
+
+gitlink:git-parse-remote[1]::
+       Routines to help parsing `$GIT_DIR/remotes/` files.
+
+gitlink:git-request-pull[1]::
+       git-request-pull.
+
+gitlink:git-rev-parse[1]::
+       Pick out and massage parameters.
+
+gitlink:git-send-email[1]::
+       Send patch e-mails out of "format-patch --mbox" output.
+
+gitlink:git-symbolic-refs[1]::
+       Read and modify symbolic refs.
+
+gitlink:git-stripspace[1]::
+       Filter out empty lines.
+
+
+Commands not yet documented
+---------------------------
+
+gitlink:gitk[1]::
+       The gitk repository browser.
+
+
+Configuration Mechanism
+-----------------------
+
+Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
+is used to hold per-repository configuration options.  It is a
+simple text file modelled after `.ini` format familiar to some
+people.  Here is an example:
+
+------------
+#
+# A '#' or ';' character indicates a comment.
+#
+
+; core variables
+[core]
+       ; Don't trust file modes
+       filemode = false
+
+; user identity
+[user]
+       name = "Junio C Hamano"
+       email = "junkio@twinsun.com"
+
+------------
+
+Various commands read from the configuration file and adjust
+their operation accordingly.
+
+
+Identifier Terminology
+----------------------
+<object>::
+       Indicates the object name for any type of object.
+
+<blob>::
+       Indicates a blob object name.
+
+<tree>::
+       Indicates a tree object name.
+
+<commit>::
+       Indicates a commit object name.
+
+<tree-ish>::
+       Indicates a tree, commit or tag object name.  A
+       command that takes a <tree-ish> argument ultimately wants to
+       operate on a <tree> object but automatically dereferences
+       <commit> and <tag> objects that point at a <tree>.
+
+<type>::
+       Indicates that an object type is required.
+       Currently one of: `blob`, `tree`, `commit`, or `tag`.
+
+<file>::
+       Indicates a filename - almost always relative to the
+       root of the tree structure `GIT_INDEX_FILE` describes.
+
+Symbolic Identifiers
+--------------------
+Any git command accepting any <object> can also use the following
+symbolic notation:
+
+HEAD::
+       indicates the head of the current branch (i.e. the
+       contents of `$GIT_DIR/HEAD`).
+
+<tag>::
+       a valid tag 'name'
+       (i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).
+
+<head>::
+       a valid head 'name'
+       (i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
+
+<snap>::
+       a valid snapshot 'name'
+       (i.e. the contents of `$GIT_DIR/refs/snap/<snap>`).
+
+
+File/Directory Structure
+------------------------
+
+Please see link:repository-layout.html[repository layout] document.
+
+Higher level SCMs may provide and manage additional information in the
+`$GIT_DIR`.
+
+
+Terminology
+-----------
+Please see link:glossary.html[glossary] document.
+
+
+Environment Variables
+---------------------
+Various git commands use the following environment variables:
+
+The git Repository
+~~~~~~~~~~~~~~~~~~
+These environment variables apply to 'all' core git commands. Nb: it
+is worth noting that they may be used/overridden by SCMS sitting above
+git so take care if using Cogito etc.
+
+'GIT_INDEX_FILE'::
+       This environment allows the specification of an alternate
+       index file. If not specified, the default of `$GIT_DIR/index`
+       is used.
+
+'GIT_OBJECT_DIRECTORY'::
+       If the object storage directory is specified via this
+       environment variable then the sha1 directories are created
+       underneath - otherwise the default `$GIT_DIR/objects`
+       directory is used.
+
+'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
+       Due to the immutable nature of git objects, old objects can be
+       archived into shared, read-only directories. This variable
+       specifies a ":" separated list of git object directories which
+       can be used to search for git objects. New objects will not be
+       written to these directories.
+
+'GIT_DIR'::
+       If the 'GIT_DIR' environment variable is set then it
+       specifies a path to use instead of the default `.git`
+       for the base of the repository.
+
+git Commits
+~~~~~~~~~~~
+'GIT_AUTHOR_NAME'::
+'GIT_AUTHOR_EMAIL'::
+'GIT_AUTHOR_DATE'::
+'GIT_COMMITTER_NAME'::
+'GIT_COMMITTER_EMAIL'::
+       see gitlink:git-commit-tree[1]
+
+git Diffs
+~~~~~~~~~
+'GIT_DIFF_OPTS'::
+'GIT_EXTERNAL_DIFF'::
+       see the "generating patches" section in :
+       gitlink:git-diff-index[1];
+       gitlink:git-diff-files[1];
+       gitlink:git-diff-tree[1]
+
+Discussion[[Discussion]]
+------------------------
+include::../README[]
+
+Authors
+-------
+* git's founding father is Linus Torvalds <torvalds@osdl.org>.
+* The current git nurse is Junio C Hamano <junkio@cox.net>.
+* The git potty was written by Andres Ericsson <ae@op5.se>.
+* General upbringing is handled by the git-list <git@vger.kernel.org>.
+
+Documentation
+--------------
+The documentation for git suite was started by David Greaves
+<david@dgreaves.com>, and later enhanced greatly by the
+contributors on the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/gitk.html b/gitk.html
new file mode 100644 (file)
index 0000000..1fba904
--- /dev/null
+++ b/gitk.html
@@ -0,0 +1,344 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>gitk(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+gitk(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>gitk -\r
+   Some git command not yet documented.\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><em>gitk</em> [ --option ] &lt;args&gt;&#8230;</p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Does something not yet documented.</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+--option\r
+</dt>\r
+<dd>\r
+<p>\r
+        Some option not yet documented.\r
+</p>\r
+</dd>\r
+<dt>\r
+&lt;args&gt;&#8230;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Some argument not yet documented.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Examples</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+gitk v2.6.12.. include/scsi drivers/scsi\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show as the changes since version <em>v2.6.12</em> that changed any\r
+        file in the include/scsi or drivers/scsi subdirectories\r
+</p>\r
+</dd>\r
+<dt>\r
+gitk --since="2 weeks ago" &#8212; gitk\r
+</dt>\r
+<dd>\r
+<p>\r
+        Show the changes during the last two weeks to the file <em>gitk</em>.\r
+        The "--" is necessary to avoid confusion with the <strong>branch</strong> named\r
+        <em>gitk</em>\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Paul Mackerras &lt;paulus@samba.org&gt;</p>\r
+</div>\r
+<h2>Documentation</h2>\r
+<div class="sectionbody">\r
+<p>Documentation by Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:16:58 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/gitk.txt b/gitk.txt
new file mode 100644 (file)
index 0000000..eb126d7
--- /dev/null
+++ b/gitk.txt
@@ -0,0 +1,51 @@
+gitk(1)
+=======
+
+NAME
+----
+gitk - Some git command not yet documented.
+
+
+SYNOPSIS
+--------
+'gitk' [ --option ] <args>...
+
+DESCRIPTION
+-----------
+Does something not yet documented.
+
+
+OPTIONS
+-------
+--option::
+       Some option not yet documented.
+
+<args>...::
+       Some argument not yet documented.
+
+
+Examples
+--------
+gitk v2.6.12.. include/scsi drivers/scsi::
+
+       Show as the changes since version 'v2.6.12' that changed any
+       file in the include/scsi or drivers/scsi subdirectories
+
+gitk --since="2 weeks ago" -- gitk::
+
+       Show the changes during the last two weeks to the file 'gitk'.
+       The "--" is necessary to avoid confusion with the *branch* named
+       'gitk'
+
+Author
+------
+Written by Paul Mackerras <paulus@samba.org>
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the gitlink:git[7] suite
+
diff --git a/glossary.html b/glossary.html
new file mode 100644 (file)
index 0000000..b3b2988
--- /dev/null
@@ -0,0 +1,807 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>GIT Glossary</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>GIT Glossary</h1>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<p>This list is sorted alphabetically:</p>\r
+<dl>\r
+<dt>\r
+<a id="ref_alternate_object_database"></a>alternate object database\r
+</dt>\r
+<dd>\r
+<p>\r
+        Via the alternates mechanism, a <a href="#ref_repository">repository</a> can\r
+        inherit part of its <a href="#ref_object_database">object database</a> from another\r
+        <a href="#ref_object_database">object database</a>, which is called "alternate".\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_blob_object"></a>blob object\r
+</dt>\r
+<dd>\r
+<p>\r
+        Untyped <a href="#ref_object">object</a>, e.g. the contents of a file.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_branch"></a>branch\r
+</dt>\r
+<dd>\r
+<p>\r
+        A non-cyclical graph of revisions, i.e. the complete history of a\r
+        particular <a href="#ref_revision">revision</a>, which is called the\r
+        <a href="#ref_branch">branch</a> <a href="#ref_head">head</a>. The <a href="#ref_branch">branch</a> heads\r
+        are stored in <tt>$GIT_DIR/refs/heads/</tt>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_cache"></a>cache\r
+</dt>\r
+<dd>\r
+<p>\r
+        Obsolete for: <a href="#ref_index">index</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_chain"></a>chain\r
+</dt>\r
+<dd>\r
+<p>\r
+        A list of objects, where each <a href="#ref_object">object</a> in the list contains\r
+        a reference to its successor (for example, the successor of a\r
+        <a href="#ref_commit">commit</a> could be one of its parents).\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_changeset"></a>changeset\r
+</dt>\r
+<dd>\r
+<p>\r
+        BitKeeper/cvsps speak for "<a href="#ref_commit">commit</a>". Since git does not\r
+        store changes, but states, it really does not make sense to use the term\r
+        "changesets" with git.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_checkout"></a>checkout\r
+</dt>\r
+<dd>\r
+<p>\r
+        The action of updating the <a href="#ref_working_tree">working tree</a> to a\r
+        <a href="#ref_revision">revision</a> which was stored in the\r
+        <a href="#ref_object_database">object database</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_clean"></a>clean\r
+</dt>\r
+<dd>\r
+<p>\r
+        A <a href="#ref_working_tree">working tree</a> is <a href="#ref_clean">clean</a>, if it\r
+        corresponds to the <a href="#ref_revision">revision</a> referenced by the current\r
+        <a href="#ref_head">head</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_commit"></a>commit\r
+</dt>\r
+<dd>\r
+<p>\r
+        As a verb: The action of storing the current state of the\r
+        <a href="#ref_index">index</a> in the <a href="#ref_object_database">object database</a>. The\r
+        result is a <a href="#ref_revision">revision</a>. As a noun: Short hand for\r
+        <a href="#ref_commit_object">commit object</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_commit_object"></a>commit object\r
+</dt>\r
+<dd>\r
+<p>\r
+        An <a href="#ref_object">object</a> which contains the information about a\r
+        particular <a href="#ref_revision">revision</a>, such as parents, committer,\r
+        author, date and the <a href="#ref_tree_object">tree object</a> which corresponds\r
+        to the top <a href="#ref_directory">directory</a> of the stored\r
+        <a href="#ref_revision">revision</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_core_git"></a>core git\r
+</dt>\r
+<dd>\r
+<p>\r
+        Fundamental data structures and utilities of git. Exposes only limited\r
+        source code management tools.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_DAG"></a>DAG\r
+</dt>\r
+<dd>\r
+<p>\r
+        Directed acyclic graph. The <a href="#ref_commit">commit</a> objects form a\r
+        directed acyclic graph, because they have parents (directed), and the\r
+        graph of <a href="#ref_commit">commit</a> objects is acyclic (there is no\r
+        <a href="#ref_chain">chain</a> which begins and ends with the same\r
+        <a href="#ref_object">object</a>).\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_dircache"></a>dircache\r
+</dt>\r
+<dd>\r
+<p>\r
+        You are <strong>waaaaay</strong> behind.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_directory"></a>directory\r
+</dt>\r
+<dd>\r
+<p>\r
+        The list you get with "ls" :-)\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_dirty"></a>dirty\r
+</dt>\r
+<dd>\r
+<p>\r
+        A <a href="#ref_working_tree">working tree</a> is said to be <a href="#ref_dirty">dirty</a> if\r
+        it contains modifications which have not been committed to the current\r
+        <a href="#ref_branch">branch</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_ent"></a>ent\r
+</dt>\r
+<dd>\r
+<p>\r
+        Favorite synonym to "<a href="#ref_tree-ish">tree-ish</a>" by some total geeks. See\r
+        <tt>http://en.wikipedia.org/wiki/Ent_(Middle-earth)</tt> for an in-depth\r
+        explanation.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_fetch"></a>fetch\r
+</dt>\r
+<dd>\r
+<p>\r
+        Fetching a <a href="#ref_branch">branch</a> means to get the\r
+        <a href="#ref_branch">branch</a>'s <a href="#ref_head_ref">head ref</a> from a remote\r
+        <a href="#ref_repository">repository</a>, to find out which objects are missing\r
+        from the local <a href="#ref_object_database">object database</a>, and to get them,\r
+        too.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_file_system"></a>file system\r
+</dt>\r
+<dd>\r
+<p>\r
+        Linus Torvalds originally designed git to be a user space file system,\r
+        i.e. the infrastructure to hold files and directories. That ensured the\r
+        efficiency and speed of git.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_git_archive"></a>git archive\r
+</dt>\r
+<dd>\r
+<p>\r
+        Synonym for <a href="#ref_repository">repository</a> (for arch people).\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_hash"></a>hash\r
+</dt>\r
+<dd>\r
+<p>\r
+        In git's context, synonym to <a href="#ref_object_name">object name</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_head"></a>head\r
+</dt>\r
+<dd>\r
+<p>\r
+        The top of a <a href="#ref_branch">branch</a>. It contains a <a href="#ref_ref">ref</a> to the\r
+        corresponding <a href="#ref_commit_object">commit object</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_head_ref"></a>head ref\r
+</dt>\r
+<dd>\r
+<p>\r
+        A <a href="#ref_ref">ref</a> pointing to a <a href="#ref_head">head</a>. Often, this is\r
+        abbreviated to "<a href="#ref_head">head</a>". Head refs are stored in\r
+        <tt>$GIT_DIR/refs/heads/</tt>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_index"></a>index\r
+</dt>\r
+<dd>\r
+<p>\r
+        A collection of files with stat information, whose contents are stored\r
+        as objects. The <a href="#ref_index">index</a> is a stored version of your working\r
+        <a href="#ref_tree">tree</a>. Truth be told, it can also contain a second, and even\r
+        a third version of a <a href="#ref_working_tree">working tree</a>, which are used\r
+        when merging.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_index_entry"></a>index entry\r
+</dt>\r
+<dd>\r
+<p>\r
+        The information regarding a particular file, stored in the\r
+        <a href="#ref_index">index</a>. An <a href="#ref_index_entry">index entry</a> can be unmerged,\r
+        if a <a href="#ref_merge">merge</a> was started, but not yet finished (i.e. if the\r
+        <a href="#ref_index">index</a> contains multiple versions of that file).\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_merge"></a>merge\r
+</dt>\r
+<dd>\r
+<p>\r
+        To <a href="#ref_merge">merge</a> branches means to try to accumulate the changes\r
+        since a common ancestor and apply them to the first\r
+        <a href="#ref_branch">branch</a>. An automatic <a href="#ref_merge">merge</a> uses heuristics\r
+        to accomplish that. Evidently, an automatic <a href="#ref_merge">merge</a> can\r
+        fail.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_object"></a>object\r
+</dt>\r
+<dd>\r
+<p>\r
+        The unit of storage in git. It is uniquely identified by the\r
+        <a href="#ref_SHA1">SHA1</a> of its contents. Consequently, an\r
+        <a href="#ref_object">object</a> can not be changed.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_object_database"></a>object database\r
+</dt>\r
+<dd>\r
+<p>\r
+        Stores a set of "objects", and an individial <a href="#ref_object">object</a> is\r
+        identified by its <a href="#ref_object_name">object name</a>. The objects usually\r
+        live in <tt>$GIT_DIR/objects/</tt>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_object_identifier"></a>object identifier\r
+</dt>\r
+<dd>\r
+<p>\r
+        Synonym for <a href="#ref_object_name">object name</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_object_name"></a>object name\r
+</dt>\r
+<dd>\r
+<p>\r
+        The unique identifier of an <a href="#ref_object">object</a>. The <a href="#ref_hash">hash</a>\r
+        of the <a href="#ref_object">object</a>'s contents using the Secure Hash Algorithm\r
+        1 and usually represented by the 40 character hexadecimal encoding of\r
+        the <a href="#ref_hash">hash</a> of the <a href="#ref_object">object</a> (possibly followed by\r
+        a white space).\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_octopus"></a>octopus\r
+</dt>\r
+<dd>\r
+<p>\r
+        To <a href="#ref_merge">merge</a> more than two branches. Also denotes an\r
+        intelligent predator.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_pack"></a>pack\r
+</dt>\r
+<dd>\r
+<p>\r
+        A set of objects which have been compressed into one file (to save space\r
+        or to transmit them efficiently).\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_pack_index"></a>pack index\r
+</dt>\r
+<dd>\r
+<p>\r
+        The list of identifiers, and other information, of the objects in a\r
+        <a href="#ref_pack">pack</a>, to assist in efficiently accessing the contents of a\r
+        <a href="#ref_pack">pack</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_parent"></a>parent\r
+</dt>\r
+<dd>\r
+<p>\r
+        A <a href="#ref_commit_object">commit object</a> contains a (possibly empty) list\r
+        of the logical predecessor(s) in the line of development, i.e. its\r
+        parents.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_plumbing"></a>plumbing\r
+</dt>\r
+<dd>\r
+<p>\r
+        Cute name for <a href="#ref_core_git">core git</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_porcelain"></a>porcelain\r
+</dt>\r
+<dd>\r
+<p>\r
+        Cute name for programs and program suites depending on\r
+        <a href="#ref_core_git">core git</a>, presenting a high level access to\r
+        <a href="#ref_core_git">core git</a>. Porcelains expose more of a <a href="#ref_SCM">SCM</a>\r
+        interface than the <a href="#ref_plumbing">plumbing</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_pull"></a>pull\r
+</dt>\r
+<dd>\r
+<p>\r
+        Pulling a <a href="#ref_branch">branch</a> means to <a href="#ref_fetch">fetch</a> it and\r
+        <a href="#ref_merge">merge</a> it.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_push"></a>push\r
+</dt>\r
+<dd>\r
+<p>\r
+        Pushing a <a href="#ref_branch">branch</a> means to get the <a href="#ref_branch">branch</a>'s\r
+        <a href="#ref_head_ref">head ref</a> from a remote <a href="#ref_repository">repository</a>,\r
+        find out if it is an ancestor to the <a href="#ref_branch">branch</a>'s local\r
+        <a href="#ref_head_ref">head ref</a> is a direct, and in that case, putting all\r
+        objects, which are <a href="#ref_reachable">reachable</a> from the local\r
+        <a href="#ref_head_ref">head ref</a>, and which are missing from the remote\r
+        <a href="#ref_repository">repository</a>, into the remote\r
+        <a href="#ref_object_database">object database</a>, and updating the remote\r
+        <a href="#ref_head_ref">head ref</a>. If the remote <a href="#ref_head">head</a> is not an\r
+        ancestor to the local <a href="#ref_head">head</a>, the <a href="#ref_push">push</a> fails.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_reachable"></a>reachable\r
+</dt>\r
+<dd>\r
+<p>\r
+        An <a href="#ref_object">object</a> is <a href="#ref_reachable">reachable</a> from a\r
+        <a href="#ref_ref">ref</a>/<a href="#ref_commit">commit</a>/<a href="#ref_tree">tree</a>/<a href="#ref_tag">tag</a>,\r
+        if there is a <a href="#ref_chain">chain</a> leading from the latter to the former.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_rebase"></a>rebase\r
+</dt>\r
+<dd>\r
+<p>\r
+        To <a href="#ref_clean">clean</a> a <a href="#ref_branch">branch</a> by starting from the\r
+        <a href="#ref_head">head</a> of the main line of development ("master"), and\r
+        reapply the (possibly cherry-picked) changes from that\r
+        <a href="#ref_branch">branch</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_ref"></a>ref\r
+</dt>\r
+<dd>\r
+<p>\r
+        A 40-byte hex representation of a <a href="#ref_SHA1">SHA1</a> pointing to a\r
+        particular <a href="#ref_object">object</a>. These may be stored in\r
+        <tt>$GIT_DIR/refs/</tt>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_repository"></a>repository\r
+</dt>\r
+<dd>\r
+<p>\r
+        A collection of refs together with an <a href="#ref_object_database">object         database</a> containing all objects, which are <a href="#ref_reachable">reachable</a>\r
+        from the refs, possibly accompanied by meta data from one or more\r
+        porcelains. A <a href="#ref_repository">repository</a> can share an\r
+        <a href="#ref_object_database">object database</a> with other repositories.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_resolve"></a>resolve\r
+</dt>\r
+<dd>\r
+<p>\r
+        The action of fixing up manually what a failed automatic\r
+        <a href="#ref_merge">merge</a> left behind.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_revision"></a>revision\r
+</dt>\r
+<dd>\r
+<p>\r
+        A particular state of files and directories which was stored in the\r
+        <a href="#ref_object_database">object database</a>. It is referenced by a\r
+        <a href="#ref_commit_object">commit object</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_rewind"></a>rewind\r
+</dt>\r
+<dd>\r
+<p>\r
+        To throw away part of the development, i.e. to assign the\r
+        <a href="#ref_head">head</a> to an earlier <a href="#ref_revision">revision</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_SCM"></a>SCM\r
+</dt>\r
+<dd>\r
+<p>\r
+        Source code management (tool).\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_SHA1"></a>SHA1\r
+</dt>\r
+<dd>\r
+<p>\r
+        Synonym for <a href="#ref_object_name">object name</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_tag"></a>tag\r
+</dt>\r
+<dd>\r
+<p>\r
+        A <a href="#ref_ref">ref</a> pointing to a <a href="#ref_tag">tag</a> or\r
+        <a href="#ref_commit_object">commit object</a>. In contrast to a <a href="#ref_head">head</a>,\r
+        a <a href="#ref_tag">tag</a> is not changed by a <a href="#ref_commit">commit</a>. Tags (not\r
+        <a href="#ref_tag">tag</a> objects) are stored in <tt>$GIT_DIR/refs/tags/</tt>. A git\r
+        <a href="#ref_tag">tag</a> has nothing to do with a Lisp <a href="#ref_tag">tag</a> (which is\r
+        called <a href="#ref_object">object</a> type in git's context). A <a href="#ref_tag">tag</a>\r
+        is most typically used to mark a particular point in the\r
+        <a href="#ref_commit">commit</a> ancestry <a href="#ref_chain">chain</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_tag_object"></a>tag object\r
+</dt>\r
+<dd>\r
+<p>\r
+        An <a href="#ref_object">object</a> containing a <a href="#ref_ref">ref</a> pointing to\r
+        another <a href="#ref_object">object</a>, which can contain a message just like a\r
+        <a href="#ref_commit_object">commit object</a>. It can also contain a (PGP)\r
+        signature, in which case it is called a "signed <a href="#ref_tag_object">tag         object</a>".\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_tree"></a>tree\r
+</dt>\r
+<dd>\r
+<p>\r
+        Either a <a href="#ref_working_tree">working tree</a>, or a <a href="#ref_tree_object">tree         object</a> together with the dependent blob and <a href="#ref_tree">tree</a> objects\r
+        (i.e. a stored representation of a <a href="#ref_working_tree">working tree</a>).\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_tree_object"></a>tree object\r
+</dt>\r
+<dd>\r
+<p>\r
+        An <a href="#ref_object">object</a> containing a list of file names and modes along\r
+        with refs to the associated blob and/or <a href="#ref_tree">tree</a> objects. A\r
+        <a href="#ref_tree">tree</a> is equivalent to a <a href="#ref_directory">directory</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_tree-ish"></a>tree-ish\r
+</dt>\r
+<dd>\r
+<p>\r
+        A <a href="#ref_ref">ref</a> pointing to either a <a href="#ref_commit_object">commit         object</a>, a <a href="#ref_tree_object">tree object</a>, or a <a href="#ref_tag_object">tag         object</a> pointing to a <a href="#ref_tag">tag</a> or <a href="#ref_commit">commit</a> or\r
+        <a href="#ref_tree_object">tree object</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+<a id="ref_working_tree"></a>working tree\r
+</dt>\r
+<dd>\r
+<p>\r
+        The set of files and directories currently being worked on, i.e. you can\r
+        work in your <a href="#ref_working_tree">working tree</a> without using git at all.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Johannes Schindelin &lt;Johannes.Schindelin@gmx.de&gt; and\r
+the git-list &lt;git@vger.kernel.org&gt;.</p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:17:11 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/glossary.txt b/glossary.txt
new file mode 100644 (file)
index 0000000..520f4c5
--- /dev/null
@@ -0,0 +1,242 @@
+object::
+       The unit of storage in git. It is uniquely identified by
+       the SHA1 of its contents. Consequently, an object can not
+       be changed.
+
+object name::
+       The unique identifier of an object. The hash of the object's contents
+       using the Secure Hash Algorithm 1 and usually represented by the 40
+       character hexadecimal encoding of the hash of the object (possibly
+       followed by a white space).
+
+SHA1::
+       Synonym for object name.
+
+object identifier::
+       Synonym for object name.
+
+hash::
+       In git's context, synonym to object name.
+
+object database::
+       Stores a set of "objects", and an individial object is identified
+       by its object name. The objects usually live in `$GIT_DIR/objects/`.
+
+blob object::
+       Untyped object, e.g. the contents of a file.
+
+tree object::
+       An object containing a list of file names and modes along with refs
+       to the associated blob and/or tree objects. A tree is equivalent
+       to a directory.
+
+tree::
+       Either a working tree, or a tree object together with the
+       dependent blob and tree objects (i.e. a stored representation
+       of a working tree).
+
+DAG::
+       Directed acyclic graph. The commit objects form a directed acyclic
+       graph, because they have parents (directed), and the graph of commit
+       objects is acyclic (there is no chain which begins and ends with the
+       same object).
+
+index::
+       A collection of files with stat information, whose contents are
+       stored as objects. The index is a stored version of your working
+       tree. Truth be told, it can also contain a second, and even a third
+       version of a working tree, which are used when merging.
+
+index entry::
+       The information regarding a particular file, stored in the index.
+       An index entry can be unmerged, if a merge was started, but not
+       yet finished (i.e. if the index contains multiple versions of
+       that file).
+
+unmerged index:
+       An index which contains unmerged index entries.
+
+cache::
+       Obsolete for: index.
+
+working tree::
+       The set of files and directories currently being worked on,
+       i.e. you can work in your working tree without using git at all.
+
+directory::
+       The list you get with "ls" :-)
+
+revision::
+       A particular state of files and directories which was stored in
+       the object database. It is referenced by a commit object.
+
+checkout::
+       The action of updating the working tree to a revision which was
+       stored in the object database.
+
+commit::
+       As a verb: The action of storing the current state of the index in the
+       object database. The result is a revision.
+       As a noun: Short hand for commit object.
+
+commit object::
+       An object which contains the information about a particular
+       revision, such as parents, committer, author, date and the
+       tree object which corresponds to the top directory of the
+       stored revision.
+
+parent::
+       A commit object contains a (possibly empty) list of the logical
+       predecessor(s) in the line of development, i.e. its parents.
+
+changeset::
+       BitKeeper/cvsps speak for "commit". Since git does not store
+       changes, but states, it really does not make sense to use
+       the term "changesets" with git.
+
+clean::
+       A working tree is clean, if it corresponds to the revision
+       referenced by the current head.
+
+dirty::
+       A working tree is said to be dirty if it contains modifications
+       which have not been committed to the current branch.
+
+head::
+       The top of a branch. It contains a ref to the corresponding
+       commit object.
+
+branch::
+       A non-cyclical graph of revisions, i.e. the complete history of
+       a particular revision, which is called the branch head. The
+       branch heads are stored in `$GIT_DIR/refs/heads/`.
+
+ref::
+       A 40-byte hex representation of a SHA1 pointing to a particular
+       object. These may be stored in `$GIT_DIR/refs/`.
+
+head ref::
+       A ref pointing to a head. Often, this is abbreviated to "head".
+       Head refs are stored in `$GIT_DIR/refs/heads/`.
+
+tree-ish::
+       A ref pointing to either a commit object, a tree object, or a
+       tag object pointing to a tag or commit or tree object.
+
+ent::
+       Favorite synonym to "tree-ish" by some total geeks. See
+       `http://en.wikipedia.org/wiki/Ent_(Middle-earth)` for an in-depth
+       explanation.
+
+tag object::
+       An object containing a ref pointing to another object, which can
+       contain a message just like a commit object. It can also
+       contain a (PGP) signature, in which case it is called a "signed
+       tag object".
+
+tag::
+       A ref pointing to a tag or commit object. In contrast to a head,
+       a tag is not changed by a commit. Tags (not tag objects) are
+       stored in `$GIT_DIR/refs/tags/`. A git tag has nothing to do with
+       a Lisp tag (which is called object type in git's context).
+       A tag is most typically used to mark a particular point in the
+       commit ancestry chain.
+
+merge::
+       To merge branches means to try to accumulate the changes since a
+       common ancestor and apply them to the first branch. An automatic
+       merge uses heuristics to accomplish that. Evidently, an automatic
+       merge can fail.
+
+octopus::
+       To merge more than two branches. Also denotes an intelligent
+       predator.
+
+resolve::
+       The action of fixing up manually what a failed automatic merge
+       left behind.
+
+rewind::
+       To throw away part of the development, i.e. to assign the head to
+       an earlier revision.
+
+rebase::
+       To clean a branch by starting from the head of the main line of
+       development ("master"), and reapply the (possibly cherry-picked)
+       changes from that branch.
+
+repository::
+       A collection of refs together with an object database containing
+       all objects, which are reachable from the refs, possibly accompanied
+       by meta data from one or more porcelains. A repository can
+       share an object database with other repositories.
+
+git archive::
+       Synonym for repository (for arch people).
+
+file system::
+       Linus Torvalds originally designed git to be a user space file
+       system, i.e. the infrastructure to hold files and directories.
+       That ensured the efficiency and speed of git.
+
+alternate object database::
+       Via the alternates mechanism, a repository can inherit part of its
+       object database from another object database, which is called
+       "alternate".
+
+reachable::
+       An object is reachable from a ref/commit/tree/tag, if there is a
+       chain leading from the latter to the former.
+
+chain::
+       A list of objects, where each object in the list contains a
+       reference to its successor (for example, the successor of a commit
+       could be one of its parents).
+
+fetch::
+       Fetching a branch means to get the branch's head ref from a
+       remote repository, to find out which objects are missing from
+       the local object database, and to get them, too.
+
+pull::
+       Pulling a branch means to fetch it and merge it.
+
+push::
+       Pushing a branch means to get the branch's head ref from a remote
+       repository, find out if it is an ancestor to the branch's local
+       head ref is a direct, and in that case, putting all objects, which
+       are reachable from the local head ref, and which are missing from
+       the remote repository, into the remote object database, and updating
+       the remote head ref. If the remote head is not an ancestor to the
+       local head, the push fails.
+
+pack::
+       A set of objects which have been compressed into one file (to save
+       space or to transmit them efficiently).
+
+pack index::
+       The list of identifiers, and other information, of the objects in a
+       pack, to assist in efficiently accessing the contents of a pack. 
+
+core git::
+       Fundamental data structures and utilities of git. Exposes only
+       limited source code management tools.
+
+plumbing::
+       Cute name for core git.
+
+porcelain::
+       Cute name for programs and program suites depending on core git,
+       presenting a high level access to core git. Porcelains expose
+       more of a SCM interface than the plumbing.
+
+object type:
+       One of the identifiers "commit","tree","tag" and "blob" describing
+       the type of an object.
+
+SCM::
+       Source code management (tool).
+
+dircache::
+       You are *waaaaay* behind.
+
diff --git a/hooks.html b/hooks.html
new file mode 100644 (file)
index 0000000..fb64b28
--- /dev/null
@@ -0,0 +1,382 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>Hooks used by git</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>Hooks used by git</h1>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<p>Hooks are little scripts you can place in <tt>$GIT_DIR/hooks</tt>\r
+directory to trigger action at certain points.  When\r
+<tt>git-init-db</tt> is run, a handful example hooks are copied in the\r
+<tt>hooks</tt> directory of the new repository, but by default they are\r
+all disabled.  To enable a hook, make it executable with `chmod</p>\r
+<p>+x`.</p>\r
+<p>This document describes the currently defined hooks.</p>\r
+</div>\r
+</div>\r
+<h2>applypatch-msg</h2>\r
+<div class="sectionbody">\r
+<p>This hook is invoked by <tt>git-applypatch</tt> script, which is\r
+typically invoked by <tt>git-applymbox</tt>.  It takes a single\r
+parameter, the name of the file that holds the proposed commit\r
+log message.  Exiting with non-zero status causes the\r
+<em>git-applypatch</em> to abort before applying the patch.</p>\r
+<p>The hook is allowed to edit the message file in place, and can\r
+be used to normalize the message into some project standard\r
+format (if the project has one). It can also be used to refuse\r
+the commit after inspecting the message file.</p>\r
+<p>The default applypatch-msg hook, when enabled, runs the\r
+commit-msg hook, if the latter is enabled.</p>\r
+</div>\r
+<h2>pre-applypatch</h2>\r
+<div class="sectionbody">\r
+<p>This hook is invoked by <tt>git-applypatch</tt> script, which is\r
+typically invoked by <tt>git-applymbox</tt>.  It takes no parameter,\r
+and is invoked after the patch is applied, but before a commit\r
+is made.  Exiting with non-zero status causes the working tree\r
+after application of the patch not committed.</p>\r
+<p>It can be used to inspect the current working tree and refuse to\r
+make a commit if it does not pass certain test.</p>\r
+<p>The default pre-applypatch hook, when enabled, runs the\r
+pre-commit hook, if the latter is enabled.</p>\r
+</div>\r
+<h2>post-applypatch</h2>\r
+<div class="sectionbody">\r
+<p>This hook is invoked by <tt>git-applypatch</tt> script, which is\r
+typically invoked by <tt>git-applymbox</tt>.  It takes no parameter,\r
+and is invoked after the patch is applied and a commit is made.</p>\r
+<p>This hook is meant primarily for notification, and cannot affect\r
+the outcome of <tt>git-applypatch</tt>.</p>\r
+</div>\r
+<h2>pre-commit</h2>\r
+<div class="sectionbody">\r
+<p>This hook is invoked by <tt>git-commit</tt>, and can be bypassed\r
+with <tt>--no-verify</tt> option.  It takes no parameter, and is\r
+invoked before obtaining the proposed commit log message and\r
+making a commit.  Exiting with non-zero status from this script\r
+causes the <tt>git-commit</tt> to abort.</p>\r
+<p>The default pre-commit hook, when enabled, catches introduction\r
+of lines with trailing whitespaces and aborts the commit when\r
+a such line is found.</p>\r
+</div>\r
+<h2>commit-msg</h2>\r
+<div class="sectionbody">\r
+<p>This hook is invoked by <tt>git-commit</tt>, and can be bypassed\r
+with <tt>--no-verify</tt> option.  It takes a single parameter, the\r
+name of the file that holds the proposed commit log message.\r
+Exiting with non-zero status causes the <tt>git-commit</tt> to\r
+abort.</p>\r
+<p>The hook is allowed to edit the message file in place, and can\r
+be used to normalize the message into some project standard\r
+format (if the project has one). It can also be used to refuse\r
+the commit after inspecting the message file.</p>\r
+<p>The default commit-msg hook, when enabled, detects duplicate\r
+Signed-off-by: lines, and aborts the commit when one is found.</p>\r
+</div>\r
+<h2>post-commit</h2>\r
+<div class="sectionbody">\r
+<p>This hook is invoked by <tt>git-commit</tt>.  It takes no\r
+parameter, and is invoked after a commit is made.</p>\r
+<p>This hook is meant primarily for notification, and cannot affect\r
+the outcome of <tt>git-commit</tt>.</p>\r
+<p>The default post-commit hook, when enabled, demonstrates how to\r
+send out a commit notification e-mail.</p>\r
+</div>\r
+<h2>update</h2>\r
+<div class="sectionbody">\r
+<p>This hook is invoked by <tt>git-receive-pack</tt>, which is invoked\r
+when a <tt>git push</tt> is done against the repository.  It takes\r
+three parameters, name of the ref being updated, old object name\r
+stored in the ref, and the new objectname to be stored in the\r
+ref.  Exiting with non-zero status from this hook prevents\r
+<tt>git-receive-pack</tt> from updating the ref.</p>\r
+<p>This can be used to prevent <em>forced</em> update on certain refs by\r
+making sure that the object name is a commit object that is a\r
+descendant of the commit object named by the old object name.\r
+Another use suggested on the mailing list is to use this hook to\r
+implement access control which is finer grained than the one\r
+based on filesystem group.</p>\r
+<p>The standard output of this hook is sent to /dev/null; if you\r
+want to report something to the git-send-pack on the other end,\r
+you can redirect your output to your stderr.</p>\r
+</div>\r
+<h2>post-update</h2>\r
+<div class="sectionbody">\r
+<p>This hook is invoked by <tt>git-receive-pack</tt>, which is invoked\r
+when a <tt>git push</tt> is done against the repository.  It takes\r
+variable number of parameters; each of which is the name of ref\r
+that was actually updated.</p>\r
+<p>This hook is meant primarily for notification, and cannot affect\r
+the outcome of <tt>git-receive-pack</tt>.</p>\r
+<p>The default post-update hook, when enabled, runs\r
+<tt>git-update-server-info</tt> to keep the information used by dumb\r
+transport up-to-date.</p>\r
+<p>The standard output of this hook is sent to /dev/null; if you\r
+want to report something to the git-send-pack on the other end,\r
+you can redirect your output to your stderr.</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:17:09 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/hooks.txt b/hooks.txt
new file mode 100644 (file)
index 0000000..4ad1920
--- /dev/null
+++ b/hooks.txt
@@ -0,0 +1,135 @@
+Hooks used by git
+=================
+
+Hooks are little scripts you can place in `$GIT_DIR/hooks`
+directory to trigger action at certain points.  When
+`git-init-db` is run, a handful example hooks are copied in the
+`hooks` directory of the new repository, but by default they are
+all disabled.  To enable a hook, make it executable with `chmod
++x`.
+
+This document describes the currently defined hooks.
+
+applypatch-msg
+--------------
+
+This hook is invoked by `git-applypatch` script, which is
+typically invoked by `git-applymbox`.  It takes a single
+parameter, the name of the file that holds the proposed commit
+log message.  Exiting with non-zero status causes the
+'git-applypatch' to abort before applying the patch.
+
+The hook is allowed to edit the message file in place, and can
+be used to normalize the message into some project standard
+format (if the project has one). It can also be used to refuse
+the commit after inspecting the message file.
+
+The default applypatch-msg hook, when enabled, runs the
+commit-msg hook, if the latter is enabled.
+
+pre-applypatch
+--------------
+
+This hook is invoked by `git-applypatch` script, which is
+typically invoked by `git-applymbox`.  It takes no parameter,
+and is invoked after the patch is applied, but before a commit
+is made.  Exiting with non-zero status causes the working tree
+after application of the patch not committed.
+
+It can be used to inspect the current working tree and refuse to
+make a commit if it does not pass certain test.
+
+The default pre-applypatch hook, when enabled, runs the
+pre-commit hook, if the latter is enabled.
+
+post-applypatch
+---------------
+
+This hook is invoked by `git-applypatch` script, which is
+typically invoked by `git-applymbox`.  It takes no parameter,
+and is invoked after the patch is applied and a commit is made.
+
+This hook is meant primarily for notification, and cannot affect
+the outcome of `git-applypatch`.
+
+pre-commit
+----------
+
+This hook is invoked by `git-commit`, and can be bypassed
+with `\--no-verify` option.  It takes no parameter, and is
+invoked before obtaining the proposed commit log message and
+making a commit.  Exiting with non-zero status from this script
+causes the `git-commit` to abort.
+
+The default pre-commit hook, when enabled, catches introduction
+of lines with trailing whitespaces and aborts the commit when
+a such line is found.
+
+commit-msg
+----------
+
+This hook is invoked by `git-commit`, and can be bypassed
+with `\--no-verify` option.  It takes a single parameter, the
+name of the file that holds the proposed commit log message.
+Exiting with non-zero status causes the `git-commit` to
+abort.
+
+The hook is allowed to edit the message file in place, and can
+be used to normalize the message into some project standard
+format (if the project has one). It can also be used to refuse
+the commit after inspecting the message file.
+
+The default commit-msg hook, when enabled, detects duplicate
+Signed-off-by: lines, and aborts the commit when one is found.
+
+post-commit
+-----------
+
+This hook is invoked by `git-commit`.  It takes no
+parameter, and is invoked after a commit is made.
+
+This hook is meant primarily for notification, and cannot affect
+the outcome of `git-commit`.
+
+The default post-commit hook, when enabled, demonstrates how to
+send out a commit notification e-mail.
+
+update
+------
+
+This hook is invoked by `git-receive-pack`, which is invoked
+when a `git push` is done against the repository.  It takes
+three parameters, name of the ref being updated, old object name
+stored in the ref, and the new objectname to be stored in the
+ref.  Exiting with non-zero status from this hook prevents
+`git-receive-pack` from updating the ref.
+
+This can be used to prevent 'forced' update on certain refs by
+making sure that the object name is a commit object that is a
+descendant of the commit object named by the old object name.
+Another use suggested on the mailing list is to use this hook to
+implement access control which is finer grained than the one
+based on filesystem group.
+
+The standard output of this hook is sent to /dev/null; if you
+want to report something to the git-send-pack on the other end,
+you can redirect your output to your stderr.
+
+post-update
+-----------
+
+This hook is invoked by `git-receive-pack`, which is invoked
+when a `git push` is done against the repository.  It takes
+variable number of parameters; each of which is the name of ref
+that was actually updated.
+
+This hook is meant primarily for notification, and cannot affect
+the outcome of `git-receive-pack`.
+
+The default post-update hook, when enabled, runs
+`git-update-server-info` to keep the information used by dumb
+transport up-to-date.
+
+The standard output of this hook is sent to /dev/null; if you
+want to report something to the git-send-pack on the other end,
+you can redirect your output to your stderr.
diff --git a/howto-index.html b/howto-index.html
new file mode 100644 (file)
index 0000000..af59654
--- /dev/null
@@ -0,0 +1,359 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>GIT Howto Index</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>GIT Howto Index</h1>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<p>Here is a collection of mailing list postings made by various\r
+people describing how they use git in their workflow.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+<a href="howto/isolate-bugs-with-bisect.txt">isolate-bugs-with-bisect</a> by Linus Torvalds &lt;torvalds () osdl ! org&gt;\r
+</p>\r
+</li>\r
+</ul>\r
+<p>Short-n-sweet, Linus tells us how to leverage <tt>git-bisect</tt> to perform\r
+bug isolation on a repository where "good" and "bad" revisions are known\r
+in order to identify a suspect commit.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+<a href="howto/make-dist.txt">make-dist</a> by Linus Torvalds &lt;torvalds@osdl.org&gt;\r
+</p>\r
+</li>\r
+</ul>\r
+<p>In this article, Linus talks about building a tarball,\r
+incremental patch, and ChangeLog, given a base release and two\r
+rc releases, following the convention of giving the patch from\r
+the base release and the latest rc, with ChangeLog between the\r
+last rc and the latest rc.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+<a href="howto/rebase-and-edit.txt">rebase-and-edit</a> by Linus Torvalds &lt;torvalds@osdl.org&gt;\r
+</p>\r
+</li>\r
+</ul>\r
+<p>In this article, Linus demonstrates how a broken commit\r
+in a sequence of commits can be removed by rewinding the head and\r
+reapplying selected changes.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+<a href="howto/rebase-from-internal-branch.txt">rebase-from-internal-branch</a> by Junio C Hamano &lt;junkio@cox.net&gt;\r
+</p>\r
+</li>\r
+</ul>\r
+<p>In this article, JC talks about how he rebases the\r
+public "pu" branch using the core GIT tools when he updates\r
+the "master" branch, and how "rebase" works.  Also discussed\r
+is how this applies to individual developers who sends patches\r
+upstream.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+<a href="howto/rebuild-from-update-hook.txt">rebuild-from-update-hook</a> by Junio C Hamano &lt;junkio@cox.net&gt;\r
+</p>\r
+</li>\r
+</ul>\r
+<p>In this how-to article, JC talks about how he\r
+uses the post-update hook to automate git documentation page\r
+shown at http://www.kernel.org/pub/software/scm/git/docs/.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+<a href="howto/revert-branch-rebase.html">revert-branch-rebase</a> by Junio C Hamano &lt;junkio@cox.net&gt;\r
+</p>\r
+</li>\r
+</ul>\r
+<p>In this article, JC gives a small real-life example of using\r
+<em>git revert</em> command, and using a temporary branch and tag for safety\r
+and easier sanity checking.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+<a href="howto/update-hook-example.txt">update-hook-example</a> by Junio C Hamano &lt;junkio@cox.net&gt; and Carl Baldwin &lt;cnb@fc.hp.com&gt;\r
+</p>\r
+</li>\r
+</ul>\r
+<p>An example hooks/update script is presented to\r
+implement repository maintenance policies, such as who can push\r
+into which branch and who can make a tag.</p>\r
+<ul>\r
+<li>\r
+<p>\r
+<a href="howto/using-topic-branches.txt">using-topic-branches</a> by tony.luck@intel.com\r
+</p>\r
+</li>\r
+</ul>\r
+<p>In this article, Tony Luck discusses how he uses GIT\r
+as a Linux subsystem maintainer.</p>\r
+</div>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:17:08 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/howto-index.txt b/howto-index.txt
new file mode 100644 (file)
index 0000000..7487e4f
--- /dev/null
@@ -0,0 +1,65 @@
+GIT Howto Index
+===============
+
+Here is a collection of mailing list postings made by various
+people describing how they use git in their workflow.
+
+* link:howto/isolate-bugs-with-bisect.txt[isolate-bugs-with-bisect] by Linus Torvalds <torvalds () osdl ! org>
+
+Short-n-sweet, Linus tells us how to leverage `git-bisect` to perform
+bug isolation on a repository where "good" and "bad" revisions are known
+in order to identify a suspect commit.
+
+
+* link:howto/make-dist.txt[make-dist] by Linus Torvalds <torvalds@osdl.org>
+
+In this article, Linus talks about building a tarball,
+incremental patch, and ChangeLog, given a base release and two
+rc releases, following the convention of giving the patch from
+the base release and the latest rc, with ChangeLog between the
+last rc and the latest rc.
+
+
+* link:howto/rebase-and-edit.txt[rebase-and-edit] by Linus Torvalds <torvalds@osdl.org>
+
+In this article, Linus demonstrates how a broken commit
+in a sequence of commits can be removed by rewinding the head and
+reapplying selected changes.
+
+
+* link:howto/rebase-from-internal-branch.txt[rebase-from-internal-branch] by Junio C Hamano <junkio@cox.net>
+
+In this article, JC talks about how he rebases the
+public "pu" branch using the core GIT tools when he updates
+the "master" branch, and how "rebase" works.  Also discussed
+is how this applies to individual developers who sends patches
+upstream.
+
+
+* link:howto/rebuild-from-update-hook.txt[rebuild-from-update-hook] by Junio C Hamano <junkio@cox.net>
+
+In this how-to article, JC talks about how he
+uses the post-update hook to automate git documentation page
+shown at http://www.kernel.org/pub/software/scm/git/docs/.
+
+
+* link:howto/revert-branch-rebase.html[revert-branch-rebase] by Junio C Hamano <junkio@cox.net>
+
+In this article, JC gives a small real-life example of using
+'git revert' command, and using a temporary branch and tag for safety
+and easier sanity checking.
+
+
+* link:howto/update-hook-example.txt[update-hook-example] by Junio C Hamano <junkio@cox.net> and Carl Baldwin <cnb@fc.hp.com>
+
+An example hooks/update script is presented to
+implement repository maintenance policies, such as who can push
+into which branch and who can make a tag.
+
+
+* link:howto/using-topic-branches.txt[using-topic-branches] by tony.luck@intel.com
+
+In this article, Tony Luck discusses how he uses GIT
+as a Linux subsystem maintainer.
+
+
diff --git a/howto/isolate-bugs-with-bisect.txt b/howto/isolate-bugs-with-bisect.txt
new file mode 100644 (file)
index 0000000..4009495
--- /dev/null
@@ -0,0 +1,65 @@
+From:  Linus Torvalds <torvalds () osdl ! org>
+To:    git@vger.kernel.org
+Date:  2005-11-08 1:31:34
+Subject: Real-life kernel debugging scenario
+Abstract: Short-n-sweet, Linus tells us how to leverage `git-bisect` to perform
+       bug isolation on a repository where "good" and "bad" revisions are known
+       in order to identify a suspect commit.
+
+
+How To Use git-bisect To Isolate a Bogus Commit
+===============================================
+
+The way to use "git bisect" couldn't be easier.
+
+Figure out what the oldest bad state you know about is (that's usually the 
+head of "master", since that's what you just tried to boot and failed at). 
+Also, figure out the most recent known-good commit (usually the _previous_ 
+kernel you ran: and if you've only done a single "pull" in between, it 
+will be ORIG_HEAD).
+
+Then do
+
+       git bisect start
+       git bisect bad master           <- mark "master" as the bad state
+       git bisect good ORIG_HEAD       <- mark ORIG_HEAD as good (or
+                                          whatever other known-good 
+                                          thing you booted laste)
+
+and at this point "git bisect" will churn for a while, and tell you what 
+the mid-point between those two commits are, and check that state out as 
+the head of the bew "bisect" branch.
+
+Compile and reboot.
+
+If it's good, just do
+
+       git bisect good         <- mark current head as good
+
+otherwise, reboot into a good kernel instead, and do (surprise surprise, 
+git really is very intuitive):
+
+       git bisect bad          <- mark current head as bad
+
+and whatever you do, git will select a new half-way point. Do this for a 
+while, until git tells you exactly which commit was the first bad commit. 
+That's your culprit.
+
+It really works wonderfully well, except for the case where there was 
+_another_ commit that broke something in between, like introduced some 
+stupid compile error. In that case you should not mark that commit good or 
+bad: you should try to find another commit close-by, and do a "git reset 
+--hard <newcommit>" to try out _that_ commit instead, and then test that 
+instead (and mark it good or bad).
+
+You can do "git bisect visualize" while you do all this to see what's 
+going on by starting up gitk on the bisection range.
+
+Finally, once you've figured out exactly which commit was bad, you can 
+then go back to the master branch, and try reverting just that commit:
+
+       git checkout master
+       git revert <bad-commit-id>
+
+to verify that the top-of-kernel works with that single commit reverted.
+
diff --git a/howto/make-dist.txt b/howto/make-dist.txt
new file mode 100644 (file)
index 0000000..00e330b
--- /dev/null
@@ -0,0 +1,52 @@
+Date:   Fri, 12 Aug 2005 22:39:48 -0700 (PDT)
+From: Linus Torvalds <torvalds@osdl.org>
+To: Dave Jones <davej@redhat.com>
+cc: git@vger.kernel.org
+Subject: Re: Fwd: Re: git checkout -f branch doesn't remove extra files
+Abstract: In this article, Linus talks about building a tarball,
+ incremental patch, and ChangeLog, given a base release and two
+ rc releases, following the convention of giving the patch from
+ the base release and the latest rc, with ChangeLog between the
+ last rc and the latest rc.
+
+On Sat, 13 Aug 2005, Dave Jones wrote:
+>
+>  > Git actually has a _lot_ of nifty tools. I didn't realize that people
+>  > didn't know about such basic stuff as "git-tar-tree" and "git-ls-files".
+>
+> Maybe its because things are moving so fast :)  Or maybe I just wasn't
+> paying attention on that day. (I even read the git changes via RSS,
+> so I should have no excuse).
+
+Well, git-tar-tree has been there since late April - it's actually one of
+those really early commands. I'm pretty sure the RSS feed came later ;)
+
+I use it all the time in doing releases, it's a lot faster than creating a
+tar tree by reading the filesystem (even if you don't have to check things
+out). A hidden pearl.
+
+This is my crappy "release-script":
+
+        [torvalds@g5 ~]$ cat bin/release-script
+        #!/bin/sh
+        stable="$1"
+        last="$2"
+        new="$3"
+        echo "# git-tag v$new"
+        echo "git-tar-tree v$new linux-$new | gzip -9 > ../linux-$new.tar.gz"
+        echo "git-diff-tree -p v$stable v$new | gzip -9 > ../patch-$new.gz"
+        echo "git-rev-list --pretty v$new ^v$last > ../ChangeLog-$new"
+        echo "git-rev-list --pretty=short v$new ^v$last | git-shortlog > ../ShortLog"
+        echo "git-diff-tree -p v$last v$new | git-apply --stat > ../diffstat-$new"
+
+and when I want to do a new kernel release I literally first tag it, and
+then do
+
+        release-script 2.6.12 2.6.13-rc6 2.6.13-rc7
+
+and check that things look sane, and then just cut-and-paste the commands.
+
+Yeah, it's stupid.
+
+                Linus
+
diff --git a/howto/rebase-and-edit.txt b/howto/rebase-and-edit.txt
new file mode 100644 (file)
index 0000000..646c55c
--- /dev/null
@@ -0,0 +1,81 @@
+Date:  Sat, 13 Aug 2005 22:16:02 -0700 (PDT)
+From:  Linus Torvalds <torvalds@osdl.org>
+To:    Steve French <smfrench@austin.rr.com>
+cc:    git@vger.kernel.org
+Subject: Re: sending changesets from the middle of a git tree
+Abstract: In this article, Linus demonstrates how a broken commit
+ in a sequence of commits can be removed by rewinding the head and
+ reapplying selected changes.
+
+On Sat, 13 Aug 2005, Linus Torvalds wrote:
+
+> That's correct. Same things apply: you can move a patch over, and create a 
+> new one with a modified comment, but basically the _old_ commit will be 
+> immutable.
+
+Let me clarify.
+
+You can entirely _drop_ old branches, so commits may be immutable, but
+nothing forces you to keep them. Of course, when you drop a commit, you'll 
+always end up dropping all the commits that depended on it, and if you 
+actually got somebody else to pull that commit you can't drop it from 
+_their_ repository, but undoing things is not impossible.
+
+For example, let's say that you've made a mess of things: you've committed
+three commits "old->a->b->c", and you notice that "a" was broken, but you
+want to save "b" and "c". What you can do is
+
+       # Create a branch "broken" that is the current code
+       # for reference
+       git branch broken
+
+       # Reset the main branch to three parents back: this 
+       # effectively undoes the three top commits
+       git reset HEAD^^^
+       git checkout -f
+
+       # Check the result visually to make sure you know what's
+       # going on
+       gitk --all
+
+       # Re-apply the two top ones from "broken"
+       #
+       # First "parent of broken" (aka b):
+       git-diff-tree -p broken^ | git-apply --index
+       git commit --reedit=broken^
+
+       # Then "top of broken" (aka c):
+       git-diff-tree -p broken | git-apply --index
+       git commit --reedit=broken
+
+and you've now re-applied (and possibly edited the comments) the two
+commits b/c, and commit "a" is basically gone (it still exists in the
+"broken" branch, of course).
+
+Finally, check out the end result again:
+
+       # Look at the new commit history
+       gitk --all
+
+to see that everything looks sensible.
+
+And then, you can just remove the broken branch if you decide you really 
+don't want it:
+
+       # remove 'broken' branch
+       git branch -d broken
+
+       # Prune old objects if you're really really sure
+       git prune
+
+And yeah, I'm sure there are other ways of doing this. And as usual, the 
+above is totally untested, and I just wrote it down in this email, so if 
+I've done something wrong, you'll have to figure it out on your own ;)
+
+                       Linus
+-
+To unsubscribe from this list: send the line "unsubscribe git" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+
+
diff --git a/howto/rebase-from-internal-branch.txt b/howto/rebase-from-internal-branch.txt
new file mode 100644 (file)
index 0000000..c2d4a91
--- /dev/null
@@ -0,0 +1,165 @@
+From:  Junio C Hamano <junkio@cox.net>
+To:    git@vger.kernel.org
+Cc:    Petr Baudis <pasky@suse.cz>, Linus Torvalds <torvalds@osdl.org>
+Subject: Re: sending changesets from the middle of a git tree
+Date:  Sun, 14 Aug 2005 18:37:39 -0700
+Abstract: In this article, JC talks about how he rebases the
+ public "pu" branch using the core GIT tools when he updates
+ the "master" branch, and how "rebase" works.  Also discussed
+ is how this applies to individual developers who sends patches
+ upstream.
+
+Petr Baudis <pasky@suse.cz> writes:
+
+> Dear diary, on Sun, Aug 14, 2005 at 09:57:13AM CEST, I got a letter
+> where Junio C Hamano <junkio@cox.net> told me that...
+>> Linus Torvalds <torvalds@osdl.org> writes:
+>> 
+>> > Junio, maybe you want to talk about how you move patches from your "pu" 
+>> > branch to the real branches.
+>> 
+> Actually, wouldn't this be also precisely for what StGIT is intended to?
+
+Exactly my feeling.  I was sort of waiting for Catalin to speak
+up.  With its basing philosophical ancestry on quilt, this is
+the kind of task StGIT is designed to do.
+
+I just have done a simpler one, this time using only the core
+GIT tools.
+
+I had a handful commits that were ahead of master in pu, and I
+wanted to add some documentation bypassing my usual habit of
+placing new things in pu first.  At the beginning, the commit
+ancestry graph looked like this:
+
+                             *"pu" head
+    master --> #1 --> #2 --> #3
+
+So I started from master, made a bunch of edits, and committed:
+
+    $ git checkout master
+    $ cd Documentation; ed git.txt ...
+    $ cd ..; git add Documentation/*.txt
+    $ git commit -s
+
+After the commit, the ancestry graph would look like this:
+
+                              *"pu" head
+    master^ --> #1 --> #2 --> #3
+          \
+            \---> master
+
+The old master is now master^ (the first parent of the master).
+The new master commit holds my documentation updates.
+
+Now I have to deal with "pu" branch.
+
+This is the kind of situation I used to have all the time when
+Linus was the maintainer and I was a contributor, when you look
+at "master" branch being the "maintainer" branch, and "pu"
+branch being the "contributor" branch.  Your work started at the
+tip of the "maintainer" branch some time ago, you made a lot of
+progress in the meantime, and now the maintainer branch has some
+other commits you do not have yet.  And "git rebase" was written
+with the explicit purpose of helping to maintain branches like
+"pu".  You _could_ merge master to pu and keep going, but if you
+eventually want to cherrypick and merge some but not necessarily
+all changes back to the master branch, it often makes later
+operations for _you_ easier if you rebase (i.e. carry forward
+your changes) "pu" rather than merge.  So I ran "git rebase":
+
+    $ git checkout pu
+    $ git rebase master pu
+
+What this does is to pick all the commits since the current
+branch (note that I now am on "pu" branch) forked from the
+master branch, and forward port these changes.
+
+    master^ --> #1 --> #2 --> #3
+          \                                  *"pu" head
+            \---> master --> #1' --> #2' --> #3'
+
+The diff between master^ and #1 is applied to master and
+committed to create #1' commit with the commit information (log,
+author and date) taken from commit #1.  On top of that #2' and #3'
+commits are made similarly out of #2 and #3 commits.
+
+Old #3 is not recorded in any of the .git/refs/heads/ file
+anymore, so after doing this you will have dangling commit if
+you ran fsck-cache, which is normal.  After testing "pu", you
+can run "git prune" to get rid of those original three commits.
+
+While I am talking about "git rebase", I should talk about how
+to do cherrypicking using only the core GIT tools.
+
+Let's go back to the earlier picture, with different labels.
+
+You, as an individual developer, cloned upstream repository and
+made a couple of commits on top of it.
+
+                              *your "master" head
+   upstream --> #1 --> #2 --> #3
+
+You would want changes #2 and #3 incorporated in the upstream,
+while you feel that #1 may need further improvements.  So you
+prepare #2 and #3 for e-mail submission.
+
+    $ git format-patch master^^ master
+
+This creates two files, 0001-XXXX.txt and 0002-XXXX.txt.  Send
+them out "To: " your project maintainer and "Cc: " your mailing
+list.  You could use contributed script git-send-email if
+your host has necessary perl modules for this, but your usual
+MUA would do as long as it does not corrupt whitespaces in the
+patch.
+
+Then you would wait, and you find out that the upstream picked
+up your changes, along with other changes.
+
+   where                      *your "master" head
+  upstream --> #1 --> #2 --> #3
+    used   \ 
+   to be     \--> #A --> #2' --> #3' --> #B --> #C
+                                                *upstream head
+
+The two commits #2' and #3' in the above picture record the same
+changes your e-mail submission for #2 and #3 contained, but
+probably with the new sign-off line added by the upsteam
+maintainer and definitely with different committer and ancestry
+information, they are different objects from #2 and #3 commits.
+
+You fetch from upstream, but not merge.
+
+    $ git fetch upstream
+
+This leaves the updated upstream head in .git/FETCH_HEAD but
+does not touch your .git/HEAD nor .git/refs/heads/master.  
+You run "git rebase" now.
+
+    $ git rebase FETCH_HEAD master
+
+Earlier, I said that rebase applies all the commits from your
+branch on top of the upstream head.  Well, I lied.  "git rebase"
+is a bit smarter than that and notices that #2 and #3 need not
+be applied, so it only applies #1.  The commit ancestry graph
+becomes something like this:
+
+   where                     *your old "master" head
+  upstream --> #1 --> #2 --> #3
+    used   \                      your new "master" head*
+   to be     \--> #A --> #2' --> #3' --> #B --> #C --> #1'
+                                                *upstream
+                                                head
+
+Again, "git prune" would discard the disused commits #1-#3 and
+you continue on starting from the new "master" head, which is
+the #1' commit.
+
+-jc
+
+-
+To unsubscribe from this list: send the line "unsubscribe git" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+
+
diff --git a/howto/rebuild-from-update-hook.txt b/howto/rebuild-from-update-hook.txt
new file mode 100644 (file)
index 0000000..02621b5
--- /dev/null
@@ -0,0 +1,87 @@
+Subject: [HOWTO] Using post-update hook
+Message-ID: <7vy86o6usx.fsf@assigned-by-dhcp.cox.net>
+From: Junio C Hamano <junkio@cox.net>
+Date: Fri, 26 Aug 2005 18:19:10 -0700
+Abstract: In this how-to article, JC talks about how he
+ uses the post-update hook to automate git documentation page
+ shown at http://www.kernel.org/pub/software/scm/git/docs/.
+
+The pages under http://www.kernel.org/pub/software/scm/git/docs/
+are built from Documentation/ directory of the git.git project
+and needed to be kept up-to-date.  The www.kernel.org/ servers
+are mirrored and I was told that the origin of the mirror is on
+the machine $some.kernel.org, on which I was given an account
+when I took over git maintainership from Linus.
+
+The directories relevant to this how-to are these two:
+
+    /pub/scm/git/git.git/      The public git repository.
+    /pub/software/scm/git/docs/        The HTML documentation page.
+
+So I made a repository to generate the documentation under my
+home directory over there.
+
+    $ cd
+    $ mkdir doc-git && cd doc-git
+    $ git clone /pub/scm/git/git.git/ docgen
+
+What needs to happen is to update the $HOME/doc-git/docgen/
+working tree, build HTML docs there and install the result in
+/pub/software/scm/git/docs/ directory.  So I wrote a little
+script:
+
+    $ cat >dododoc.sh <<\EOF
+    #!/bin/sh
+    cd $HOME/doc-git/docgen || exit
+
+    unset GIT_DIR
+
+    git pull /pub/scm/git/git.git/ master &&
+    cd Documentation &&
+    make install-webdoc
+    EOF
+
+Initially I used to run this by hand whenever I push into the
+public git repository.  Then I did a cron job that ran twice a
+day.  The current round uses the post-update hook mechanism,
+like this:
+
+    $ cat >/pub/scm/git/git.git/hooks/post-update <<\EOF
+    #!/bin/sh
+    #
+    # An example hook script to prepare a packed repository for use over
+    # dumb transports.
+    #
+    # To enable this hook, make this file executable by "chmod +x post-update".
+
+    case " $* " in
+    *' refs/heads/master '*)
+            echo $HOME/doc-git/dododoc.sh | at now
+            ;;
+    esac
+    exec git-update-server-info
+    EOF
+    $ chmod +x /pub/scm/git/git.git/hooks/post-update
+
+There are four things worth mentioning:
+
+ - The update-hook is run after the repository accepts a "git
+   push", under my user privilege.  It is given the full names
+   of refs that have been updated as arguments.  My post-update
+   runs the dododoc.sh script only when the master head is
+   updated.
+
+ - When update-hook is run, GIT_DIR is set to '.' by the calling
+   receive-pack.  This is inherited by the dododoc.sh run via
+   the "at" command, and needs to be unset; otherwise, "git
+   pull" it does into $HOME/doc-git/docgen/ repository would not
+   work correctly.
+
+ - The stdout of update hook script is not connected to git
+   push; I run the heavy part of the command inside "at", to
+   receive the execution report via e-mail.
+
+ - This is still crude and does not protect against simultaneous
+   make invocations stomping on each other.  I would need to add
+   some locking mechanism for this.
+
diff --git a/howto/revert-branch-rebase.html b/howto/revert-branch-rebase.html
new file mode 100644 (file)
index 0000000..229728c
--- /dev/null
@@ -0,0 +1,447 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>Reverting an existing commit</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>Reverting an existing commit</h1>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<p>One of the changes I pulled into the <em>master</em> branch turns out to\r
+break building GIT with GCC 2.95.  While they were well intentioned\r
+portability fixes, keeping things working with gcc-2.95 was also\r
+important.  Here is what I did to revert the change in the <em>master</em>\r
+branch and to adjust the <em>pu</em> branch, using core GIT tools and\r
+barebone Porcelain.</p>\r
+<p>First, prepare a throw-away branch in case I screw things up.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout -b revert-c99 master</tt></pre>\r
+</div></div>\r
+<p>Now I am on the <em>revert-c99</em> branch.  Let's figure out which commit to\r
+revert.  I happen to know that the top of the <em>master</em> branch is a\r
+merge, and its second parent (i.e. foreign commit I merged from) has\r
+the change I would want to undo.  Further I happen to know that that\r
+merge introduced 5 commits or so:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git show-branch --more=4 master master^2 | head\r
+! [master] Merge refs/heads/portable from http://www.cs.berkeley....\r
+ ! [master^2] Replace C99 array initializers with code.\r
+--\r
++  [master] Merge refs/heads/portable from http://www.cs.berkeley....\r
+++ [master^2] Replace C99 array initializers with code.\r
+++ [master^2~1] Replace unsetenv() and setenv() with older putenv().\r
+++ [master^2~2] Include sys/time.h in daemon.c.\r
+++ [master^2~3] Fix ?: statements.\r
+++ [master^2~4] Replace zero-length array decls with [].\r
++  [master~1] tutorial note about git branch</tt></pre>\r
+</div></div>\r
+<p>The <em>&#8212;more=4</em> above means "after we reach the merge base of refs,\r
+show until we display four more common commits".  That last commit\r
+would have been where the "portable" branch was forked from the main\r
+git.git repository, so this would show everything on both branches\r
+since then.  I just limited the output to the first handful using\r
+<em>head</em>.</p>\r
+<p>Now I know <em>master^2~4</em> (pronounce it as "find the second parent of\r
+the <em>master</em>, and then go four generations back following the first\r
+parent") is the one I would want to revert.  Since I also want to say\r
+why I am reverting it, the <em>-n</em> flag is given to <em>git revert</em>.  This\r
+prevents it from actually making a commit, and instead <em>git revert</em>\r
+leaves the commit log message it wanted to use in <em>.msg</em> file:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git revert -n master^2~4\r
+$ cat .msg\r
+Revert "Replace zero-length array decls with []."\r
+\r
+This reverts 6c5f9baa3bc0d63e141e0afc23110205379905a4 commit.\r
+$ git diff HEAD ;# to make sure what we are reverting makes sense.\r
+$ make CC=gcc-2.95 clean test ;# make sure it fixed the breakage.\r
+$ make clean test ;# make sure it did not cause other breakage.</tt></pre>\r
+</div></div>\r
+<p>The reverted change makes sense (from reading the <em>diff</em> output), does\r
+fix the problem (from <em>make CC=gcc-2.95</em> test), and does not cause new\r
+breakage (from the last <em>make test</em>).  I'm ready to commit:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git commit -a -s ;# read .msg into the log,\r
+                    # and explain why I am reverting.</tt></pre>\r
+</div></div>\r
+<p>I could have screwed up in any of the above steps, but in the worst\r
+case I could just have done <em>git checkout master</em> to start over.\r
+Fortunately I did not have to; what I have in the current branch\r
+<em>revert-c99</em> is what I want.  So merge that back into <em>master</em>:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout master\r
+$ git resolve master revert-c99 fast ;# this should be a fast forward\r
+Updating from 10d781b9caa4f71495c7b34963bef137216f86a8 to e3a693c...\r
+ cache.h        |    8 ++++----\r
+ commit.c       |    2 +-\r
+ ls-files.c     |    2 +-\r
+ receive-pack.c |    2 +-\r
+ server-info.c  |    2 +-\r
+ 5 files changed, 8 insertions(+), 8 deletions(-)</tt></pre>\r
+</div></div>\r
+<p>The <em>fast</em> in the above <em>git resolve</em> is not a magic.  I knew this\r
+<em>resolve</em> would result in a fast forward merge, and if not, there is\r
+something very wrong (so I would do <em>git reset</em> on the <em>master</em> branch\r
+and examine the situation).  When a fast forward merge is done, the\r
+message parameter to <em>git resolve</em> is discarded, because no new commit\r
+is created.  You could have said <em>junk</em> or <em>nothing</em> there as well.</p>\r
+<p>There is no need to redo the test at this point.  We fast forwarded\r
+and we know <em>master</em> matches <em>revert-c99</em> exactly.  In fact:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git diff master..revert-c99</tt></pre>\r
+</div></div>\r
+<p>says nothing.</p>\r
+<p>Then we rebase the <em>pu</em> branch as usual.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout pu\r
+$ git tag pu-anchor pu\r
+$ git rebase master\r
+* Applying: Redo "revert" using three-way merge machinery.\r
+First trying simple merge strategy to cherry-pick.\r
+Finished one cherry-pick.\r
+* Applying: Remove git-apply-patch-script.\r
+First trying simple merge strategy to cherry-pick.\r
+Simple cherry-pick fails; trying Automatic cherry-pick.\r
+Removing Documentation/git-apply-patch-script.txt\r
+Removing git-apply-patch-script\r
+Finished one cherry-pick.\r
+* Applying: Document "git cherry-pick" and "git revert"\r
+First trying simple merge strategy to cherry-pick.\r
+Finished one cherry-pick.\r
+* Applying: mailinfo and applymbox updates\r
+First trying simple merge strategy to cherry-pick.\r
+Finished one cherry-pick.\r
+* Applying: Show commits in topo order and name all commits.\r
+First trying simple merge strategy to cherry-pick.\r
+Finished one cherry-pick.\r
+* Applying: More documentation updates.\r
+First trying simple merge strategy to cherry-pick.\r
+Finished one cherry-pick.</tt></pre>\r
+</div></div>\r
+<p>The temporary tag <em>pu-anchor</em> is me just being careful, in case <em>git\r
+rebase</em> screws up.  After this, I can do these for sanity check:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git diff pu-anchor..pu ;# make sure we got the master fix.\r
+$ make CC=gcc-2.95 clean test ;# make sure it fixed the breakage.\r
+$ make clean test ;# make sure it did not cause other breakage.</tt></pre>\r
+</div></div>\r
+<p>Everything is in the good order.  I do not need the temporary branch\r
+nor tag anymore, so remove them:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ rm -f .git/refs/tags/pu-anchor\r
+$ git branch -d revert-c99</tt></pre>\r
+</div></div>\r
+<p>It was an emergency fix, so we might as well merge it into the\r
+<em>release candidate</em> branch, although I expect the next release would\r
+be some days off:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout rc\r
+$ git pull . master\r
+Packing 0 objects\r
+Unpacking 0 objects\r
+\r
+* committish: e3a693c...        refs/heads/master from .\r
+Trying to merge e3a693c... into 8c1f5f0... using 10d781b...\r
+Committed merge 7fb9b7262a1d1e0a47bbfdcbbcf50ce0635d3f8f\r
+ cache.h        |    8 ++++----\r
+ commit.c       |    2 +-\r
+ ls-files.c     |    2 +-\r
+ receive-pack.c |    2 +-\r
+ server-info.c  |    2 +-\r
+ 5 files changed, 8 insertions(+), 8 deletions(-)</tt></pre>\r
+</div></div>\r
+<p>And the final repository status looks like this:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git show-branch --more=1 master pu rc\r
+! [master] Revert "Replace zero-length array decls with []."\r
+ ! [pu] git-repack: Add option to repack all objects.\r
+  * [rc] Merge refs/heads/master from .\r
+---\r
+ +  [pu] git-repack: Add option to repack all objects.\r
+ +  [pu~1] More documentation updates.\r
+ +  [pu~2] Show commits in topo order and name all commits.\r
+ +  [pu~3] mailinfo and applymbox updates\r
+ +  [pu~4] Document "git cherry-pick" and "git revert"\r
+ +  [pu~5] Remove git-apply-patch-script.\r
+ +  [pu~6] Redo "revert" using three-way merge machinery.\r
+  + [rc] Merge refs/heads/master from .\r
++++ [master] Revert "Replace zero-length array decls with []."\r
+  + [rc~1] Merge refs/heads/master from .\r
++++ [master~1] Merge refs/heads/portable from http://www.cs.berkeley....</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:17:13 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/howto/revert-branch-rebase.txt b/howto/revert-branch-rebase.txt
new file mode 100644 (file)
index 0000000..5a7e0cf
--- /dev/null
@@ -0,0 +1,200 @@
+From: Junio C Hamano <junkio@cox.net>
+To: git@vger.kernel.org
+Subject: [HOWTO] Reverting an existing commit
+Abstract: In this article, JC gives a small real-life example of using
+ 'git revert' command, and using a temporary branch and tag for safety
+ and easier sanity checking.
+Date: Mon, 29 Aug 2005 21:39:02 -0700
+Content-type: text/asciidoc
+Message-ID: <7voe7g3uop.fsf@assigned-by-dhcp.cox.net>
+
+Reverting an existing commit
+============================
+
+One of the changes I pulled into the 'master' branch turns out to
+break building GIT with GCC 2.95.  While they were well intentioned
+portability fixes, keeping things working with gcc-2.95 was also
+important.  Here is what I did to revert the change in the 'master'
+branch and to adjust the 'pu' branch, using core GIT tools and
+barebone Porcelain.
+
+First, prepare a throw-away branch in case I screw things up.
+
+------------------------------------------------
+$ git checkout -b revert-c99 master
+------------------------------------------------
+
+Now I am on the 'revert-c99' branch.  Let's figure out which commit to
+revert.  I happen to know that the top of the 'master' branch is a
+merge, and its second parent (i.e. foreign commit I merged from) has
+the change I would want to undo.  Further I happen to know that that
+merge introduced 5 commits or so:
+
+------------------------------------------------
+$ git show-branch --more=4 master master^2 | head
+! [master] Merge refs/heads/portable from http://www.cs.berkeley....
+ ! [master^2] Replace C99 array initializers with code.
+--
++  [master] Merge refs/heads/portable from http://www.cs.berkeley....
+++ [master^2] Replace C99 array initializers with code.
+++ [master^2~1] Replace unsetenv() and setenv() with older putenv().
+++ [master^2~2] Include sys/time.h in daemon.c.
+++ [master^2~3] Fix ?: statements.
+++ [master^2~4] Replace zero-length array decls with [].
++  [master~1] tutorial note about git branch
+------------------------------------------------
+
+The '--more=4' above means "after we reach the merge base of refs,
+show until we display four more common commits".  That last commit
+would have been where the "portable" branch was forked from the main
+git.git repository, so this would show everything on both branches
+since then.  I just limited the output to the first handful using
+'head'.
+
+Now I know 'master^2~4' (pronounce it as "find the second parent of
+the 'master', and then go four generations back following the first
+parent") is the one I would want to revert.  Since I also want to say
+why I am reverting it, the '-n' flag is given to 'git revert'.  This
+prevents it from actually making a commit, and instead 'git revert'
+leaves the commit log message it wanted to use in '.msg' file:
+
+------------------------------------------------
+$ git revert -n master^2~4
+$ cat .msg
+Revert "Replace zero-length array decls with []."
+
+This reverts 6c5f9baa3bc0d63e141e0afc23110205379905a4 commit.
+$ git diff HEAD ;# to make sure what we are reverting makes sense.
+$ make CC=gcc-2.95 clean test ;# make sure it fixed the breakage.
+$ make clean test ;# make sure it did not cause other breakage.
+------------------------------------------------
+
+The reverted change makes sense (from reading the 'diff' output), does
+fix the problem (from 'make CC=gcc-2.95' test), and does not cause new
+breakage (from the last 'make test').  I'm ready to commit:
+
+------------------------------------------------
+$ git commit -a -s ;# read .msg into the log,
+                    # and explain why I am reverting.
+------------------------------------------------
+
+I could have screwed up in any of the above steps, but in the worst
+case I could just have done 'git checkout master' to start over.
+Fortunately I did not have to; what I have in the current branch
+'revert-c99' is what I want.  So merge that back into 'master':
+
+------------------------------------------------
+$ git checkout master
+$ git resolve master revert-c99 fast ;# this should be a fast forward
+Updating from 10d781b9caa4f71495c7b34963bef137216f86a8 to e3a693c...
+ cache.h        |    8 ++++----
+ commit.c       |    2 +-
+ ls-files.c     |    2 +-
+ receive-pack.c |    2 +-
+ server-info.c  |    2 +-
+ 5 files changed, 8 insertions(+), 8 deletions(-)
+------------------------------------------------
+
+The 'fast' in the above 'git resolve' is not a magic.  I knew this
+'resolve' would result in a fast forward merge, and if not, there is
+something very wrong (so I would do 'git reset' on the 'master' branch
+and examine the situation).  When a fast forward merge is done, the
+message parameter to 'git resolve' is discarded, because no new commit
+is created.  You could have said 'junk' or 'nothing' there as well.
+
+There is no need to redo the test at this point.  We fast forwarded
+and we know 'master' matches 'revert-c99' exactly.  In fact:
+
+------------------------------------------------
+$ git diff master..revert-c99
+------------------------------------------------
+
+says nothing.
+
+Then we rebase the 'pu' branch as usual.
+
+------------------------------------------------
+$ git checkout pu
+$ git tag pu-anchor pu
+$ git rebase master
+* Applying: Redo "revert" using three-way merge machinery.
+First trying simple merge strategy to cherry-pick.
+Finished one cherry-pick.
+* Applying: Remove git-apply-patch-script.
+First trying simple merge strategy to cherry-pick.
+Simple cherry-pick fails; trying Automatic cherry-pick.
+Removing Documentation/git-apply-patch-script.txt
+Removing git-apply-patch-script
+Finished one cherry-pick.
+* Applying: Document "git cherry-pick" and "git revert"
+First trying simple merge strategy to cherry-pick.
+Finished one cherry-pick.
+* Applying: mailinfo and applymbox updates
+First trying simple merge strategy to cherry-pick.
+Finished one cherry-pick.
+* Applying: Show commits in topo order and name all commits.
+First trying simple merge strategy to cherry-pick.
+Finished one cherry-pick.
+* Applying: More documentation updates.
+First trying simple merge strategy to cherry-pick.
+Finished one cherry-pick.
+------------------------------------------------
+
+The temporary tag 'pu-anchor' is me just being careful, in case 'git
+rebase' screws up.  After this, I can do these for sanity check:
+
+------------------------------------------------
+$ git diff pu-anchor..pu ;# make sure we got the master fix.
+$ make CC=gcc-2.95 clean test ;# make sure it fixed the breakage.
+$ make clean test ;# make sure it did not cause other breakage.
+------------------------------------------------
+
+Everything is in the good order.  I do not need the temporary branch
+nor tag anymore, so remove them:
+
+------------------------------------------------
+$ rm -f .git/refs/tags/pu-anchor 
+$ git branch -d revert-c99
+------------------------------------------------
+
+It was an emergency fix, so we might as well merge it into the
+'release candidate' branch, although I expect the next release would
+be some days off:
+
+------------------------------------------------
+$ git checkout rc
+$ git pull . master
+Packing 0 objects
+Unpacking 0 objects
+
+* committish: e3a693c...       refs/heads/master from .
+Trying to merge e3a693c... into 8c1f5f0... using 10d781b...
+Committed merge 7fb9b7262a1d1e0a47bbfdcbbcf50ce0635d3f8f
+ cache.h        |    8 ++++----
+ commit.c       |    2 +-
+ ls-files.c     |    2 +-
+ receive-pack.c |    2 +-
+ server-info.c  |    2 +-
+ 5 files changed, 8 insertions(+), 8 deletions(-)
+------------------------------------------------
+
+And the final repository status looks like this:
+
+------------------------------------------------
+$ git show-branch --more=1 master pu rc
+! [master] Revert "Replace zero-length array decls with []."
+ ! [pu] git-repack: Add option to repack all objects.
+  * [rc] Merge refs/heads/master from .
+---
+ +  [pu] git-repack: Add option to repack all objects.
+ +  [pu~1] More documentation updates.
+ +  [pu~2] Show commits in topo order and name all commits.
+ +  [pu~3] mailinfo and applymbox updates
+ +  [pu~4] Document "git cherry-pick" and "git revert"
+ +  [pu~5] Remove git-apply-patch-script.
+ +  [pu~6] Redo "revert" using three-way merge machinery.
+  + [rc] Merge refs/heads/master from .
++++ [master] Revert "Replace zero-length array decls with []."
+  + [rc~1] Merge refs/heads/master from .
++++ [master~1] Merge refs/heads/portable from http://www.cs.berkeley....
+------------------------------------------------
diff --git a/howto/update-hook-example.txt b/howto/update-hook-example.txt
new file mode 100644 (file)
index 0000000..3a33696
--- /dev/null
@@ -0,0 +1,172 @@
+From: Junio C Hamano <junkio@cox.net> and Carl Baldwin <cnb@fc.hp.com>
+Subject: control access to branches.
+Date: Thu, 17 Nov 2005 23:55:32 -0800
+Message-ID: <7vfypumlu3.fsf@assigned-by-dhcp.cox.net>
+Abstract: An example hooks/update script is presented to
+ implement repository maintenance policies, such as who can push
+ into which branch and who can make a tag.
+
+When your developer runs git-push into the repository,
+git-receive-pack is run (either locally or over ssh) as that
+developer, so is hooks/update script.  Quoting from the relevant
+section of the documentation:
+
+    Before each ref is updated, if $GIT_DIR/hooks/update file exists
+    and executable, it is called with three parameters:
+
+           $GIT_DIR/hooks/update refname sha1-old sha1-new
+
+    The refname parameter is relative to $GIT_DIR; e.g. for the
+    master head this is "refs/heads/master".  Two sha1 are the
+    object names for the refname before and after the update.  Note
+    that the hook is called before the refname is updated, so either
+    sha1-old is 0{40} (meaning there is no such ref yet), or it
+    should match what is recorded in refname.
+
+So if your policy is (1) always require fast-forward push
+(i.e. never allow "git-push repo +branch:branch"), (2) you
+have a list of users allowed to update each branch, and (3) you
+do not let tags to be overwritten, then you can use something
+like this as your hooks/update script.
+
+[jc: editorial note.  This is a much improved version by Carl
+since I posted the original outline]
+
+-- >8 -- beginning of script -- >8 --
+
+#!/bin/bash
+
+umask 002
+
+# If you are having trouble with this access control hook script
+# you can try setting this to true.  It will tell you exactly
+# why a user is being allowed/denied access.
+
+verbose=false
+
+# Default shell globbing messes things up downstream
+GLOBIGNORE=*
+
+function grant {
+  $verbose && echo >&2 "-Grant-                $1"
+  echo grant
+  exit 0
+}
+
+function deny {
+  $verbose && echo >&2 "-Deny-         $1"
+  echo deny
+  exit 1
+}
+
+function info {
+  $verbose && echo >&2 "-Info-         $1"
+}
+
+# Implement generic branch and tag policies.
+# - Tags should not be updated once created.
+# - Branches should only be fast-forwarded.
+case "$1" in
+  refs/tags/*)
+    [ -f "$GIT_DIR/$1" ] &&
+    deny >/dev/null "You can't overwrite an existing tag"
+    ;;
+  refs/heads/*)
+    # No rebasing or rewinding
+    if expr "$2" : '0*$' >/dev/null; then
+      info "The branch '$1' is new..."
+    else
+      # updating -- make sure it is a fast forward
+      mb=$(git-merge-base "$2" "$3")
+      case "$mb,$2" in
+        "$2,$mb") info "Update is fast-forward" ;;
+        *)        deny >/dev/null  "This is not a fast-forward update." ;;
+      esac
+    fi
+    ;;
+  *)
+    deny >/dev/null \
+    "Branch is not under refs/heads or refs/tags.  What are you trying to do?"
+    ;;
+esac
+
+# Implement per-branch controls based on username
+allowed_users_file=$GIT_DIR/info/allowed-users
+username=$(id -u -n)
+info "The user is: '$username'"
+
+if [ -f "$allowed_users_file" ]; then
+  rc=$(cat $allowed_users_file | grep -v '^#' | grep -v '^$' |
+    while read head_pattern user_patterns; do
+      matchlen=$(expr "$1" : "$head_pattern")
+      if [ "$matchlen" == "${#1}" ]; then
+        info "Found matching head pattern: '$head_pattern'"
+        for user_pattern in $user_patterns; do
+          info "Checking user: '$username' against pattern: '$user_pattern'"
+          matchlen=$(expr "$username" : "$user_pattern")
+          if [ "$matchlen" == "${#username}" ]; then
+            grant "Allowing user: '$username' with pattern: '$user_pattern'"
+          fi
+        done
+        deny "The user is not in the access list for this branch"
+      fi
+    done
+  )
+  case "$rc" in
+    grant) grant >/dev/null "Granting access based on $allowed_users_file" ;;
+    deny)  deny  >/dev/null "Denying  access based on $allowed_users_file" ;;
+    *) ;;
+  esac
+fi
+
+allowed_groups_file=$GIT_DIR/info/allowed-groups
+groups=$(id -G -n)
+info "The user belongs to the following groups:"
+info "'$groups'"
+
+if [ -f "$allowed_groups_file" ]; then
+  rc=$(cat $allowed_groups_file | grep -v '^#' | grep -v '^$' |
+    while read head_pattern group_patterns; do
+      matchlen=$(expr "$1" : "$head_pattern")
+      if [ "$matchlen" == "${#1}" ]; then
+        info "Found matching head pattern: '$head_pattern'"
+        for group_pattern in $group_patterns; do
+          for groupname in $groups; do
+            info "Checking group: '$groupname' against pattern: '$group_pattern'"
+            matchlen=$(expr "$groupname" : "$group_pattern")
+            if [ "$matchlen" == "${#groupname}" ]; then
+              grant "Allowing group: '$groupname' with pattern: '$group_pattern'"
+            fi
+          done
+        done
+        deny "None of the user's groups are in the access list for this branch"
+      fi
+    done
+  )
+  case "$rc" in
+    grant) grant >/dev/null "Granting access based on $allowed_groups_file" ;;
+    deny)  deny  >/dev/null "Denying  access based on $allowed_groups_file" ;;
+    *) ;;
+  esac
+fi
+
+deny >/dev/null "There are no more rules to check.  Denying access"
+
+-- >8 -- end of script -- >8 --
+
+This uses two files, $GIT_DIR/info/allowed-users and
+allowed-groups, to describe which heads can be pushed into by
+whom.  The format of each file would look like this:
+
+       refs/heads/master       junio
+        refs/heads/cogito$     pasky
+       refs/heads/bw/          linus
+        refs/heads/tmp/                *
+        refs/tags/v[0-9]*      junio
+
+With this, Linus can push or create "bw/penguin" or "bw/zebra"
+or "bw/panda" branches, Pasky can do only "cogito", and JC can
+do master branch and make versioned tags.  And anybody can do
+tmp/blah branches.
+
+------------
diff --git a/howto/using-topic-branches.txt b/howto/using-topic-branches.txt
new file mode 100644 (file)
index 0000000..b3d592f
--- /dev/null
@@ -0,0 +1,288 @@
+Date: Mon, 15 Aug 2005 12:17:41 -0700
+From: tony.luck@intel.com
+Subject: Some tutorial text (was git/cogito workshop/bof at linuxconf au?)
+Abstract: In this article, Tony Luck discusses how he uses GIT
+ as a Linux subsystem maintainer.
+
+Here's something that I've been putting together on how I'm using
+GIT as a Linux subsystem maintainer.
+
+-Tony
+
+Last updated w.r.t. GIT 0.99.9f
+
+Linux subsystem maintenance using GIT
+-------------------------------------
+
+My requirements here are to be able to create two public trees:
+
+1) A "test" tree into which patches are initially placed so that they
+can get some exposure when integrated with other ongoing development.
+This tree is available to Andrew for pulling into -mm whenever he wants.
+
+2) A "release" tree into which tested patches are moved for final
+sanity checking, and as a vehicle to send them upstream to Linus
+(by sending him a "please pull" request.)
+
+Note that the period of time that each patch spends in the "test" tree
+is dependent on the complexity of the change.  Since GIT does not support
+cherry picking, it is not practical to simply apply all patches to the
+test tree and then pull to the release tree as that would leave trivial
+patches blocked in the test tree waiting for complex changes to accumulate
+enough test time to graduate.
+
+Back in the BitKeeper days I achieved this by creating small forests of
+temporary trees, one tree for each logical grouping of patches, and then
+pulling changes from these trees first to the test tree, and then to the
+release tree.  At first I replicated this in GIT, but then I realised
+that I could so this far more efficiently using branches inside a single
+GIT repository.
+
+So here is the step-by-step guide how this all works for me.
+
+First create your work tree by cloning Linus's public tree:
+
+ $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git work
+
+Change directory into the cloned tree you just created
+
+ $ cd work
+
+Set up a remotes file so that you can fetch the latest from Linus' master
+branch into a local branch named "linus":
+
+ $ cat > .git/remotes/linus
+ URL: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
+ Pull: master:linus
+ ^D
+
+and create the linus branch:
+
+ $ git branch linus
+
+The "linus" branch will be used to track the upstream kernel.  To update it,
+you simply run:
+
+ $ git fetch linus
+
+you can do this frequently (and it should be safe to do so with pending
+work in your tree, but perhaps not if you are in mid-merge).
+
+If you need to keep track of other public trees, you can add remote branches
+for them too:
+
+ $ git branch another
+ $ cat > .git/remotes/another
+ URL: ... insert URL here ...
+ Pull: name-of-branch-in-this-remote-tree:another
+ ^D
+
+and run:
+
+ $ git fetch another
+
+Now create the branches in which you are going to work, these start
+out at the current tip of the linus branch.
+
+ $ git branch test linus
+ $ git branch release linus
+
+These can be easily kept up to date by merging from the "linus" branch:
+
+ $ git checkout test && git merge "Auto-update from upstream" test linus
+ $ git checkout release && git merge "Auto-update from upstream" release linus
+
+Set up so that you can push upstream to your public tree (you need to
+log-in to the remote system and create an empty tree there before the
+first push).
+
+ $ cat > .git/remotes/mytree
+ URL: master.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git
+ Push: release
+ Push: test
+ ^D
+
+and the push both the test and release trees using:
+
+ $ git push mytree
+
+or push just one of the test and release branches using:
+
+ $ git push mytree test
+or
+ $ git push mytree release
+
+Now to apply some patches from the community.  Think of a short
+snappy name for a branch to hold this patch (or related group of
+patches), and create a new branch from the current tip of the
+linus branch:
+
+ $ git checkout -b speed-up-spinlocks linus
+
+Now you apply the patch(es), run some tests, and commit the change(s).  If
+the patch is a multi-part series, then you should apply each as a separate
+commit to this branch.
+
+ $ ... patch ... test  ... commit [ ... patch ... test ... commit ]*
+
+When you are happy with the state of this change, you can pull it into the
+"test" branch in preparation to make it public:
+
+ $ git checkout test && git merge "Pull speed-up-spinlock changes" test speed-up-spinlocks
+
+It is unlikely that you would have any conflicts here ... but you might if you
+spent a while on this step and had also pulled new versions from upstream.
+
+Some time later when enough time has passed and testing done, you can pull the
+same branch into the "release" tree ready to go upstream.  This is where you
+see the value of keeping each patch (or patch series) in its own branch.  It
+means that the patches can be moved into the "release" tree in any order.
+
+ $ git checkout release && git merge "Pull speed-up-spinlock changes" release speed-up-spinlocks
+
+After a while, you will have a number of branches, and despite the
+well chosen names you picked for each of them, you may forget what
+they are for, or what status they are in.  To get a reminder of what
+changes are in a specific branch, use:
+
+ $ git-whatchanged branchname ^linus | git-shortlog
+
+To see whether it has already been merged into the test or release branches
+use:
+
+ $ git-rev-list branchname ^test
+or
+ $ git-rev-list branchname ^release
+
+[If this branch has not yet been merged you will see a set of SHA1 values
+for the commits, if it has been merged, then there will be no output]
+
+Once a patch completes the great cycle (moving from test to release, then
+pulled by Linus, and finally coming back into your local "linus" branch)
+the branch for this change is no longer needed.  You detect this when the
+output from:
+
+ $ git-rev-list branchname ^linus
+
+is empty.  At this point the branch can be deleted:
+
+ $ git branch -d branchname
+
+Some changes are so trivial that it is not necessary to create a separate
+branch and then merge into each of the test and release branches.  For
+these changes, just apply directly to the "release" branch, and then
+merge that into the "test" branch.
+
+To create diffstat and shortlog summaries of changes to include in a "please
+pull" request to Linus you can use:
+
+ $ git-whatchanged -p release ^linus | diffstat -p1
+and
+ $ git-whatchanged release ^linus | git-shortlog
+
+
+Here are some of the scripts that I use to simplify all this even further.
+
+==== update script ====
+# Update a branch in my GIT tree.  If the branch to be updated
+# is "linus", then pull from kernel.org.  Otherwise merge local
+# linus branch into test|release branch
+
+case "$1" in
+test|release)
+       git checkout $1 && git merge "Auto-update from upstream" $1 linus
+       ;;
+linus)
+       before=$(cat .git/refs/heads/linus)
+       git fetch linus
+       after=$(cat .git/refs/heads/linus)
+       if [ $before != $after ]
+       then
+               git-whatchanged $after ^$before | git-shortlog
+       fi
+       ;;
+*)
+       echo "Usage: $0 linus|test|release" 1>&2
+       exit 1
+       ;;
+esac
+
+==== merge script ====
+# Merge a branch into either the test or release branch
+
+pname=$0
+
+usage()
+{
+       echo "Usage: $pname branch test|release" 1>&2
+       exit 1
+}
+
+if [ ! -f .git/refs/heads/"$1" ]
+then
+       echo "Can't see branch <$1>" 1>&2
+       usage
+fi
+
+case "$2" in
+test|release)
+       if [ $(git-rev-list $1 ^$2 | wc -c) -eq 0 ]
+       then
+               echo $1 already merged into $2 1>&2
+               exit 1
+       fi
+       git checkout $2 && git merge "Pull $1 into $2 branch" $2 $1
+       ;;
+*)
+       usage
+       ;;
+esac
+
+==== status script ====
+# report on status of my ia64 GIT tree
+
+gb=$(tput setab 2)
+rb=$(tput setab 1)
+restore=$(tput setab 9)
+
+if [ `git-rev-list release ^test | wc -c` -gt 0 ]
+then
+       echo $rb Warning: commits in release that are not in test $restore
+       git-whatchanged release ^test
+fi
+
+for branch in `ls .git/refs/heads`
+do
+       if [ $branch = linus -o $branch = test -o $branch = release ]
+       then
+               continue
+       fi
+
+       echo -n $gb ======= $branch ====== $restore " "
+       status=
+       for ref in test release linus
+       do
+               if [ `git-rev-list $branch ^$ref | wc -c` -gt 0 ]
+               then
+                       status=$status${ref:0:1}
+               fi
+       done
+       case $status in
+       trl)
+               echo $rb Need to pull into test $restore
+               ;;
+       rl)
+               echo "In test"
+               ;;
+       l)
+               echo "Waiting for linus"
+               ;;
+       "")
+               echo $rb All done $restore
+               ;;
+       *)
+               echo $rb "<$status>" $restore
+               ;;
+       esac
+       git-whatchanged $branch ^linus | git-shortlog
+done
diff --git a/index.html b/index.html
new file mode 120000 (symlink)
index 0000000..11274e3
--- /dev/null
@@ -0,0 +1 @@
+git.html
\ No newline at end of file
diff --git a/merge-options.txt b/merge-options.txt
new file mode 100644 (file)
index 0000000..53cc355
--- /dev/null
@@ -0,0 +1,16 @@
+-n, \--no-summary::
+       Do not show diffstat at the end of the merge.
+
+--no-commit::
+       Perform the merge but pretend the merge failed and do
+       not autocommit, to give the user a chance to inspect and
+       further tweak the merge result before committing.
+
+
+-s <strategy>, \--strategy=<strategy>::
+       Use the given merge strategy; can be supplied more than
+       once to specify them in the order they should be tried.
+       If there is no `-s` option, a built-in list of strategies
+       is used instead (`git-merge-recursive` when merging a single
+       head, `git-merge-octopus` otherwise).
+
diff --git a/merge-strategies.txt b/merge-strategies.txt
new file mode 100644 (file)
index 0000000..7df0266
--- /dev/null
@@ -0,0 +1,35 @@
+MERGE STRATEGIES
+----------------
+
+resolve::
+       This can only resolve two heads (i.e. the current branch
+       and another branch you pulled from) using 3-way merge
+       algorithm.  It tries to carefully detect criss-cross
+       merge ambiguities and is considered generally safe and
+       fast.
+
+recursive::
+       This can only resolve two heads using 3-way merge
+       algorithm.  When there are more than one common
+       ancestors that can be used for 3-way merge, it creates a
+       merged tree of the common ancestors and uses that as
+       the reference tree for the 3-way merge.  This has been
+       reported to result in fewer merge conflicts without
+       causing mis-merges by tests done on actual merge commits
+       taken from Linux 2.6 kernel development history.
+       Additionally this can detect and handle merges involving
+       renames.  This is the default merge strategy when
+       pulling or merging one branch.
+
+octopus::
+       This resolves more than two-head case, but refuses to do
+       complex merge that needs manual resolution.  It is
+       primarily meant to be used for bundling topic branch
+       heads together.  This is the default merge strategy when
+       pulling or merging more than one branches.
+
+ours::
+       This resolves any number of heads, but the result of the
+       merge is always the current branch head.  It is meant to
+       be used to supersede old development history of side
+       branches.
diff --git a/pull-fetch-param.txt b/pull-fetch-param.txt
new file mode 100644 (file)
index 0000000..b5b9792
--- /dev/null
@@ -0,0 +1,144 @@
+<repository>::
+       The "remote" repository that is the source of a fetch
+       or pull operation, or the destination of a push operation.
+       One of the following notations can be used
+       to name the remote repository:
++
+===============================================================
+- rsync://host.xz/path/to/repo.git/
+- http://host.xz/path/to/repo.git/
+- https://host.xz/path/to/repo.git/
+- git://host.xz/path/to/repo.git/
+- git://host.xz/~user/path/to/repo.git/
+- ssh://host.xz/path/to/repo.git/
+- ssh://host.xz/~user/path/to/repo.git/
+- ssh://host.xz/~/path/to/repo.git
+===============================================================
++
+SSH Is the default transport protocol and also supports an
+scp-like syntax.  Both syntaxes support username expansion,
+as does the native git protocol. The following three are
+identical to the last three above, respectively:
++
+===============================================================
+- host.xz:/path/to/repo.git/
+- host.xz:~user/path/to/repo.git/
+- host.xz:path/to/repo.git
+===============================================================
++
+To sync with a local directory, use:
++
+===============================================================
+- /path/to/repo.git/
+===============================================================
++
+In addition to the above, as a short-hand, the name of a
+file in `$GIT_DIR/remotes` directory can be given; the
+named file should be in the following format:
++
+       URL: one of the above URL format
+       Push: <refspec>
+       Pull: <refspec>
++
+When such a short-hand is specified in place of
+<repository> without <refspec> parameters on the command
+line, <refspec> specified on `Push:` lines or `Pull:`
+lines are used for `git-push` and `git-fetch`/`git-pull`,
+respectively.  Multiple `Push:` and and `Pull:` lines may
+be specified for additional branch mappings.
++
+The name of a file in `$GIT_DIR/branches` directory can be
+specified as an older notation short-hand; the named
+file should contain a single line, a URL in one of the
+above formats, optionally followed by a hash `#` and the
+name of remote head (URL fragment notation).
+`$GIT_DIR/branches/<remote>` file that stores a <url>
+without the fragment is equivalent to have this in the
+corresponding file in the `$GIT_DIR/remotes/` directory.
++
+       URL: <url>
+       Pull: refs/heads/master:<remote>
++
+while having `<url>#<head>` is equivalent to
++
+       URL: <url>
+       Pull: refs/heads/<head>:<remote>
+
+<refspec>::
+       The canonical format of a <refspec> parameter is
+       `+?<src>:<dst>`; that is, an optional plus `+`, followed
+       by the source ref, followed by a colon `:`, followed by
+       the destination ref.
++
+When used in `git-push`, the <src> side can be an
+arbitrary "SHA1 expression" that can be used as an
+argument to `git-cat-file -t`.  E.g. `master~4` (push
+four parents before the current master head).
++
+For `git-push`, the local ref that matches <src> is used
+to fast forward the remote ref that matches <dst>.  If
+the optional plus `+` is used, the remote ref is updated
+even if it does not result in a fast forward update.
++
+For `git-fetch` and `git-pull`, the remote ref that matches <src>
+is fetched, and if <dst> is not empty string, the local
+ref that matches it is fast forwarded using <src>.
+Again, if the optional plus `+` is used, the local ref
+is updated even if it does not result in a fast forward
+update.
++
+[NOTE]
+If the remote branch from which you want to pull is
+modified in non-linear ways such as being rewound and
+rebased frequently, then a pull will attempt a merge with
+an older version of itself, likely conflict, and fail.
+It is under these conditions that you would want to use
+the `+` sign to indicate non-fast-forward updates will
+be needed.  There is currently no easy way to determine
+or declare that a branch will be made available in a
+repository with this behavior; the pulling user simply
+must know this is the expected usage pattern for a branch.
++
+[NOTE]
+You never do your own development on branches that appear
+on the right hand side of a <refspec> colon on `Pull:` lines;
+they are to be updated by `git-fetch`.  If you intend to do
+development derived from a remote branch `B`, have a `Pull:`
+line to track it (i.e. `Pull: B:remote-B`), and have a separate
+branch `my-B` to do your development on top of it.  The latter
+is created by `git branch my-B remote-B` (or its equivalent `git
+checkout -b my-B remote-B`).  Run `git fetch` to keep track of
+the progress of the remote side, and when you see something new
+on the remote branch, merge it into your development branch with
+`git pull . remote-B`, while you are on `my-B` branch.
+The common `Pull: master:origin` mapping of a remote `master`
+branch to a local `origin` branch, which is then merged to a
+local development branch, again typically named `master`, is made
+when you run `git clone` for you to follow this pattern.
++
+[NOTE]
+There is a difference between listing multiple <refspec>
+directly on `git-pull` command line and having multiple
+`Pull:` <refspec> lines for a <repository> and running
+`git-pull` command without any explicit <refspec> parameters.
+<refspec> listed explicitly on the command line are always
+merged into the current branch after fetching.  In other words,
+if you list more than one remote refs, you would be making
+an Octopus.  While `git-pull` run without any explicit <refspec>
+parameter takes default <refspec>s from `Pull:` lines, it
+merges only the first <refspec> found into the current branch,
+after fetching all the remote refs.  This is because making an
+Octopus from remote refs is rarely done, while keeping track
+of multiple remote heads in one-go by fetching more than one
+is often useful.
++
+Some short-cut notations are also supported.
++
+* For backward compatibility, `tag` is almost ignored;
+  it just makes the following parameter <tag> to mean a
+  refspec `refs/tags/<tag>:refs/tags/<tag>`.
+* A parameter <ref> without a colon is equivalent to
+  <ref>: when pulling/fetching, and <ref>`:`<ref> when
+  pushing.  That is, do not store it locally if
+  fetching, and update the same name if pushing.
+
diff --git a/repository-layout.html b/repository-layout.html
new file mode 100644 (file)
index 0000000..58fe69a
--- /dev/null
@@ -0,0 +1,500 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git repository layout</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>git repository layout</h1>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<p>You may find these things in your git repository (<tt>.git</tt>\r
+directory for a repository associated with your working tree, or\r
+<tt><em>project</em>.git</tt> directory for a public <em>naked</em> repository).</p>\r
+<dl>\r
+<dt>\r
+objects\r
+</dt>\r
+<dd>\r
+<p>\r
+        Object store associated with this repository.  Usually\r
+        an object store is self sufficient (i.e. all the objects\r
+        that are referred to by an object found in it are also\r
+        found in it), but there are couple of ways to violate\r
+        it.\r
+</p>\r
+<ol>\r
+<li>\r
+<p>\r
+You could populate the repository by running a commit walker\r
+without <tt>-a</tt> option.  Depending on which options are given, you\r
+could have only commit objects without associated blobs and\r
+trees this way, for example.  A repository with this kind of\r
+incomplete object store is not suitable to be published to the\r
+outside world but sometimes useful for private repository.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+You can be using <tt>objects/info/alternates</tt> mechanism, or\r
+<tt>$GIT_ALTERNATE_OBJECT_DIRECTORIES</tt> mechanism to <em>borrow</em>\r
+objects from other object stores.  A repository with this kind\r
+of incompete object store is not suitable to be published for\r
+use with dumb transports but otherwise is OK as long as\r
+<tt>objects/info/alternates</tt> points at the right object stores\r
+it borrows from.\r
+</p>\r
+</li>\r
+</ol>\r
+</dd>\r
+<dt>\r
+objects/[0-9a-f][0-9a-f]\r
+</dt>\r
+<dd>\r
+<p>\r
+        Traditionally, each object is stored in its own file.\r
+        They are split into 256 subdirectories using the first\r
+        two letters from its object name to keep the number of\r
+        directory entries <tt>objects</tt> directory itself needs to\r
+        hold.  Objects found here are often called <em>unpacked</em>\r
+        objects.\r
+</p>\r
+</dd>\r
+<dt>\r
+objects/pack\r
+</dt>\r
+<dd>\r
+<p>\r
+        Packs (files that store many object in compressed form,\r
+        along with index files to allow them to be randomly\r
+        accessed) are found in this directory.\r
+</p>\r
+</dd>\r
+<dt>\r
+objects/info\r
+</dt>\r
+<dd>\r
+<p>\r
+        Additional information about the object store is\r
+        recorded in this directory.\r
+</p>\r
+</dd>\r
+<dt>\r
+objects/info/packs\r
+</dt>\r
+<dd>\r
+<p>\r
+        This file is to help dumb transports discover what packs\r
+        are available in this object store.  Whenever a pack is\r
+        added or removed, <tt>git update-server-info</tt> should be run\r
+        to keep this file up-to-date if the repository is\r
+        published for dumb transports.  <tt>git repack</tt> does this\r
+        by default.\r
+</p>\r
+</dd>\r
+<dt>\r
+objects/info/alternates\r
+</dt>\r
+<dd>\r
+<p>\r
+        This file records absolute filesystem paths of alternate\r
+        object stores that this object store borrows objects\r
+        from, one pathname per line.\r
+</p>\r
+</dd>\r
+<dt>\r
+refs\r
+</dt>\r
+<dd>\r
+<p>\r
+        References are stored in subdirectories of this\r
+        directory.  The <tt>git prune</tt> command knows to keep\r
+        objects reachable from refs found in this directory and\r
+        its subdirectories.\r
+</p>\r
+</dd>\r
+<dt>\r
+refs/heads/<tt>name</tt>\r
+</dt>\r
+<dd>\r
+<p>\r
+        records tip-of-the-tree commit objects of branch <tt>name</tt>\r
+</p>\r
+</dd>\r
+<dt>\r
+refs/tags/<tt>name</tt>\r
+</dt>\r
+<dd>\r
+<p>\r
+        records any object name (not necessarily a commit\r
+        object, or a tag object that points at a commit object).\r
+</p>\r
+</dd>\r
+<dt>\r
+HEAD\r
+</dt>\r
+<dd>\r
+<p>\r
+        A symlink of the form <tt>refs/heads/<em>name</em></tt> to point at\r
+        the current branch, if exists.  It does not mean much if\r
+        the repository is not associated with any working tree\r
+        (i.e. <em>naked</em> repository), but a valid git repository\r
+        <strong>must</strong> have such a symlink here.  It is legal if the\r
+        named branch <em>name</em> does not (yet) exist.\r
+</p>\r
+</dd>\r
+<dt>\r
+branches\r
+</dt>\r
+<dd>\r
+<p>\r
+        A slightly deprecated way to store shorthands to be used\r
+        to specify URL to <tt>git fetch</tt>, <tt>git pull</tt> and <tt>git push</tt>\r
+        commands is to store a file in <tt>branches/<em>name</em></tt> and\r
+        give <em>name</em> to these commands in place of <em>repository</em>\r
+        argument.\r
+</p>\r
+</dd>\r
+<dt>\r
+hooks\r
+</dt>\r
+<dd>\r
+<p>\r
+        Hooks are customization scripts used by various git\r
+        commands.  A handful of sample hooks are installed when\r
+        <tt>git init-db</tt> is run, but all of them are disabled by\r
+        default.  To enable, they need to be made executable.\r
+</p>\r
+</dd>\r
+<dt>\r
+index\r
+</dt>\r
+<dd>\r
+<p>\r
+        The current index file for the repository.  It is\r
+        usually not found in a naked repository.\r
+</p>\r
+</dd>\r
+<dt>\r
+info\r
+</dt>\r
+<dd>\r
+<p>\r
+        Additional information about the repository is recorded\r
+        in this directory.\r
+</p>\r
+</dd>\r
+<dt>\r
+info/refs\r
+</dt>\r
+<dd>\r
+<p>\r
+        This file is to help dumb transports to discover what\r
+        refs are available in this repository.  Whenever you\r
+        create/delete a new branch or a new tag, <tt>git\r
+        update-server-info</tt> should be run to keep this file\r
+        up-to-date if the repository is published for dumb\r
+        transports.  The <tt>git-receive-pack</tt> command, which is\r
+        run on a remote repository when you <tt>git push</tt> into it,\r
+        runs <tt>hooks/update</tt> hook to help you achive this.\r
+</p>\r
+</dd>\r
+<dt>\r
+info/grafts\r
+</dt>\r
+<dd>\r
+<p>\r
+        This file records fake commit ancestry information, to\r
+        pretend the set of parents a commit has is different\r
+        from how the commit was actually created.  One record\r
+        per line describes a commit and its fake parents by\r
+        listing their 40-byte hexadecimal object names separated\r
+        by a space and terminated by a newline.\r
+</p>\r
+</dd>\r
+<dt>\r
+info/exclude\r
+</dt>\r
+<dd>\r
+<p>\r
+        This file, by convention among Porcelains, stores the\r
+        exclude pattern list.  <tt>git status</tt> looks at it, but\r
+        otherwise it is not looked at by any of the core git\r
+        commands.\r
+</p>\r
+</dd>\r
+<dt>\r
+remotes\r
+</dt>\r
+<dd>\r
+<p>\r
+        Stores shorthands to be used to give URL and default\r
+        refnames to interact with remote repository to <tt>git\r
+        fetch</tt>, <tt>git pull</tt> and <tt>git push</tt> commands.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:17:09 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/repository-layout.txt b/repository-layout.txt
new file mode 100644 (file)
index 0000000..1b5f228
--- /dev/null
@@ -0,0 +1,128 @@
+git repository layout
+=====================
+
+You may find these things in your git repository (`.git`
+directory for a repository associated with your working tree, or
+`'project'.git` directory for a public 'naked' repository).
+
+objects::
+       Object store associated with this repository.  Usually
+       an object store is self sufficient (i.e. all the objects
+       that are referred to by an object found in it are also
+       found in it), but there are couple of ways to violate
+       it.
++
+. You could populate the repository by running a commit walker
+without `-a` option.  Depending on which options are given, you
+could have only commit objects without associated blobs and
+trees this way, for example.  A repository with this kind of
+incomplete object store is not suitable to be published to the
+outside world but sometimes useful for private repository.
+. You can be using `objects/info/alternates` mechanism, or
+`$GIT_ALTERNATE_OBJECT_DIRECTORIES` mechanism to 'borrow'
+objects from other object stores.  A repository with this kind
+of incompete object store is not suitable to be published for
+use with dumb transports but otherwise is OK as long as
+`objects/info/alternates` points at the right object stores
+it borrows from.
+
+objects/[0-9a-f][0-9a-f]::
+       Traditionally, each object is stored in its own file.
+       They are split into 256 subdirectories using the first
+       two letters from its object name to keep the number of
+       directory entries `objects` directory itself needs to
+       hold.  Objects found here are often called 'unpacked'
+       objects.
+
+objects/pack::
+       Packs (files that store many object in compressed form,
+       along with index files to allow them to be randomly
+       accessed) are found in this directory.
+
+objects/info::
+       Additional information about the object store is
+       recorded in this directory.
+
+objects/info/packs::
+       This file is to help dumb transports discover what packs
+       are available in this object store.  Whenever a pack is
+       added or removed, `git update-server-info` should be run
+       to keep this file up-to-date if the repository is
+       published for dumb transports.  `git repack` does this
+       by default.
+
+objects/info/alternates::
+       This file records absolute filesystem paths of alternate
+       object stores that this object store borrows objects
+       from, one pathname per line.
+
+refs::
+       References are stored in subdirectories of this
+       directory.  The `git prune` command knows to keep
+       objects reachable from refs found in this directory and
+       its subdirectories.
+
+refs/heads/`name`::
+       records tip-of-the-tree commit objects of branch `name`
+
+refs/tags/`name`::
+       records any object name (not necessarily a commit
+       object, or a tag object that points at a commit object).
+
+HEAD::
+       A symlink of the form `refs/heads/'name'` to point at
+       the current branch, if exists.  It does not mean much if
+       the repository is not associated with any working tree
+       (i.e. 'naked' repository), but a valid git repository
+       *must* have such a symlink here.  It is legal if the
+       named branch 'name' does not (yet) exist.
+
+branches::
+       A slightly deprecated way to store shorthands to be used
+       to specify URL to `git fetch`, `git pull` and `git push`
+       commands is to store a file in `branches/'name'` and
+       give 'name' to these commands in place of 'repository'
+       argument.
+
+hooks::
+       Hooks are customization scripts used by various git
+       commands.  A handful of sample hooks are installed when
+       `git init-db` is run, but all of them are disabled by
+       default.  To enable, they need to be made executable.
+
+index::
+       The current index file for the repository.  It is
+       usually not found in a naked repository.
+
+info::
+       Additional information about the repository is recorded
+       in this directory.
+
+info/refs::
+       This file is to help dumb transports to discover what
+       refs are available in this repository.  Whenever you
+       create/delete a new branch or a new tag, `git
+       update-server-info` should be run to keep this file
+       up-to-date if the repository is published for dumb
+       transports.  The `git-receive-pack` command, which is
+       run on a remote repository when you `git push` into it,
+       runs `hooks/update` hook to help you achive this.
+
+info/grafts::
+       This file records fake commit ancestry information, to
+       pretend the set of parents a commit has is different
+       from how the commit was actually created.  One record
+       per line describes a commit and its fake parents by
+       listing their 40-byte hexadecimal object names separated
+       by a space and terminated by a newline.
+
+info/exclude::
+       This file, by convention among Porcelains, stores the
+       exclude pattern list.  `git status` looks at it, but
+       otherwise it is not looked at by any of the core git
+       commands.
+
+remotes::
+       Stores shorthands to be used to give URL and default
+       refnames to interact with remote repository to `git
+       fetch`, `git pull` and `git push` commands.
diff --git a/tutorial.html b/tutorial.html
new file mode 100644 (file)
index 0000000..9d08cd2
--- /dev/null
@@ -0,0 +1,2143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+  border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+  font-style: italic;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+}\r
+\r
+tt {\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  border-bottom: 2px solid silver;\r
+  padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+  font-family: serif;\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+  font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+  font-family: sans-serif;\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-right: 10%;\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.5em;\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+  padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+  text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 2px solid silver;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+  white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: italic;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+  list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+  border-color: #527bbd;\r
+  border-width: 3px;\r
+}\r
+thead {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+  vertical-align: top;\r
+  font-style: italic;\r
+  padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+  vertical-align: top;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+  background: #ffffee;\r
+  border: 1px solid silver;\r
+  padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+  font-family: sans-serif;\r
+  font-weight: bold;\r
+  margin-top: 0.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+  border: 1px solid silver;\r
+  background: #f4f4f4;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+  padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+  border-left: 2px solid silver;\r
+  padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>A short git tutorial</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>A short git tutorial</h1>\r
+</div>\r
+<h2>Introduction</h2>\r
+<div class="sectionbody">\r
+<p>This is trying to be a short tutorial on setting up and using a git\r
+repository, mainly because being hands-on and using explicit examples is\r
+often the best way of explaining what is going on.</p>\r
+<p>In normal life, most people wouldn't use the "core" git programs\r
+directly, but rather script around them to make them more palatable.\r
+Understanding the core git stuff may help some people get those scripts\r
+done, though, and it may also be instructive in helping people\r
+understand what it is that the higher-level helper scripts are actually\r
+doing.</p>\r
+<p>The core git is often called "plumbing", with the prettier user\r
+interfaces on top of it called "porcelain". You may not want to use the\r
+plumbing directly very often, but it can be good to know what the\r
+plumbing does for when the porcelain isn't flushing.</p>\r
+<p>The material presented here often goes deep describing how things\r
+work internally.  If you are mostly interested in using git as a\r
+SCM, you can skip them during your first pass.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">And those "too deep" descriptions are often marked as Note.</td>\r
+</tr></table>\r
+</div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">If you are already familiar with another version control system,\r
+like CVS, you may want to take a look at\r
+<a href="everyday.html">Everyday GIT in 20 commands or so</a> first\r
+before reading this.</td>\r
+</tr></table>\r
+</div>\r
+</div>\r
+<h2>Creating a git repository</h2>\r
+<div class="sectionbody">\r
+<p>Creating a new git repository couldn't be easier: all git repositories start\r
+out empty, and the only thing you need to do is find yourself a\r
+subdirectory that you want to use as a working tree - either an empty\r
+one for a totally new project, or an existing working tree that you want\r
+to import into git.</p>\r
+<p>For our first example, we're going to start a totally new repository from\r
+scratch, with no pre-existing files, and we'll call it <tt>git-tutorial</tt>.\r
+To start up, create a subdirectory for it, change into that\r
+subdirectory, and initialize the git infrastructure with <tt>git-init-db</tt>:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ mkdir git-tutorial\r
+$ cd git-tutorial\r
+$ git-init-db</tt></pre>\r
+</div></div>\r
+<p>to which git will reply</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>defaulting to local storage area</tt></pre>\r
+</div></div>\r
+<p>which is just git's way of saying that you haven't been doing anything\r
+strange, and that it will have created a local <tt>.git</tt> directory setup for\r
+your new project. You will now have a <tt>.git</tt> directory, and you can\r
+inspect that with <tt>ls</tt>. For your new empty project, it should show you\r
+three entries, among other things:</p>\r
+<ul>\r
+<li>\r
+<p>\r
+a symlink called <tt>HEAD</tt>, pointing to <tt>refs/heads/master</tt> (if your\r
+   platform does not have native symlinks, it is a file containing the\r
+   line "ref: refs/heads/master")\r
+</p>\r
+<p>Don't worry about the fact that the file that the <tt>HEAD</tt> link points to\r
+doesn't even exist yet &#8212; you haven't created the commit that will\r
+start your <tt>HEAD</tt> development branch yet.</p>\r
+</li>\r
+<li>\r
+<p>\r
+a subdirectory called <tt>objects</tt>, which will contain all the\r
+   objects of your project. You should never have any real reason to\r
+   look at the objects directly, but you might want to know that these\r
+   objects are what contains all the real <em>data</em> in your repository.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a subdirectory called <tt>refs</tt>, which contains references to objects.\r
+</p>\r
+</li>\r
+</ul>\r
+<p>In particular, the <tt>refs</tt> subdirectory will contain two other\r
+subdirectories, named <tt>heads</tt> and <tt>tags</tt> respectively. They do\r
+exactly what their names imply: they contain references to any number\r
+of different <em>heads</em> of development (aka <em>branches</em>), and to any\r
+<em>tags</em> that you have created to name specific versions in your\r
+repository.</p>\r
+<p>One note: the special <tt>master</tt> head is the default branch, which is\r
+why the <tt>.git/HEAD</tt> file was created as a symlink to it even if it\r
+doesn't yet exist. Basically, the <tt>HEAD</tt> link is supposed to always\r
+point to the branch you are working on right now, and you always\r
+start out expecting to work on the <tt>master</tt> branch.</p>\r
+<p>However, this is only a convention, and you can name your branches\r
+anything you want, and don't have to ever even <em>have</em> a <tt>master</tt>\r
+branch. A number of the git tools will assume that <tt>.git/HEAD</tt> is\r
+valid, though.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">An <em>object</em> is identified by its 160-bit SHA1 hash, aka <em>object name</em>,\r
+and a reference to an object is always the 40-byte hex\r
+representation of that SHA1 name. The files in the <tt>refs</tt>\r
+subdirectory are expected to contain these hex references\r
+(usually with a final <tt>'\n'</tt> at the end), and you should thus\r
+expect to see a number of 41-byte files containing these\r
+references in these <tt>refs</tt> subdirectories when you actually start\r
+populating your tree.</td>\r
+</tr></table>\r
+</div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">An advanced user may want to take a look at the\r
+<a href="repository-layout.html">repository layout</a> document\r
+after finishing this tutorial.</td>\r
+</tr></table>\r
+</div>\r
+<p>You have now created your first git repository. Of course, since it's\r
+empty, that's not very useful, so let's start populating it with data.</p>\r
+</div>\r
+<h2>Populating a git repository</h2>\r
+<div class="sectionbody">\r
+<p>We'll keep this simple and stupid, so we'll start off with populating a\r
+few trivial files just to get a feel for it.</p>\r
+<p>Start off with just creating any random files that you want to maintain\r
+in your git repository. We'll start off with a few bad examples, just to\r
+get a feel for how this works:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ echo "Hello World" &gt;hello\r
+$ echo "Silly example" &gt;example</tt></pre>\r
+</div></div>\r
+<p>you have now created two files in your working tree (aka <em>working directory</em>), but to\r
+actually check in your hard work, you will have to go through two steps:</p>\r
+<ul>\r
+<li>\r
+<p>\r
+fill in the <em>index</em> file (aka <em>cache</em>) with the information about your\r
+   working tree state.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+commit that index file as an object.\r
+</p>\r
+</li>\r
+</ul>\r
+<p>The first step is trivial: when you want to tell git about any changes\r
+to your working tree, you use the <tt>git-update-index</tt> program. That\r
+program normally just takes a list of filenames you want to update, but\r
+to avoid trivial mistakes, it refuses to add new entries to the index\r
+(or remove existing ones) unless you explicitly tell it that you're\r
+adding a new entry with the <tt>--add</tt> flag (or removing an entry with the\r
+<tt>--remove</tt>) flag.</p>\r
+<p>So to populate the index with the two files you just created, you can do</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-update-index --add hello example</tt></pre>\r
+</div></div>\r
+<p>and you have now told git to track those two files.</p>\r
+<p>In fact, as you did that, if you now look into your object directory,\r
+you'll notice that git will have added two new objects to the object\r
+database. If you did exactly the steps above, you should now be able to do</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ ls .git/objects/??/*</tt></pre>\r
+</div></div>\r
+<p>and see two files:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>.git/objects/55/7db03de997c86a4a028e1ebd3a1ceb225be238\r
+.git/objects/f2/4c74a2e500f5ee1332c86b94199f52b1d1d962</tt></pre>\r
+</div></div>\r
+<p>which correspond with the objects with names of 557db&#8230; and f24c7..\r
+respectively.</p>\r
+<p>If you want to, you can use <tt>git-cat-file</tt> to look at those objects, but\r
+you'll have to use the object name, not the filename of the object:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-cat-file -t 557db03de997c86a4a028e1ebd3a1ceb225be238</tt></pre>\r
+</div></div>\r
+<p>where the <tt>-t</tt> tells <tt>git-cat-file</tt> to tell you what the "type" of the\r
+object is. git will tell you that you have a "blob" object (ie just a\r
+regular file), and you can see the contents with</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-cat-file "blob" 557db03</tt></pre>\r
+</div></div>\r
+<p>which will print out "Hello World". The object 557db03 is nothing\r
+more than the contents of your file <tt>hello</tt>.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">Don't confuse that object with the file <tt>hello</tt> itself. The\r
+object is literally just those specific <strong>contents</strong> of the file, and\r
+however much you later change the contents in file <tt>hello</tt>, the object\r
+we just looked at will never change. Objects are immutable.</td>\r
+</tr></table>\r
+</div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">The second example demonstrates that you can\r
+abbreviate the object name to only the first several\r
+hexadecimal digits in most places.</td>\r
+</tr></table>\r
+</div>\r
+<p>Anyway, as we mentioned previously, you normally never actually take a\r
+look at the objects themselves, and typing long 40-character hex\r
+names is not something you'd normally want to do. The above digression\r
+was just to show that <tt>git-update-index</tt> did something magical, and\r
+actually saved away the contents of your files into the git object\r
+database.</p>\r
+<p>Updating the index did something else too: it created a <tt>.git/index</tt>\r
+file. This is the index that describes your current working tree, and\r
+something you should be very aware of. Again, you normally never worry\r
+about the index file itself, but you should be aware of the fact that\r
+you have not actually really "checked in" your files into git so far,\r
+you've only <strong>told</strong> git about them.</p>\r
+<p>However, since git knows about them, you can now start using some of the\r
+most basic git commands to manipulate the files or look at their status.</p>\r
+<p>In particular, let's not even check in the two files into git yet, we'll\r
+start off by adding another line to <tt>hello</tt> first:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ echo "It's a new day for git" &gt;&gt;hello</tt></pre>\r
+</div></div>\r
+<p>and you can now, since you told git about the previous state of <tt>hello</tt>, ask\r
+git what has changed in the tree compared to your old index, using the\r
+<tt>git-diff-files</tt> command:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-diff-files</tt></pre>\r
+</div></div>\r
+<p>Oops. That wasn't very readable. It just spit out its own internal\r
+version of a <tt>diff</tt>, but that internal version really just tells you\r
+that it has noticed that "hello" has been modified, and that the old object\r
+contents it had have been replaced with something else.</p>\r
+<p>To make it readable, we can tell git-diff-files to output the\r
+differences as a patch, using the <tt>-p</tt> flag:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-diff-files -p\r
+diff --git a/hello b/hello\r
+index 557db03..263414f 100644\r
+--- a/hello\r
++++ b/hello\r
+@@ -1 +1,2 @@\r
+ Hello World\r
++It's a new day for git</tt></pre>\r
+</div></div>\r
+<p>i.e. the diff of the change we caused by adding another line to <tt>hello</tt>.</p>\r
+<p>In other words, <tt>git-diff-files</tt> always shows us the difference between\r
+what is recorded in the index, and what is currently in the working\r
+tree. That's very useful.</p>\r
+<p>A common shorthand for <tt>git-diff-files -p</tt> is to just write <tt>git\r
+diff</tt>, which will do the same thing.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git diff\r
+diff --git a/hello b/hello\r
+index 557db03..263414f 100644\r
+--- a/hello\r
++++ b/hello\r
+@@ -1 +1,2 @@\r
+ Hello World\r
++It's a new day for git</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Committing git state</h2>\r
+<div class="sectionbody">\r
+<p>Now, we want to go to the next stage in git, which is to take the files\r
+that git knows about in the index, and commit them as a real tree. We do\r
+that in two phases: creating a <em>tree</em> object, and committing that <em>tree</em>\r
+object as a <em>commit</em> object together with an explanation of what the\r
+tree was all about, along with information of how we came to that state.</p>\r
+<p>Creating a tree object is trivial, and is done with <tt>git-write-tree</tt>.\r
+There are no options or other input: git-write-tree will take the\r
+current index state, and write an object that describes that whole\r
+index. In other words, we're now tying together all the different\r
+filenames with their contents (and their permissions), and we're\r
+creating the equivalent of a git "directory" object:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-write-tree</tt></pre>\r
+</div></div>\r
+<p>and this will just output the name of the resulting tree, in this case\r
+(if you have done exactly as I've described) it should be</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>8988da15d077d4829fc51d8544c097def6644dbb</tt></pre>\r
+</div></div>\r
+<p>which is another incomprehensible object name. Again, if you want to,\r
+you can use <tt>git-cat-file -t 8988d...</tt> to see that this time the object\r
+is not a "blob" object, but a "tree" object (you can also use\r
+<tt>git-cat-file</tt> to actually output the raw object contents, but you'll see\r
+mainly a binary mess, so that's less interesting).</p>\r
+<p>However &#8212; normally you'd never use <tt>git-write-tree</tt> on its own, because\r
+normally you always commit a tree into a commit object using the\r
+<tt>git-commit-tree</tt> command. In fact, it's easier to not actually use\r
+<tt>git-write-tree</tt> on its own at all, but to just pass its result in as an\r
+argument to <tt>git-commit-tree</tt>.</p>\r
+<p><tt>git-commit-tree</tt> normally takes several arguments &#8212; it wants to know\r
+what the <em>parent</em> of a commit was, but since this is the first commit\r
+ever in this new repository, and it has no parents, we only need to pass in\r
+the object name of the tree. However, <tt>git-commit-tree</tt>\r
+also wants to get a commit message\r
+on its standard input, and it will write out the resulting object name for the\r
+commit to its standard output.</p>\r
+<p>And this is where we create the <tt>.git/refs/heads/master</tt> file\r
+which is pointed at by <tt>HEAD</tt>. This file is supposed to contain\r
+the reference to the top-of-tree of the master branch, and since\r
+that's exactly what <tt>git-commit-tree</tt> spits out, we can do this\r
+all with a sequence of simple shell commands:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ tree=$(git-write-tree)\r
+$ commit=$(echo 'Initial commit' | git-commit-tree $tree)\r
+$ git-update-ref HEAD $commit</tt></pre>\r
+</div></div>\r
+<p>which will say:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>Committing initial tree 8988da15d077d4829fc51d8544c097def6644dbb</tt></pre>\r
+</div></div>\r
+<p>just to warn you about the fact that it created a totally new commit\r
+that is not related to anything else. Normally you do this only <strong>once</strong>\r
+for a project ever, and all later commits will be parented on top of an\r
+earlier commit, and you'll never see this "Committing initial tree"\r
+message ever again.</p>\r
+<p>Again, normally you'd never actually do this by hand. There is a\r
+helpful script called <tt>git commit</tt> that will do all of this for you. So\r
+you could have just written <tt>git commit</tt>\r
+instead, and it would have done the above magic scripting for you.</p>\r
+</div>\r
+<h2>Making a change</h2>\r
+<div class="sectionbody">\r
+<p>Remember how we did the <tt>git-update-index</tt> on file <tt>hello</tt> and then we\r
+changed <tt>hello</tt> afterward, and could compare the new state of <tt>hello</tt> with the\r
+state we saved in the index file?</p>\r
+<p>Further, remember how I said that <tt>git-write-tree</tt> writes the contents\r
+of the <strong>index</strong> file to the tree, and thus what we just committed was in\r
+fact the <strong>original</strong> contents of the file <tt>hello</tt>, not the new ones. We did\r
+that on purpose, to show the difference between the index state, and the\r
+state in the working tree, and how they don't have to match, even\r
+when we commit things.</p>\r
+<p>As before, if we do <tt>git-diff-files -p</tt> in our git-tutorial project,\r
+we'll still see the same difference we saw last time: the index file\r
+hasn't changed by the act of committing anything. However, now that we\r
+have committed something, we can also learn to use a new command:\r
+<tt>git-diff-index</tt>.</p>\r
+<p>Unlike <tt>git-diff-files</tt>, which showed the difference between the index\r
+file and the working tree, <tt>git-diff-index</tt> shows the differences\r
+between a committed <strong>tree</strong> and either the index file or the working\r
+tree. In other words, <tt>git-diff-index</tt> wants a tree to be diffed\r
+against, and before we did the commit, we couldn't do that, because we\r
+didn't have anything to diff against.</p>\r
+<p>But now we can do</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-diff-index -p HEAD</tt></pre>\r
+</div></div>\r
+<p>(where <tt>-p</tt> has the same meaning as it did in <tt>git-diff-files</tt>), and it\r
+will show us the same difference, but for a totally different reason.\r
+Now we're comparing the working tree not against the index file,\r
+but against the tree we just wrote. It just so happens that those two\r
+are obviously the same, so we get the same result.</p>\r
+<p>Again, because this is a common operation, you can also just shorthand\r
+it with</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git diff HEAD</tt></pre>\r
+</div></div>\r
+<p>which ends up doing the above for you.</p>\r
+<p>In other words, <tt>git-diff-index</tt> normally compares a tree against the\r
+working tree, but when given the <tt>--cached</tt> flag, it is told to\r
+instead compare against just the index cache contents, and ignore the\r
+current working tree state entirely. Since we just wrote the index\r
+file to HEAD, doing <tt>git-diff-index --cached -p HEAD</tt> should thus return\r
+an empty set of differences, and that's exactly what it does.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">\r
+<p><tt>git-diff-index</tt> really always uses the index for its\r
+comparisons, and saying that it compares a tree against the working\r
+tree is thus not strictly accurate. In particular, the list of\r
+files to compare (the "meta-data") <strong>always</strong> comes from the index file,\r
+regardless of whether the <tt>--cached</tt> flag is used or not. The <tt>--cached</tt>\r
+flag really only determines whether the file <strong>contents</strong> to be compared\r
+come from the working tree or not.</p>\r
+<p>This is not hard to understand, as soon as you realize that git simply\r
+never knows (or cares) about files that it is not told about\r
+explicitly. git will never go <strong>looking</strong> for files to compare, it\r
+expects you to tell it what the files are, and that's what the index\r
+is there for.</p>\r
+</td>\r
+</tr></table>\r
+</div>\r
+<p>However, our next step is to commit the <strong>change</strong> we did, and again, to\r
+understand what's going on, keep in mind the difference between "working\r
+tree contents", "index file" and "committed tree". We have changes\r
+in the working tree that we want to commit, and we always have to\r
+work through the index file, so the first thing we need to do is to\r
+update the index cache:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-update-index hello</tt></pre>\r
+</div></div>\r
+<p>(note how we didn't need the <tt>--add</tt> flag this time, since git knew\r
+about the file already).</p>\r
+<p>Note what happens to the different <tt>git-diff-*</tt> versions here. After\r
+we've updated <tt>hello</tt> in the index, <tt>git-diff-files -p</tt> now shows no\r
+differences, but <tt>git-diff-index -p HEAD</tt> still *does* show that the\r
+current state is different from the state we committed. In fact, now\r
+<tt>git-diff-index</tt> shows the same difference whether we use the <tt>&#8212;cached</tt>\r
+flag or not, since now the index is coherent with the working tree.</p>\r
+<p>Now, since we've updated <tt>hello</tt> in the index, we can commit the new\r
+version. We could do it by writing the tree by hand again, and\r
+committing the tree (this time we'd have to use the <tt>-p HEAD</tt> flag to\r
+tell commit that the HEAD was the <strong>parent</strong> of the new commit, and that\r
+this wasn't an initial commit any more), but you've done that once\r
+already, so let's just use the helpful script this time:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git commit</tt></pre>\r
+</div></div>\r
+<p>which starts an editor for you to write the commit message and tells you\r
+a bit about what you have done.</p>\r
+<p>Write whatever message you want, and all the lines that start with <em>#</em>\r
+will be pruned out, and the rest will be used as the commit message for\r
+the change. If you decide you don't want to commit anything after all at\r
+this point (you can continue to edit things and update the index), you\r
+can just leave an empty message. Otherwise <tt>git commit</tt> will commit\r
+the change for you.</p>\r
+<p>You've now made your first real git commit. And if you're interested in\r
+looking at what <tt>git commit</tt> really does, feel free to investigate:\r
+it's a few very simple shell scripts to generate the helpful (?) commit\r
+message headers, and a few one-liners that actually do the\r
+commit itself (<tt>git-commit</tt>).</p>\r
+</div>\r
+<h2>Inspecting Changes</h2>\r
+<div class="sectionbody">\r
+<p>While creating changes is useful, it's even more useful if you can tell\r
+later what changed. The most useful command for this is another of the\r
+<tt>diff</tt> family, namely <tt>git-diff-tree</tt>.</p>\r
+<p><tt>git-diff-tree</tt> can be given two arbitrary trees, and it will tell you the\r
+differences between them. Perhaps even more commonly, though, you can\r
+give it just a single commit object, and it will figure out the parent\r
+of that commit itself, and show the difference directly. Thus, to get\r
+the same diff that we've already seen several times, we can now do</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-diff-tree -p HEAD</tt></pre>\r
+</div></div>\r
+<p>(again, <tt>-p</tt> means to show the difference as a human-readable patch),\r
+and it will show what the last commit (in <tt>HEAD</tt>) actually changed.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">\r
+<p>Here is an ASCII art by Jon Loeliger that illustrates how\r
+various diff-* commands compare things.</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>            diff-tree\r
+             +----+\r
+             |    |\r
+             |    |\r
+             V    V\r
+          +-----------+\r
+          | Object DB |\r
+          |  Backing  |\r
+          |   Store   |\r
+          +-----------+\r
+            ^    ^\r
+            |    |\r
+            |    |  diff-index --cached\r
+            |    |\r
+diff-index  |    V\r
+            |  +-----------+\r
+            |  |   Index   |\r
+            |  |  "cache"  |\r
+            |  +-----------+\r
+            |    ^\r
+            |    |\r
+            |    |  diff-files\r
+            |    |\r
+            V    V\r
+          +-----------+\r
+          |  Working  |\r
+          | Directory |\r
+          +-----------+</tt></pre>\r
+</div></div>\r
+</td>\r
+</tr></table>\r
+</div>\r
+<p>More interestingly, you can also give <tt>git-diff-tree</tt> the <tt>-v</tt> flag, which\r
+tells it to also show the commit message and author and date of the\r
+commit, and you can tell it to show a whole series of diffs.\r
+Alternatively, you can tell it to be "silent", and not show the diffs at\r
+all, but just show the actual commit message.</p>\r
+<p>In fact, together with the <tt>git-rev-list</tt> program (which generates a\r
+list of revisions), <tt>git-diff-tree</tt> ends up being a veritable fount of\r
+changes. A trivial (but very useful) script called <tt>git-whatchanged</tt> is\r
+included with git which does exactly this, and shows a log of recent\r
+activities.</p>\r
+<p>To see the whole history of our pitiful little git-tutorial project, you\r
+can do</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git log</tt></pre>\r
+</div></div>\r
+<p>which shows just the log messages, or if we want to see the log together\r
+with the associated patches use the more complex (and much more\r
+powerful)</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-whatchanged -p --root</tt></pre>\r
+</div></div>\r
+<p>and you will see exactly what has changed in the repository over its\r
+short history.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">The <tt>--root</tt> flag is a flag to <tt>git-diff-tree</tt> to tell it to\r
+show the initial aka <em>root</em> commit too. Normally you'd probably not\r
+want to see the initial import diff, but since the tutorial project\r
+was started from scratch and is so small, we use it to make the result\r
+a bit more interesting.</td>\r
+</tr></table>\r
+</div>\r
+<p>With that, you should now be having some inkling of what git does, and\r
+can explore on your own.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">Most likely, you are not directly using the core\r
+git Plumbing commands, but using Porcelain like Cogito on top\r
+of it. Cogito works a bit differently and you usually do not\r
+have to run <tt>git-update-index</tt> yourself for changed files (you\r
+do tell underlying git about additions and removals via\r
+<tt>cg-add</tt> and <tt>cg-rm</tt> commands). Just before you make a commit\r
+with <tt>cg-commit</tt>, Cogito figures out which files you modified,\r
+and runs <tt>git-update-index</tt> on them for you.</td>\r
+</tr></table>\r
+</div>\r
+</div>\r
+<h2>Tagging a version</h2>\r
+<div class="sectionbody">\r
+<p>In git, there are two kinds of tags, a "light" one, and an "annotated tag".</p>\r
+<p>A "light" tag is technically nothing more than a branch, except we put\r
+it in the <tt>.git/refs/tags/</tt> subdirectory instead of calling it a <tt>head</tt>.\r
+So the simplest form of tag involves nothing more than</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git tag my-first-tag</tt></pre>\r
+</div></div>\r
+<p>which just writes the current <tt>HEAD</tt> into the <tt>.git/refs/tags/my-first-tag</tt>\r
+file, after which point you can then use this symbolic name for that\r
+particular state. You can, for example, do</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git diff my-first-tag</tt></pre>\r
+</div></div>\r
+<p>to diff your current state against that tag (which at this point will\r
+obviously be an empty diff, but if you continue to develop and commit\r
+stuff, you can use your tag as an "anchor-point" to see what has changed\r
+since you tagged it.</p>\r
+<p>An "annotated tag" is actually a real git object, and contains not only a\r
+pointer to the state you want to tag, but also a small tag name and\r
+message, along with optionally a PGP signature that says that yes,\r
+you really did\r
+that tag. You create these annotated tags with either the <tt>-a</tt> or\r
+<tt>-s</tt> flag to <tt>git tag</tt>:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git tag -s &lt;tagname&gt;</tt></pre>\r
+</div></div>\r
+<p>which will sign the current <tt>HEAD</tt> (but you can also give it another\r
+argument that specifies the thing to tag, ie you could have tagged the\r
+current <tt>mybranch</tt> point by using <tt>git tag &lt;tagname&gt; mybranch</tt>).</p>\r
+<p>You normally only do signed tags for major releases or things\r
+like that, while the light-weight tags are useful for any marking you\r
+want to do &#8212; any time you decide that you want to remember a certain\r
+point, just create a private tag for it, and you have a nice symbolic\r
+name for the state at that point.</p>\r
+</div>\r
+<h2>Copying repositories</h2>\r
+<div class="sectionbody">\r
+<p>git repositories are normally totally self-sufficient and relocatable\r
+Unlike CVS, for example, there is no separate notion of\r
+"repository" and "working tree". A git repository normally <strong>is</strong> the\r
+working tree, with the local git information hidden in the <tt>.git</tt>\r
+subdirectory. There is nothing else. What you see is what you got.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">You can tell git to split the git internal information from\r
+the directory that it tracks, but we'll ignore that for now: it's not\r
+how normal projects work, and it's really only meant for special uses.\r
+So the mental model of "the git information is always tied directly to\r
+the working tree that it describes" may not be technically 100%\r
+accurate, but it's a good model for all normal use.</td>\r
+</tr></table>\r
+</div>\r
+<p>This has two implications:</p>\r
+<ul>\r
+<li>\r
+<p>\r
+if you grow bored with the tutorial repository you created (or you've\r
+   made a mistake and want to start all over), you can just do simple\r
+</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ rm -rf git-tutorial</tt></pre>\r
+</div></div>\r
+<p>and it will be gone. There's no external repository, and there's no\r
+history outside the project you created.</p>\r
+</li>\r
+<li>\r
+<p>\r
+if you want to move or duplicate a git repository, you can do so. There\r
+   is <tt>git clone</tt> command, but if all you want to do is just to\r
+   create a copy of your repository (with all the full history that\r
+   went along with it), you can do so with a regular\r
+   <tt>cp -a git-tutorial new-git-tutorial</tt>.\r
+</p>\r
+<p>Note that when you've moved or copied a git repository, your git index\r
+file (which caches various information, notably some of the "stat"\r
+information for the files involved) will likely need to be refreshed.\r
+So after you do a <tt>cp -a</tt> to create a new copy, you'll want to do</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-update-index --refresh</tt></pre>\r
+</div></div>\r
+<p>in the new repository to make sure that the index file is up-to-date.</p>\r
+</li>\r
+</ul>\r
+<p>Note that the second point is true even across machines. You can\r
+duplicate a remote git repository with <strong>any</strong> regular copy mechanism, be it\r
+<tt>scp</tt>, <tt>rsync</tt> or <tt>wget</tt>.</p>\r
+<p>When copying a remote repository, you'll want to at a minimum update the\r
+index cache when you do this, and especially with other peoples'\r
+repositories you often want to make sure that the index cache is in some\r
+known state (you don't know <strong>what</strong> they've done and not yet checked in),\r
+so usually you'll precede the <tt>git-update-index</tt> with a</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-read-tree --reset HEAD\r
+$ git-update-index --refresh</tt></pre>\r
+</div></div>\r
+<p>which will force a total index re-build from the tree pointed to by <tt>HEAD</tt>.\r
+It resets the index contents to <tt>HEAD</tt>, and then the <tt>git-update-index</tt>\r
+makes sure to match up all index entries with the checked-out files.\r
+If the original repository had uncommitted changes in its\r
+working tree, <tt>git-update-index &#8212;refresh</tt> notices them and\r
+tells you they need to be updated.</p>\r
+<p>The above can also be written as simply</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git reset</tt></pre>\r
+</div></div>\r
+<p>and in fact a lot of the common git command combinations can be scripted\r
+with the <tt>git xyz</tt> interfaces.  You can learn things by just looking\r
+at what the various git scripts do.  For example, <tt>git reset</tt> is the\r
+above two lines implemented in <tt>git-reset</tt>, but some things like\r
+<tt>git status</tt> and <tt>git commit</tt> are slightly more complex scripts around\r
+the basic git commands.</p>\r
+<p>Many (most?) public remote repositories will not contain any of\r
+the checked out files or even an index file, and will <strong>only</strong> contain the\r
+actual core git files. Such a repository usually doesn't even have the\r
+<tt>.git</tt> subdirectory, but has all the git files directly in the\r
+repository.</p>\r
+<p>To create your own local live copy of such a "raw" git repository, you'd\r
+first create your own subdirectory for the project, and then copy the\r
+raw repository contents into the <tt>.git</tt> directory. For example, to\r
+create your own copy of the git repository, you'd do the following</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ mkdir my-git\r
+$ cd my-git\r
+$ rsync -rL rsync://rsync.kernel.org/pub/scm/git/git.git/ .git</tt></pre>\r
+</div></div>\r
+<p>followed by</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-read-tree HEAD</tt></pre>\r
+</div></div>\r
+<p>to populate the index. However, now you have populated the index, and\r
+you have all the git internal files, but you will notice that you don't\r
+actually have any of the working tree files to work on. To get\r
+those, you'd check them out with</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-checkout-index -u -a</tt></pre>\r
+</div></div>\r
+<p>where the <tt>-u</tt> flag means that you want the checkout to keep the index\r
+up-to-date (so that you don't have to refresh it afterward), and the\r
+<tt>-a</tt> flag means "check out all files" (if you have a stale copy or an\r
+older version of a checked out tree you may also need to add the <tt>-f</tt>\r
+flag first, to tell git-checkout-index to <strong>force</strong> overwriting of any old\r
+files).</p>\r
+<p>Again, this can all be simplified with</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git clone rsync://rsync.kernel.org/pub/scm/git/git.git/ my-git\r
+$ cd my-git\r
+$ git checkout</tt></pre>\r
+</div></div>\r
+<p>which will end up doing all of the above for you.</p>\r
+<p>You have now successfully copied somebody else's (mine) remote\r
+repository, and checked it out.</p>\r
+</div>\r
+<h2>Creating a new branch</h2>\r
+<div class="sectionbody">\r
+<p>Branches in git are really nothing more than pointers into the git\r
+object database from within the <tt>.git/refs/</tt> subdirectory, and as we\r
+already discussed, the <tt>HEAD</tt> branch is nothing but a symlink to one of\r
+these object pointers.</p>\r
+<p>You can at any time create a new branch by just picking an arbitrary\r
+point in the project history, and just writing the SHA1 name of that\r
+object into a file under <tt>.git/refs/heads/</tt>. You can use any filename you\r
+want (and indeed, subdirectories), but the convention is that the\r
+"normal" branch is called <tt>master</tt>. That's just a convention, though,\r
+and nothing enforces it.</p>\r
+<p>To show that as an example, let's go back to the git-tutorial repository we\r
+used earlier, and create a branch in it. You do that by simply just\r
+saying that you want to check out a new branch:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout -b mybranch</tt></pre>\r
+</div></div>\r
+<p>will create a new branch based at the current <tt>HEAD</tt> position, and switch\r
+to it.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">\r
+<p>If you make the decision to start your new branch at some\r
+other point in the history than the current <tt>HEAD</tt>, you can do so by\r
+just telling <tt>git checkout</tt> what the base of the checkout would be.\r
+In other words, if you have an earlier tag or branch, you'd just do</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout -b mybranch earlier-commit</tt></pre>\r
+</div></div>\r
+<p>and it would create the new branch <tt>mybranch</tt> at the earlier commit,\r
+and check out the state at that time.</p>\r
+</td>\r
+</tr></table>\r
+</div>\r
+<p>You can always just jump back to your original <tt>master</tt> branch by doing</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout master</tt></pre>\r
+</div></div>\r
+<p>(or any other branch-name, for that matter) and if you forget which\r
+branch you happen to be on, a simple</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ ls -l .git/HEAD</tt></pre>\r
+</div></div>\r
+<p>will tell you where it's pointing (Note that on platforms with bad or no\r
+symlink support, you have to execute</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ cat .git/HEAD</tt></pre>\r
+</div></div>\r
+<p>instead). To get the list of branches you have, you can say</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git branch</tt></pre>\r
+</div></div>\r
+<p>which is nothing more than a simple script around <tt>ls .git/refs/heads</tt>.\r
+There will be asterisk in front of the branch you are currently on.</p>\r
+<p>Sometimes you may wish to create a new branch _without_ actually\r
+checking it out and switching to it. If so, just use the command</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git branch &lt;branchname&gt; [startingpoint]</tt></pre>\r
+</div></div>\r
+<p>which will simply _create_ the branch, but will not do anything further.\r
+You can then later &#8212; once you decide that you want to actually develop\r
+on that branch &#8212; switch to that branch with a regular <tt>git checkout</tt>\r
+with the branchname as the argument.</p>\r
+</div>\r
+<h2>Merging two branches</h2>\r
+<div class="sectionbody">\r
+<p>One of the ideas of having a branch is that you do some (possibly\r
+experimental) work in it, and eventually merge it back to the main\r
+branch. So assuming you created the above <tt>mybranch</tt> that started out\r
+being the same as the original <tt>master</tt> branch, let's make sure we're in\r
+that branch, and do some work there.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout mybranch\r
+$ echo "Work, work, work" &gt;&gt;hello\r
+$ git commit -m 'Some work.' hello</tt></pre>\r
+</div></div>\r
+<p>Here, we just added another line to <tt>hello</tt>, and we used a shorthand for\r
+doing both <tt>git-update-index hello</tt> and <tt>git commit</tt> by just giving the\r
+filename directly to <tt>git commit</tt>. The <tt>-m</tt> flag is to give the\r
+commit log message from the command line.</p>\r
+<p>Now, to make it a bit more interesting, let's assume that somebody else\r
+does some work in the original branch, and simulate that by going back\r
+to the master branch, and editing the same file differently there:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout master</tt></pre>\r
+</div></div>\r
+<p>Here, take a moment to look at the contents of <tt>hello</tt>, and notice how they\r
+don't contain the work we just did in <tt>mybranch</tt> &#8212; because that work\r
+hasn't happened in the <tt>master</tt> branch at all. Then do</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ echo "Play, play, play" &gt;&gt;hello\r
+$ echo "Lots of fun" &gt;&gt;example\r
+$ git commit -m 'Some fun.' hello example</tt></pre>\r
+</div></div>\r
+<p>since the master branch is obviously in a much better mood.</p>\r
+<p>Now, you've got two branches, and you decide that you want to merge the\r
+work done. Before we do that, let's introduce a cool graphical tool that\r
+helps you view what's going on:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ gitk --all</tt></pre>\r
+</div></div>\r
+<p>will show you graphically both of your branches (that's what the <tt>--all</tt>\r
+means: normally it will just show you your current <tt>HEAD</tt>) and their\r
+histories. You can also see exactly how they came to be from a common\r
+source.</p>\r
+<p>Anyway, let's exit <tt>gitk</tt> (<tt>^Q</tt> or the File menu), and decide that we want\r
+to merge the work we did on the <tt>mybranch</tt> branch into the <tt>master</tt>\r
+branch (which is currently our <tt>HEAD</tt> too). To do that, there's a nice\r
+script called <tt>git merge</tt>, which wants to know which branches you want\r
+to resolve and what the merge is all about:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git merge "Merge work in mybranch" HEAD mybranch</tt></pre>\r
+</div></div>\r
+<p>where the first argument is going to be used as the commit message if\r
+the merge can be resolved automatically.</p>\r
+<p>Now, in this case we've intentionally created a situation where the\r
+merge will need to be fixed up by hand, though, so git will do as much\r
+of it as it can automatically (which in this case is just merge the <tt>example</tt>\r
+file, which had no differences in the <tt>mybranch</tt> branch), and say:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>        Trying really trivial in-index merge...\r
+        fatal: Merge requires file-level merging\r
+        Nope.\r
+        ...\r
+        Auto-merging hello\r
+        CONFLICT (content): Merge conflict in hello\r
+        Automatic merge failed/prevented; fix up by hand</tt></pre>\r
+</div></div>\r
+<p>which is way too verbose, but it basically tells you that it failed the\r
+really trivial merge ("Simple merge") and did an "Automatic merge"\r
+instead, but that too failed due to conflicts in <tt>hello</tt>.</p>\r
+<p>Not to worry. It left the (trivial) conflict in <tt>hello</tt> in the same form you\r
+should already be well used to if you've ever used CVS, so let's just\r
+open <tt>hello</tt> in our editor (whatever that may be), and fix it up somehow.\r
+I'd suggest just making it so that <tt>hello</tt> contains all four lines:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>Hello World\r
+It's a new day for git\r
+Play, play, play\r
+Work, work, work</tt></pre>\r
+</div></div>\r
+<p>and once you're happy with your manual merge, just do a</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git commit hello</tt></pre>\r
+</div></div>\r
+<p>which will very loudly warn you that you're now committing a merge\r
+(which is correct, so never mind), and you can write a small merge\r
+message about your adventures in git-merge-land.</p>\r
+<p>After you're done, start up <tt>gitk --all</tt> to see graphically what the\r
+history looks like. Notice that <tt>mybranch</tt> still exists, and you can\r
+switch to it, and continue to work with it if you want to. The\r
+<tt>mybranch</tt> branch will not contain the merge, but next time you merge it\r
+from the <tt>master</tt> branch, git will know how you merged it, so you'll not\r
+have to do _that_ merge again.</p>\r
+<p>Another useful tool, especially if you do not always work in X-Window\r
+environment, is <tt>git show-branch</tt>.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git show-branch master mybranch\r
+* [master] Merge work in mybranch\r
+ ! [mybranch] Some work.\r
+--\r
++  [master] Merge work in mybranch\r
+++ [mybranch] Some work.</tt></pre>\r
+</div></div>\r
+<p>The first two lines indicate that it is showing the two branches\r
+and the first line of the commit log message from their\r
+top-of-the-tree commits, you are currently on <tt>master</tt> branch\r
+(notice the asterisk <tt>*</tt> character), and the first column for\r
+the later output lines is used to show commits contained in the\r
+<tt>master</tt> branch, and the second column for the <tt>mybranch</tt>\r
+branch. Three commits are shown along with their log messages.\r
+All of them have plus <tt>+</tt> characters in the first column, which\r
+means they are now part of the <tt>master</tt> branch. Only the "Some\r
+work" commit has the plus <tt>+</tt> character in the second column,\r
+because <tt>mybranch</tt> has not been merged to incorporate these\r
+commits from the master branch.  The string inside brackets\r
+before the commit log message is a short name you can use to\r
+name the commit.  In the above example, <em>master</em> and <em>mybranch</em>\r
+are branch heads.  <em>master~1</em> is the first parent of <em>master</em>\r
+branch head.  Please see <em>git-rev-parse</em> documentation if you\r
+see more complex cases.</p>\r
+<p>Now, let's pretend you are the one who did all the work in\r
+<tt>mybranch</tt>, and the fruit of your hard work has finally been merged\r
+to the <tt>master</tt> branch. Let's go back to <tt>mybranch</tt>, and run\r
+resolve to get the "upstream changes" back to your branch.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout mybranch\r
+$ git merge "Merge upstream changes." HEAD master</tt></pre>\r
+</div></div>\r
+<p>This outputs something like this (the actual commit object names\r
+would be different)</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>Updating from ae3a2da... to a80b4aa....\r
+ example |    1 +\r
+ hello   |    1 +\r
+ 2 files changed, 2 insertions(+), 0 deletions(-)</tt></pre>\r
+</div></div>\r
+<p>Because your branch did not contain anything more than what are\r
+already merged into the <tt>master</tt> branch, the resolve operation did\r
+not actually do a merge. Instead, it just updated the top of\r
+the tree of your branch to that of the <tt>master</tt> branch. This is\r
+often called <em>fast forward</em> merge.</p>\r
+<p>You can run <tt>gitk --all</tt> again to see how the commit ancestry\r
+looks like, or run <tt>show-branch</tt>, which tells you this.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git show-branch master mybranch\r
+! [master] Merge work in mybranch\r
+ * [mybranch] Merge work in mybranch\r
+--\r
+++ [master] Merge work in mybranch</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Merging external work</h2>\r
+<div class="sectionbody">\r
+<p>It's usually much more common that you merge with somebody else than\r
+merging with your own branches, so it's worth pointing out that git\r
+makes that very easy too, and in fact, it's not that different from\r
+doing a <tt>git merge</tt>. In fact, a remote merge ends up being nothing\r
+more than "fetch the work from a remote repository into a temporary tag"\r
+followed by a <tt>git merge</tt>.</p>\r
+<p>Fetching from a remote repository is done by, unsurprisingly,\r
+<tt>git fetch</tt>:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git fetch &lt;remote-repository&gt;</tt></pre>\r
+</div></div>\r
+<p>One of the following transports can be used to name the\r
+repository to download from:</p>\r
+<dl>\r
+<dt>\r
+Rsync\r
+</dt>\r
+<dd>\r
+<p>\r
+        <tt>rsync://remote.machine/path/to/repo.git/</tt>\r
+</p>\r
+<p>Rsync transport is usable for both uploading and downloading,\r
+but is completely unaware of what git does, and can produce\r
+unexpected results when you download from the public repository\r
+while the repository owner is uploading into it via <tt>rsync</tt>\r
+transport.  Most notably, it could update the files under\r
+<tt>refs/</tt> which holds the object name of the topmost commits\r
+before uploading the files in <tt>objects/</tt> &#8212; the downloader would\r
+obtain head commit object name while that object itself is still\r
+not available in the repository.  For this reason, it is\r
+considered deprecated.</p>\r
+</dd>\r
+<dt>\r
+SSH\r
+</dt>\r
+<dd>\r
+<p>\r
+        <tt>remote.machine:/path/to/repo.git/</tt> or\r
+</p>\r
+<p><tt>ssh://remote.machine/path/to/repo.git/</tt></p>\r
+<p>This transport can be used for both uploading and downloading,\r
+and requires you to have a log-in privilege over <tt>ssh</tt> to the\r
+remote machine.  It finds out the set of objects the other side\r
+lacks by exchanging the head commits both ends have and\r
+transfers (close to) minimum set of objects.  It is by far the\r
+most efficient way to exchange git objects between repositories.</p>\r
+</dd>\r
+<dt>\r
+Local directory\r
+</dt>\r
+<dd>\r
+<p>\r
+        <tt>/path/to/repo.git/</tt>\r
+</p>\r
+<p>This transport is the same as SSH transport but uses <tt>sh</tt> to run\r
+both ends on the local machine instead of running other end on\r
+the remote machine via <tt>ssh</tt>.</p>\r
+</dd>\r
+<dt>\r
+git Native\r
+</dt>\r
+<dd>\r
+<p>\r
+        <tt>git://remote.machine/path/to/repo.git/</tt>\r
+</p>\r
+<p>This transport was designed for anonymous downloading.  Like SSH\r
+transport, it finds out the set of objects the downstream side\r
+lacks and transfers (close to) minimum set of objects.</p>\r
+</dd>\r
+<dt>\r
+HTTP(S)\r
+</dt>\r
+<dd>\r
+<p>\r
+        <tt>http://remote.machine/path/to/repo.git/</tt>\r
+</p>\r
+<p>Downloader from http and https URL\r
+first obtains the topmost commit object name from the remote site\r
+by looking at the specified refname under <tt>repo.git/refs/</tt> directory,\r
+and then tries to obtain the\r
+commit object by downloading from <tt>repo.git/objects/xx/xxx...</tt>\r
+using the object name of that commit object.  Then it reads the\r
+commit object to find out its parent commits and the associate\r
+tree object; it repeats this process until it gets all the\r
+necessary objects.  Because of this behaviour, they are\r
+sometimes also called <em>commit walkers</em>.</p>\r
+<p>The <em>commit walkers</em> are sometimes also called <em>dumb\r
+transports</em>, because they do not require any git aware smart\r
+server like git Native transport does.  Any stock HTTP server\r
+that does not even support directory index would suffice.  But\r
+you must prepare your repository with <tt>git-update-server-info</tt>\r
+to help dumb transport downloaders.</p>\r
+<p>There are (confusingly enough) <tt>git-ssh-fetch</tt> and <tt>git-ssh-upload</tt>\r
+programs, which are <em>commit walkers</em>; they outlived their\r
+usefulness when git Native and SSH transports were introduced,\r
+and not used by <tt>git pull</tt> or <tt>git push</tt> scripts.</p>\r
+</dd>\r
+</dl>\r
+<p>Once you fetch from the remote repository, you <tt>resolve</tt> that\r
+with your current branch.</p>\r
+<p>However &#8212; it's such a common thing to <tt>fetch</tt> and then\r
+immediately <tt>resolve</tt>, that it's called <tt>git pull</tt>, and you can\r
+simply do</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git pull &lt;remote-repository&gt;</tt></pre>\r
+</div></div>\r
+<p>and optionally give a branch-name for the remote end as a second\r
+argument.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">You could do without using any branches at all, by\r
+keeping as many local repositories as you would like to have\r
+branches, and merging between them with <tt>git pull</tt>, just like\r
+you merge between branches. The advantage of this approach is\r
+that it lets you keep set of files for each <tt>branch</tt> checked\r
+out and you may find it easier to switch back and forth if you\r
+juggle multiple lines of development simultaneously. Of\r
+course, you will pay the price of more disk usage to hold\r
+multiple working trees, but disk space is cheap these days.</td>\r
+</tr></table>\r
+</div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">You could even pull from your own repository by\r
+giving <em>.</em> as &lt;remote-repository&gt; parameter to <tt>git pull</tt>.  This\r
+is useful when you want to merge a local branch (or more, if you\r
+are making an Octopus) into the current branch.</td>\r
+</tr></table>\r
+</div>\r
+<p>It is likely that you will be pulling from the same remote\r
+repository from time to time. As a short hand, you can store\r
+the remote repository URL in a file under .git/remotes/\r
+directory, like this:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ mkdir -p .git/remotes/\r
+$ cat &gt;.git/remotes/linus &lt;&lt;\EOF\r
+URL: http://www.kernel.org/pub/scm/git/git.git/\r
+EOF</tt></pre>\r
+</div></div>\r
+<p>and use the filename to <tt>git pull</tt> instead of the full URL.\r
+The URL specified in such file can even be a prefix\r
+of a full URL, like this:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ cat &gt;.git/remotes/jgarzik &lt;&lt;\EOF\r
+URL: http://www.kernel.org/pub/scm/linux/git/jgarzik/\r
+EOF</tt></pre>\r
+</div></div>\r
+<p>Examples.</p>\r
+<ol>\r
+<li>\r
+<p>\r
+<tt>git pull linus</tt>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<tt>git pull linus tag v0.99.1</tt>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<tt>git pull jgarzik/netdev-2.6.git/ e100</tt>\r
+</p>\r
+</li>\r
+</ol>\r
+<p>the above are equivalent to:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+<tt>git pull http://www.kernel.org/pub/scm/git/git.git/ HEAD</tt>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<tt>git pull http://www.kernel.org/pub/scm/git/git.git/ tag v0.99.1</tt>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<tt>git pull http://www.kernel.org/pub/&#8230;/jgarzik/netdev-2.6.git e100</tt>\r
+</p>\r
+</li>\r
+</ol>\r
+</div>\r
+<h2>How does the merge work?</h2>\r
+<div class="sectionbody">\r
+<p>We said this tutorial shows what plumbing does to help you cope\r
+with the porcelain that isn't flushing, but we so far did not\r
+talk about how the merge really works.  If you are following\r
+this tutorial the first time, I'd suggest to skip to "Publishing\r
+your work" section and come back here later.</p>\r
+<p>OK, still with me?  To give us an example to look at, let's go\r
+back to the earlier repository with "hello" and "example" file,\r
+and bring ourselves back to the pre-merge state:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git show-branch --more=3 master mybranch\r
+! [master] Merge work in mybranch\r
+ * [mybranch] Merge work in mybranch\r
+--\r
+++ [master] Merge work in mybranch\r
+++ [master^2] Some work.\r
+++ [master^] Some fun.</tt></pre>\r
+</div></div>\r
+<p>Remember, before running <tt>git merge</tt>, our <tt>master</tt> head was at\r
+"Some fun." commit, while our <tt>mybranch</tt> head was at "Some\r
+work." commit.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git checkout mybranch\r
+$ git reset --hard master^2\r
+$ git checkout master\r
+$ git reset --hard master^</tt></pre>\r
+</div></div>\r
+<p>After rewinding, the commit structure should look like this:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git show-branch\r
+* [master] Some fun.\r
+ ! [mybranch] Some work.\r
+--\r
+ + [mybranch] Some work.\r
++  [master] Some fun.\r
+++ [mybranch^] New day.</tt></pre>\r
+</div></div>\r
+<p>Now we are ready to experiment with the merge by hand.</p>\r
+<p><tt>git merge</tt> command, when merging two branches, uses 3-way merge\r
+algorithm.  First, it finds the common ancestor between them.\r
+The command it uses is <tt>git-merge-base</tt>:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ mb=$(git-merge-base HEAD mybranch)</tt></pre>\r
+</div></div>\r
+<p>The command writes the commit object name of the common ancestor\r
+to the standard output, so we captured its output to a variable,\r
+because we will be using it in the next step.  BTW, the common\r
+ancestor commit is the "New day." commit in this case.  You can\r
+tell it by:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-name-rev $mb\r
+my-first-tag</tt></pre>\r
+</div></div>\r
+<p>After finding out a common ancestor commit, the second step is\r
+this:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-read-tree -m -u $mb HEAD mybranch</tt></pre>\r
+</div></div>\r
+<p>This is the same <tt>git-read-tree</tt> command we have already seen,\r
+but it takes three trees, unlike previous examples.  This reads\r
+the contents of each tree into different <em>stage</em> in the index\r
+file (the first tree goes to stage 1, the second stage 2,\r
+etc.).  After reading three trees into three stages, the paths\r
+that are the same in all three stages are <em>collapsed</em> into stage\r
+0.  Also paths that are the same in two of three stages are\r
+collapsed into stage 0, taking the SHA1 from either stage 2 or\r
+stage 3, whichever is different from stage 1 (i.e. only one side\r
+changed from the common ancestor).</p>\r
+<p>After <em>collapsing</em> operation, paths that are different in three\r
+trees are left in non-zero stages.  At this point, you can\r
+inspect the index file with this command:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-ls-files --stage\r
+100644 7f8b141b65fdcee47321e399a2598a235a032422 0       example\r
+100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1       hello\r
+100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2       hello\r
+100644 cc44c73eb783565da5831b4d820c962954019b69 3       hello</tt></pre>\r
+</div></div>\r
+<p>In our example of only two files, we did not have unchanged\r
+files so only <em>example</em> resulted in collapsing, but in real-life\r
+large projects, only small number of files change in one commit,\r
+and this <em>collapsing</em> tends to trivially merge most of the paths\r
+fairly quickly, leaving only a handful the real changes in non-zero\r
+stages.</p>\r
+<p>To look at only non-zero stages, use <tt>--unmerged</tt> flag:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-ls-files --unmerged\r
+100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1       hello\r
+100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2       hello\r
+100644 cc44c73eb783565da5831b4d820c962954019b69 3       hello</tt></pre>\r
+</div></div>\r
+<p>The next step of merging is to merge these three versions of the\r
+file, using 3-way merge.  This is done by giving\r
+<tt>git-merge-one-file</tt> command as one of the arguments to\r
+<tt>git-merge-index</tt> command:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-merge-index git-merge-one-file hello\r
+Auto-merging hello.\r
+merge: warning: conflicts during merge\r
+ERROR: Merge conflict in hello.\r
+fatal: merge program failed</tt></pre>\r
+</div></div>\r
+<p><tt>git-merge-one-file</tt> script is called with parameters to\r
+describe those three versions, and is responsible to leave the\r
+merge results in the working tree.\r
+It is a fairly straightforward shell script, and\r
+eventually calls <tt>merge</tt> program from RCS suite to perform a\r
+file-level 3-way merge.  In this case, <tt>merge</tt> detects\r
+conflicts, and the merge result with conflict marks is left in\r
+the working tree..  This can be seen if you run <tt>ls-files\r
+&#8212;stage</tt> again at this point:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git-ls-files --stage\r
+100644 7f8b141b65fdcee47321e399a2598a235a032422 0       example\r
+100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1       hello\r
+100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2       hello\r
+100644 cc44c73eb783565da5831b4d820c962954019b69 3       hello</tt></pre>\r
+</div></div>\r
+<p>This is the state of the index file and the working file after\r
+<tt>git merge</tt> returns control back to you, leaving the conflicting\r
+merge for you to resolve.  Notice that the path <tt>hello</tt> is still\r
+unmerged, and what you see with <tt>git diff</tt> at this point is\r
+differences since stage 2 (i.e. your version).</p>\r
+</div>\r
+<h2>Publishing your work</h2>\r
+<div class="sectionbody">\r
+<p>So we can use somebody else's work from a remote repository; but\r
+how can <strong>you</strong> prepare a repository to let other people pull from\r
+it?</p>\r
+<p>Your do your real work in your working tree that has your\r
+primary repository hanging under it as its <tt>.git</tt> subdirectory.\r
+You <strong>could</strong> make that repository accessible remotely and ask\r
+people to pull from it, but in practice that is not the way\r
+things are usually done. A recommended way is to have a public\r
+repository, make it reachable by other people, and when the\r
+changes you made in your primary working tree are in good shape,\r
+update the public repository from it. This is often called\r
+<em>pushing</em>.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">This public repository could further be mirrored, and that is\r
+how git repositories at <tt>kernel.org</tt> are managed.</td>\r
+</tr></table>\r
+</div>\r
+<p>Publishing the changes from your local (private) repository to\r
+your remote (public) repository requires a write privilege on\r
+the remote machine. You need to have an SSH account there to\r
+run a single command, <tt>git-receive-pack</tt>.</p>\r
+<p>First, you need to create an empty repository on the remote\r
+machine that will house your public repository. This empty\r
+repository will be populated and be kept up-to-date by pushing\r
+into it later. Obviously, this repository creation needs to be\r
+done only once.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content"><tt>git push</tt> uses a pair of programs,\r
+<tt>git-send-pack</tt> on your local machine, and <tt>git-receive-pack</tt>\r
+on the remote machine. The communication between the two over\r
+the network internally uses an SSH connection.</td>\r
+</tr></table>\r
+</div>\r
+<p>Your private repository's git directory is usually <tt>.git</tt>, but\r
+your public repository is often named after the project name,\r
+i.e. <tt>&lt;project&gt;.git</tt>. Let's create such a public repository for\r
+project <tt>my-git</tt>. After logging into the remote machine, create\r
+an empty directory:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ mkdir my-git.git</tt></pre>\r
+</div></div>\r
+<p>Then, make that directory into a git repository by running\r
+<tt>git init-db</tt>, but this time, since its name is not the usual\r
+<tt>.git</tt>, we do things slightly differently:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ GIT_DIR=my-git.git git-init-db</tt></pre>\r
+</div></div>\r
+<p>Make sure this directory is available for others you want your\r
+changes to be pulled by via the transport of your choice. Also\r
+you need to make sure that you have the <tt>git-receive-pack</tt>\r
+program on the <tt>$PATH</tt>.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">Many installations of sshd do not invoke your shell as the login\r
+shell when you directly run programs; what this means is that if\r
+your login shell is <tt>bash</tt>, only <tt>.bashrc</tt> is read and not\r
+<tt>.bash_profile</tt>. As a workaround, make sure <tt>.bashrc</tt> sets up\r
+<tt>$PATH</tt> so that you can run <tt>git-receive-pack</tt> program.</td>\r
+</tr></table>\r
+</div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">If you plan to publish this repository to be accessed over http,\r
+you should do <tt>chmod +x my-git.git/hooks/post-update</tt> at this\r
+point.  This makes sure that every time you push into this\r
+repository, <tt>git-update-server-info</tt> is run.</td>\r
+</tr></table>\r
+</div>\r
+<p>Your "public repository" is now ready to accept your changes.\r
+Come back to the machine you have your private repository. From\r
+there, run this command:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git push &lt;public-host&gt;:/path/to/my-git.git master</tt></pre>\r
+</div></div>\r
+<p>This synchronizes your public repository to match the named\r
+branch head (i.e. <tt>master</tt> in this case) and objects reachable\r
+from them in your current repository.</p>\r
+<p>As a real example, this is how I update my public git\r
+repository. Kernel.org mirror network takes care of the\r
+propagation to other publicly visible machines:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git push master.kernel.org:/pub/scm/git/git.git/</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Packing your repository</h2>\r
+<div class="sectionbody">\r
+<p>Earlier, we saw that one file under <tt>.git/objects/??/</tt> directory\r
+is stored for each git object you create. This representation\r
+is efficient to create atomically and safely, but\r
+not so convenient to transport over the network. Since git objects are\r
+immutable once they are created, there is a way to optimize the\r
+storage by "packing them together". The command</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git repack</tt></pre>\r
+</div></div>\r
+<p>will do it for you. If you followed the tutorial examples, you\r
+would have accumulated about 17 objects in <tt>.git/objects/??/</tt>\r
+directories by now. <tt>git repack</tt> tells you how many objects it\r
+packed, and stores the packed file in <tt>.git/objects/pack</tt>\r
+directory.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">You will see two files, <tt>pack-*.pack</tt> and <tt>pack-*.idx</tt>,\r
+in <tt>.git/objects/pack</tt> directory. They are closely related to\r
+each other, and if you ever copy them by hand to a different\r
+repository for whatever reason, you should make sure you copy\r
+them together. The former holds all the data from the objects\r
+in the pack, and the latter holds the index for random\r
+access.</td>\r
+</tr></table>\r
+</div>\r
+<p>If you are paranoid, running <tt>git-verify-pack</tt> command would\r
+detect if you have a corrupt pack, but do not worry too much.\r
+Our programs are always perfect ;-).</p>\r
+<p>Once you have packed objects, you do not need to leave the\r
+unpacked objects that are contained in the pack file anymore.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git prune-packed</tt></pre>\r
+</div></div>\r
+<p>would remove them for you.</p>\r
+<p>You can try running <tt>find .git/objects -type f</tt> before and after\r
+you run <tt>git prune-packed</tt> if you are curious.  Also <tt>git\r
+count-objects</tt> would tell you how many unpacked objects are in\r
+your repository and how much space they are consuming.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content"><tt>git pull</tt> is slightly cumbersome for HTTP transport, as a\r
+packed repository may contain relatively few objects in a\r
+relatively large pack. If you expect many HTTP pulls from your\r
+public repository you might want to repack &amp; prune often, or\r
+never.</td>\r
+</tr></table>\r
+</div>\r
+<p>If you run <tt>git repack</tt> again at this point, it will say\r
+"Nothing to pack". Once you continue your development and\r
+accumulate the changes, running <tt>git repack</tt> again will create a\r
+new pack, that contains objects created since you packed your\r
+repository the last time. We recommend that you pack your project\r
+soon after the initial import (unless you are starting your\r
+project from scratch), and then run <tt>git repack</tt> every once in a\r
+while, depending on how active your project is.</p>\r
+<p>When a repository is synchronized via <tt>git push</tt> and <tt>git pull</tt>\r
+objects packed in the source repository are usually stored\r
+unpacked in the destination, unless rsync transport is used.\r
+While this allows you to use different packing strategies on\r
+both ends, it also means you may need to repack both\r
+repositories every once in a while.</p>\r
+</div>\r
+<h2>Working with Others</h2>\r
+<div class="sectionbody">\r
+<p>Although git is a truly distributed system, it is often\r
+convenient to organize your project with an informal hierarchy\r
+of developers. Linux kernel development is run this way. There\r
+is a nice illustration (page 17, "Merges to Mainline") in Randy\r
+Dunlap's presentation (<tt>http://tinyurl.com/a2jdg</tt>).</p>\r
+<p>It should be stressed that this hierarchy is purely <strong>informal</strong>.\r
+There is nothing fundamental in git that enforces the "chain of\r
+patch flow" this hierarchy implies. You do not have to pull\r
+from only one remote repository.</p>\r
+<p>A recommended workflow for a "project lead" goes like this:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+Prepare your primary repository on your local machine. Your\r
+   work is done there.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Prepare a public repository accessible to others.\r
+</p>\r
+<p>If other people are pulling from your repository over dumb\r
+transport protocols (HTTP), you need to keep this repository\r
+<em>dumb transport friendly</em>.  After <tt>git init-db</tt>,\r
+<tt>$GIT_DIR/hooks/post-update</tt> copied from the standard templates\r
+would contain a call to <tt>git-update-server-info</tt> but the\r
+<tt>post-update</tt> hook itself is disabled by default &#8212; enable it\r
+with <tt>chmod +x post-update</tt>.  This makes sure <tt>git-update-server-info</tt>\r
+keeps the necessary files up-to-date.</p>\r
+</li>\r
+<li>\r
+<p>\r
+Push into the public repository from your primary\r
+   repository.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<tt>git repack</tt> the public repository. This establishes a big\r
+   pack that contains the initial set of objects as the\r
+   baseline, and possibly <tt>git prune</tt> if the transport\r
+   used for pulling from your repository supports packed\r
+   repositories.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Keep working in your primary repository. Your changes\r
+   include modifications of your own, patches you receive via\r
+   e-mails, and merges resulting from pulling the "public"\r
+   repositories of your "subsystem maintainers".\r
+</p>\r
+<p>You can repack this private repository whenever you feel like.</p>\r
+</li>\r
+<li>\r
+<p>\r
+Push your changes to the public repository, and announce it\r
+   to the public.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Every once in a while, "git repack" the public repository.\r
+   Go back to step 5. and continue working.\r
+</p>\r
+</li>\r
+</ol>\r
+<p>A recommended work cycle for a "subsystem maintainer" who works\r
+on that project and has an own "public repository" goes like this:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+Prepare your work repository, by <tt>git clone</tt> the public\r
+   repository of the "project lead". The URL used for the\r
+   initial cloning is stored in <tt>.git/remotes/origin</tt>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Prepare a public repository accessible to others, just like\r
+   the "project lead" person does.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Copy over the packed files from "project lead" public\r
+   repository to your public repository, unless the "project\r
+   lead" repository lives on the same machine as yours.  In the\r
+   latter case, you can use <tt>objects/info/alternates</tt> file to\r
+   point at the repository you are borrowing from.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Push into the public repository from your primary\r
+   repository. Run <tt>git repack</tt>, and possibly <tt>git prune</tt> if the\r
+   transport used for pulling from your repository supports\r
+   packed repositories.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Keep working in your primary repository. Your changes\r
+   include modifications of your own, patches you receive via\r
+   e-mails, and merges resulting from pulling the "public"\r
+   repositories of your "project lead" and possibly your\r
+   "sub-subsystem maintainers".\r
+</p>\r
+<p>You can repack this private repository whenever you feel\r
+like.</p>\r
+</li>\r
+<li>\r
+<p>\r
+Push your changes to your public repository, and ask your\r
+   "project lead" and possibly your "sub-subsystem\r
+   maintainers" to pull from it.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Every once in a while, <tt>git repack</tt> the public repository.\r
+   Go back to step 5. and continue working.\r
+</p>\r
+</li>\r
+</ol>\r
+<p>A recommended work cycle for an "individual developer" who does\r
+not have a "public" repository is somewhat different. It goes\r
+like this:</p>\r
+<ol>\r
+<li>\r
+<p>\r
+Prepare your work repository, by <tt>git clone</tt> the public\r
+   repository of the "project lead" (or a "subsystem\r
+   maintainer", if you work on a subsystem). The URL used for\r
+   the initial cloning is stored in <tt>.git/remotes/origin</tt>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Do your work in your repository on <em>master</em> branch.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Run <tt>git fetch origin</tt> from the public repository of your\r
+   upstream every once in a while. This does only the first\r
+   half of <tt>git pull</tt> but does not merge. The head of the\r
+   public repository is stored in <tt>.git/refs/heads/origin</tt>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Use <tt>git cherry origin</tt> to see which ones of your patches\r
+   were accepted, and/or use <tt>git rebase origin</tt> to port your\r
+   unmerged changes forward to the updated upstream.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Use <tt>git format-patch origin</tt> to prepare patches for e-mail\r
+   submission to your upstream and send it out. Go back to\r
+   step 2. and continue.\r
+</p>\r
+</li>\r
+</ol>\r
+</div>\r
+<h2>Working with Others, Shared Repository Style</h2>\r
+<div class="sectionbody">\r
+<p>If you are coming from CVS background, the style of cooperation\r
+suggested in the previous section may be new to you. You do not\r
+have to worry. git supports "shared public repository" style of\r
+cooperation you are probably more familiar with as well.</p>\r
+<p>For this, set up a public repository on a machine that is\r
+reachable via SSH by people with "commit privileges".  Put the\r
+committers in the same user group and make the repository\r
+writable by that group.  Make sure their umasks are set up to\r
+allow group members to write into directories other members\r
+have created.</p>\r
+<p>You, as an individual committer, then:</p>\r
+<ul>\r
+<li>\r
+<p>\r
+First clone the shared repository to a local repository:\r
+</p>\r
+</li>\r
+</ul>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git clone repo.shared.xz:/pub/scm/project.git/ my-project\r
+$ cd my-project\r
+$ hack away</tt></pre>\r
+</div></div>\r
+<ul>\r
+<li>\r
+<p>\r
+Merge the work others might have done while you were hacking\r
+  away:\r
+</p>\r
+</li>\r
+</ul>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git pull origin\r
+$ test the merge result</tt></pre>\r
+</div></div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">\r
+<p>The first <tt>git clone</tt> would have placed the following in\r
+<tt>my-project/.git/remotes/origin</tt> file, and that's why this and\r
+the next step work.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>URL: repo.shared.xz:/pub/scm/project.git/ my-project\r
+Pull: master:origin</tt></pre>\r
+</div></div>\r
+</td>\r
+</tr></table>\r
+</div>\r
+<ul>\r
+<li>\r
+<p>\r
+push your work as the new head of the shared\r
+  repository.\r
+</p>\r
+</li>\r
+</ul>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git push origin master</tt></pre>\r
+</div></div>\r
+<p>If somebody else pushed into the same shared repository while\r
+you were working locally, <tt>git push</tt> in the last step would\r
+complain, telling you that the remote <tt>master</tt> head does not\r
+fast forward.  You need to pull and merge those other changes\r
+back before you push your work when it happens.</p>\r
+</div>\r
+<h2>Advanced Shared Repository Management</h2>\r
+<div class="sectionbody">\r
+<p>Being able to push into a shared repository means being able to\r
+write into it.  If your developers are coming over the network,\r
+this means you, as the repository administrator, need to give\r
+each of them an SSH access to the shared repository machine.</p>\r
+<p>In some cases, though, you may not want to give a normal shell\r
+account to them, but want to restrict them to be able to only\r
+do <tt>git push</tt> into the repository and nothing else.</p>\r
+<p>You can achieve this by setting the login shell of your\r
+developers on the shared repository host to <tt>git-shell</tt> program.</p>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Note</div>\r
+</td>\r
+<td class="content">Most likely you would also need to list <tt>git-shell</tt> program in\r
+<tt>/etc/shells</tt> file.</td>\r
+</tr></table>\r
+</div>\r
+<p>This restricts the set of commands that can be run from incoming\r
+SSH connection for these users to only <tt>receive-pack</tt> and\r
+<tt>upload-pack</tt>, so the only thing they can do are <tt>git fetch</tt> and\r
+<tt>git push</tt>.</p>\r
+<p>You still need to create UNIX user accounts for each developer,\r
+and put them in the same group.  Make sure that the repository\r
+shared among these developers is writable by that group.</p>\r
+<ol>\r
+<li>\r
+<p>\r
+Initializing the shared repository with <tt>git-init-db &#8212;shared</tt>\r
+helps somewhat.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Run the following in the shared repository:\r
+</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ chgrp -R $group repo.git\r
+$ find repo.git -type d -print | xargs chmod ug+rwx,g+s\r
+$ GIT_DIR=repo.git git repo-config core.sharedrepository true</tt></pre>\r
+</div></div>\r
+</li>\r
+</ol>\r
+<p>The above measures make sure that directories lazily created in\r
+<tt>$GIT_DIR</tt> are writable by group members.  You, as the\r
+repository administrator, are still responsible to make sure\r
+your developers belong to that shared repository group and set\r
+their umask to a value no stricter than 027 (i.e. at least allow\r
+reading and searching by group members).</p>\r
+<p>You can implement finer grained branch policies using update\r
+hooks.  There is a document ("control access to branches") in\r
+Documentation/howto by Carl Baldwin and JC outlining how to (1)\r
+limit access to branch per user, (2) forbid overwriting existing\r
+tags.</p>\r
+</div>\r
+<h2>Bundling your work together</h2>\r
+<div class="sectionbody">\r
+<p>It is likely that you will be working on more than one thing at\r
+a time.  It is easy to manage those more-or-less independent tasks\r
+using branches with git.</p>\r
+<p>We have already seen how branches work previously,\r
+with "fun and work" example using two branches.  The idea is the\r
+same if there are more than two branches.  Let's say you started\r
+out from "master" head, and have some new code in the "master"\r
+branch, and two independent fixes in the "commit-fix" and\r
+"diff-fix" branches:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git show-branch\r
+! [commit-fix] Fix commit message normalization.\r
+ ! [diff-fix] Fix rename detection.\r
+  * [master] Release candidate #1\r
+---\r
+ +  [diff-fix] Fix rename detection.\r
+ +  [diff-fix~1] Better common substring algorithm.\r
++   [commit-fix] Fix commit message normalization.\r
+  + [master] Release candidate #1\r
++++ [diff-fix~2] Pretty-print messages.</tt></pre>\r
+</div></div>\r
+<p>Both fixes are tested well, and at this point, you want to merge\r
+in both of them.  You could merge in <em>diff-fix</em> first and then\r
+<em>commit-fix</em> next, like this:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git merge 'Merge fix in diff-fix' master diff-fix\r
+$ git merge 'Merge fix in commit-fix' master commit-fix</tt></pre>\r
+</div></div>\r
+<p>Which would result in:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git show-branch\r
+! [commit-fix] Fix commit message normalization.\r
+ ! [diff-fix] Fix rename detection.\r
+  * [master] Merge fix in commit-fix\r
+---\r
+  + [master] Merge fix in commit-fix\r
++ + [commit-fix] Fix commit message normalization.\r
+  + [master~1] Merge fix in diff-fix\r
+ ++ [diff-fix] Fix rename detection.\r
+ ++ [diff-fix~1] Better common substring algorithm.\r
+  + [master~2] Release candidate #1\r
++++ [master~3] Pretty-print messages.</tt></pre>\r
+</div></div>\r
+<p>However, there is no particular reason to merge in one branch\r
+first and the other next, when what you have are a set of truly\r
+independent changes (if the order mattered, then they are not\r
+independent by definition).  You could instead merge those two\r
+branches into the current branch at once.  First let's undo what\r
+we just did and start over.  We would want to get the master\r
+branch before these two merges by resetting it to <em>master~2</em>:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git reset --hard master~2</tt></pre>\r
+</div></div>\r
+<p>You can make sure <em>git show-branch</em> matches the state before\r
+those two <em>git merge</em> you just did.  Then, instead of running\r
+two <em>git merge</em> commands in a row, you would pull these two\r
+branch heads (this is known as <em>making an Octopus</em>):</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git pull . commit-fix diff-fix\r
+$ git show-branch\r
+! [commit-fix] Fix commit message normalization.\r
+ ! [diff-fix] Fix rename detection.\r
+  * [master] Octopus merge of branches 'diff-fix' and 'commit-fix'\r
+---\r
+  + [master] Octopus merge of branches 'diff-fix' and 'commit-fix'\r
++ + [commit-fix] Fix commit message normalization.\r
+ ++ [diff-fix] Fix rename detection.\r
+ ++ [diff-fix~1] Better common substring algorithm.\r
+  + [master~1] Release candidate #1\r
++++ [master~2] Pretty-print messages.</tt></pre>\r
+</div></div>\r
+<p>Note that you should not do Octopus because you can.  An octopus\r
+is a valid thing to do and often makes it easier to view the\r
+commit history if you are pulling more than two independent\r
+changes at the same time.  However, if you have merge conflicts\r
+with any of the branches you are merging in and need to hand\r
+resolve, that is an indication that the development happened in\r
+those branches were not independent after all, and you should\r
+merge two at a time, documenting how you resolved the conflicts,\r
+and the reason why you preferred changes made in one side over\r
+the other.  Otherwise it would make the project history harder\r
+to follow, not easier.</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 27-Dec-2005 00:17:02 PDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/tutorial.txt b/tutorial.txt
new file mode 100644 (file)
index 0000000..edd91cb
--- /dev/null
@@ -0,0 +1,1820 @@
+A short git tutorial
+====================
+
+Introduction
+------------
+
+This is trying to be a short tutorial on setting up and using a git
+repository, mainly because being hands-on and using explicit examples is
+often the best way of explaining what is going on.
+
+In normal life, most people wouldn't use the "core" git programs
+directly, but rather script around them to make them more palatable. 
+Understanding the core git stuff may help some people get those scripts
+done, though, and it may also be instructive in helping people
+understand what it is that the higher-level helper scripts are actually
+doing. 
+
+The core git is often called "plumbing", with the prettier user
+interfaces on top of it called "porcelain". You may not want to use the
+plumbing directly very often, but it can be good to know what the
+plumbing does for when the porcelain isn't flushing.
+
+The material presented here often goes deep describing how things
+work internally.  If you are mostly interested in using git as a
+SCM, you can skip them during your first pass.
+
+[NOTE]
+And those "too deep" descriptions are often marked as Note.
+
+[NOTE]
+If you are already familiar with another version control system,
+like CVS, you may want to take a look at
+link:everyday.html[Everyday GIT in 20 commands or so] first
+before reading this.
+
+
+Creating a git repository
+-------------------------
+
+Creating a new git repository couldn't be easier: all git repositories start
+out empty, and the only thing you need to do is find yourself a
+subdirectory that you want to use as a working tree - either an empty
+one for a totally new project, or an existing working tree that you want
+to import into git. 
+
+For our first example, we're going to start a totally new repository from
+scratch, with no pre-existing files, and we'll call it `git-tutorial`.
+To start up, create a subdirectory for it, change into that
+subdirectory, and initialize the git infrastructure with `git-init-db`:
+
+------------------------------------------------
+$ mkdir git-tutorial
+$ cd git-tutorial
+$ git-init-db
+------------------------------------------------
+
+to which git will reply
+
+----------------
+defaulting to local storage area
+----------------
+
+which is just git's way of saying that you haven't been doing anything
+strange, and that it will have created a local `.git` directory setup for
+your new project. You will now have a `.git` directory, and you can
+inspect that with `ls`. For your new empty project, it should show you
+three entries, among other things:
+
+ - a symlink called `HEAD`, pointing to `refs/heads/master` (if your
+   platform does not have native symlinks, it is a file containing the
+   line "ref: refs/heads/master")
++
+Don't worry about the fact that the file that the `HEAD` link points to
+doesn't even exist yet -- you haven't created the commit that will
+start your `HEAD` development branch yet.
+
+ - a subdirectory called `objects`, which will contain all the
+   objects of your project. You should never have any real reason to
+   look at the objects directly, but you might want to know that these
+   objects are what contains all the real 'data' in your repository.
+
+ - a subdirectory called `refs`, which contains references to objects.
+
+In particular, the `refs` subdirectory will contain two other
+subdirectories, named `heads` and `tags` respectively. They do
+exactly what their names imply: they contain references to any number
+of different 'heads' of development (aka 'branches'), and to any
+'tags' that you have created to name specific versions in your
+repository.
+
+One note: the special `master` head is the default branch, which is
+why the `.git/HEAD` file was created as a symlink to it even if it
+doesn't yet exist. Basically, the `HEAD` link is supposed to always
+point to the branch you are working on right now, and you always
+start out expecting to work on the `master` branch.
+
+However, this is only a convention, and you can name your branches
+anything you want, and don't have to ever even 'have' a `master`
+branch. A number of the git tools will assume that `.git/HEAD` is
+valid, though.
+
+[NOTE]
+An 'object' is identified by its 160-bit SHA1 hash, aka 'object name',
+and a reference to an object is always the 40-byte hex
+representation of that SHA1 name. The files in the `refs`
+subdirectory are expected to contain these hex references
+(usually with a final `\'\n\'` at the end), and you should thus
+expect to see a number of 41-byte files containing these
+references in these `refs` subdirectories when you actually start
+populating your tree.
+
+[NOTE]
+An advanced user may want to take a look at the
+link:repository-layout.html[repository layout] document
+after finishing this tutorial.
+
+You have now created your first git repository. Of course, since it's
+empty, that's not very useful, so let's start populating it with data.
+
+
+Populating a git repository
+---------------------------
+
+We'll keep this simple and stupid, so we'll start off with populating a
+few trivial files just to get a feel for it.
+
+Start off with just creating any random files that you want to maintain
+in your git repository. We'll start off with a few bad examples, just to
+get a feel for how this works:
+
+------------------------------------------------
+$ echo "Hello World" >hello
+$ echo "Silly example" >example
+------------------------------------------------
+
+you have now created two files in your working tree (aka 'working directory'), but to
+actually check in your hard work, you will have to go through two steps:
+
+ - fill in the 'index' file (aka 'cache') with the information about your
+   working tree state.
+
+ - commit that index file as an object.
+
+The first step is trivial: when you want to tell git about any changes
+to your working tree, you use the `git-update-index` program. That
+program normally just takes a list of filenames you want to update, but
+to avoid trivial mistakes, it refuses to add new entries to the index
+(or remove existing ones) unless you explicitly tell it that you're
+adding a new entry with the `\--add` flag (or removing an entry with the
+`\--remove`) flag.
+
+So to populate the index with the two files you just created, you can do
+
+------------------------------------------------
+$ git-update-index --add hello example
+------------------------------------------------
+
+and you have now told git to track those two files.
+
+In fact, as you did that, if you now look into your object directory,
+you'll notice that git will have added two new objects to the object
+database. If you did exactly the steps above, you should now be able to do
+
+
+----------------
+$ ls .git/objects/??/*
+----------------
+
+and see two files:
+
+----------------
+.git/objects/55/7db03de997c86a4a028e1ebd3a1ceb225be238 
+.git/objects/f2/4c74a2e500f5ee1332c86b94199f52b1d1d962
+----------------
+
+which correspond with the objects with names of 557db... and f24c7..
+respectively.
+
+If you want to, you can use `git-cat-file` to look at those objects, but
+you'll have to use the object name, not the filename of the object:
+
+----------------
+$ git-cat-file -t 557db03de997c86a4a028e1ebd3a1ceb225be238
+----------------
+
+where the `-t` tells `git-cat-file` to tell you what the "type" of the
+object is. git will tell you that you have a "blob" object (ie just a
+regular file), and you can see the contents with
+
+----------------
+$ git-cat-file "blob" 557db03
+----------------
+
+which will print out "Hello World". The object 557db03 is nothing
+more than the contents of your file `hello`.
+
+[NOTE]
+Don't confuse that object with the file `hello` itself. The
+object is literally just those specific *contents* of the file, and
+however much you later change the contents in file `hello`, the object
+we just looked at will never change. Objects are immutable.
+
+[NOTE]
+The second example demonstrates that you can
+abbreviate the object name to only the first several
+hexadecimal digits in most places.
+
+Anyway, as we mentioned previously, you normally never actually take a
+look at the objects themselves, and typing long 40-character hex
+names is not something you'd normally want to do. The above digression
+was just to show that `git-update-index` did something magical, and
+actually saved away the contents of your files into the git object
+database.
+
+Updating the index did something else too: it created a `.git/index`
+file. This is the index that describes your current working tree, and
+something you should be very aware of. Again, you normally never worry
+about the index file itself, but you should be aware of the fact that
+you have not actually really "checked in" your files into git so far,
+you've only *told* git about them.
+
+However, since git knows about them, you can now start using some of the
+most basic git commands to manipulate the files or look at their status. 
+
+In particular, let's not even check in the two files into git yet, we'll
+start off by adding another line to `hello` first:
+
+------------------------------------------------
+$ echo "It's a new day for git" >>hello
+------------------------------------------------
+
+and you can now, since you told git about the previous state of `hello`, ask
+git what has changed in the tree compared to your old index, using the
+`git-diff-files` command:
+
+------------
+$ git-diff-files
+------------
+
+Oops. That wasn't very readable. It just spit out its own internal
+version of a `diff`, but that internal version really just tells you
+that it has noticed that "hello" has been modified, and that the old object
+contents it had have been replaced with something else.
+
+To make it readable, we can tell git-diff-files to output the
+differences as a patch, using the `-p` flag:
+
+------------
+$ git-diff-files -p
+diff --git a/hello b/hello
+index 557db03..263414f 100644
+--- a/hello
++++ b/hello
+@@ -1 +1,2 @@
+ Hello World
++It's a new day for git
+----
+
+i.e. the diff of the change we caused by adding another line to `hello`.
+
+In other words, `git-diff-files` always shows us the difference between
+what is recorded in the index, and what is currently in the working
+tree. That's very useful.
+
+A common shorthand for `git-diff-files -p` is to just write `git
+diff`, which will do the same thing.
+
+------------
+$ git diff
+diff --git a/hello b/hello
+index 557db03..263414f 100644
+--- a/hello
++++ b/hello
+@@ -1 +1,2 @@
+ Hello World
++It's a new day for git
+------------
+
+
+Committing git state
+--------------------
+
+Now, we want to go to the next stage in git, which is to take the files
+that git knows about in the index, and commit them as a real tree. We do
+that in two phases: creating a 'tree' object, and committing that 'tree'
+object as a 'commit' object together with an explanation of what the
+tree was all about, along with information of how we came to that state.
+
+Creating a tree object is trivial, and is done with `git-write-tree`.
+There are no options or other input: git-write-tree will take the
+current index state, and write an object that describes that whole
+index. In other words, we're now tying together all the different
+filenames with their contents (and their permissions), and we're
+creating the equivalent of a git "directory" object:
+
+------------------------------------------------
+$ git-write-tree
+------------------------------------------------
+
+and this will just output the name of the resulting tree, in this case
+(if you have done exactly as I've described) it should be
+
+----------------
+8988da15d077d4829fc51d8544c097def6644dbb
+----------------
+
+which is another incomprehensible object name. Again, if you want to,
+you can use `git-cat-file -t 8988d\...` to see that this time the object
+is not a "blob" object, but a "tree" object (you can also use
+`git-cat-file` to actually output the raw object contents, but you'll see
+mainly a binary mess, so that's less interesting).
+
+However -- normally you'd never use `git-write-tree` on its own, because
+normally you always commit a tree into a commit object using the
+`git-commit-tree` command. In fact, it's easier to not actually use
+`git-write-tree` on its own at all, but to just pass its result in as an
+argument to `git-commit-tree`.
+
+`git-commit-tree` normally takes several arguments -- it wants to know
+what the 'parent' of a commit was, but since this is the first commit
+ever in this new repository, and it has no parents, we only need to pass in
+the object name of the tree. However, `git-commit-tree`
+also wants to get a commit message
+on its standard input, and it will write out the resulting object name for the
+commit to its standard output.
+
+And this is where we create the `.git/refs/heads/master` file
+which is pointed at by `HEAD`. This file is supposed to contain
+the reference to the top-of-tree of the master branch, and since
+that's exactly what `git-commit-tree` spits out, we can do this
+all with a sequence of simple shell commands:
+
+------------------------------------------------
+$ tree=$(git-write-tree)
+$ commit=$(echo 'Initial commit' | git-commit-tree $tree)
+$ git-update-ref HEAD $commit
+------------------------------------------------
+
+which will say:
+
+----------------
+Committing initial tree 8988da15d077d4829fc51d8544c097def6644dbb
+----------------
+
+just to warn you about the fact that it created a totally new commit
+that is not related to anything else. Normally you do this only *once*
+for a project ever, and all later commits will be parented on top of an
+earlier commit, and you'll never see this "Committing initial tree"
+message ever again.
+
+Again, normally you'd never actually do this by hand. There is a
+helpful script called `git commit` that will do all of this for you. So
+you could have just written `git commit`
+instead, and it would have done the above magic scripting for you.
+
+
+Making a change
+---------------
+
+Remember how we did the `git-update-index` on file `hello` and then we
+changed `hello` afterward, and could compare the new state of `hello` with the
+state we saved in the index file? 
+
+Further, remember how I said that `git-write-tree` writes the contents
+of the *index* file to the tree, and thus what we just committed was in
+fact the *original* contents of the file `hello`, not the new ones. We did
+that on purpose, to show the difference between the index state, and the
+state in the working tree, and how they don't have to match, even
+when we commit things.
+
+As before, if we do `git-diff-files -p` in our git-tutorial project,
+we'll still see the same difference we saw last time: the index file
+hasn't changed by the act of committing anything. However, now that we
+have committed something, we can also learn to use a new command:
+`git-diff-index`.
+
+Unlike `git-diff-files`, which showed the difference between the index
+file and the working tree, `git-diff-index` shows the differences
+between a committed *tree* and either the index file or the working
+tree. In other words, `git-diff-index` wants a tree to be diffed
+against, and before we did the commit, we couldn't do that, because we
+didn't have anything to diff against. 
+
+But now we can do
+
+----------------
+$ git-diff-index -p HEAD
+----------------
+
+(where `-p` has the same meaning as it did in `git-diff-files`), and it
+will show us the same difference, but for a totally different reason. 
+Now we're comparing the working tree not against the index file,
+but against the tree we just wrote. It just so happens that those two
+are obviously the same, so we get the same result.
+
+Again, because this is a common operation, you can also just shorthand
+it with
+
+----------------
+$ git diff HEAD
+----------------
+
+which ends up doing the above for you.
+
+In other words, `git-diff-index` normally compares a tree against the
+working tree, but when given the `\--cached` flag, it is told to
+instead compare against just the index cache contents, and ignore the
+current working tree state entirely. Since we just wrote the index
+file to HEAD, doing `git-diff-index \--cached -p HEAD` should thus return
+an empty set of differences, and that's exactly what it does. 
+
+[NOTE]
+================
+`git-diff-index` really always uses the index for its
+comparisons, and saying that it compares a tree against the working
+tree is thus not strictly accurate. In particular, the list of
+files to compare (the "meta-data") *always* comes from the index file,
+regardless of whether the `\--cached` flag is used or not. The `\--cached`
+flag really only determines whether the file *contents* to be compared
+come from the working tree or not.
+
+This is not hard to understand, as soon as you realize that git simply
+never knows (or cares) about files that it is not told about
+explicitly. git will never go *looking* for files to compare, it
+expects you to tell it what the files are, and that's what the index
+is there for.
+================
+
+However, our next step is to commit the *change* we did, and again, to
+understand what's going on, keep in mind the difference between "working
+tree contents", "index file" and "committed tree". We have changes
+in the working tree that we want to commit, and we always have to
+work through the index file, so the first thing we need to do is to
+update the index cache:
+
+------------------------------------------------
+$ git-update-index hello
+------------------------------------------------
+
+(note how we didn't need the `\--add` flag this time, since git knew
+about the file already).
+
+Note what happens to the different `git-diff-\*` versions here. After
+we've updated `hello` in the index, `git-diff-files -p` now shows no
+differences, but `git-diff-index -p HEAD` still *does* show that the
+current state is different from the state we committed. In fact, now
+`git-diff-index` shows the same difference whether we use the `--cached`
+flag or not, since now the index is coherent with the working tree.
+
+Now, since we've updated `hello` in the index, we can commit the new
+version. We could do it by writing the tree by hand again, and
+committing the tree (this time we'd have to use the `-p HEAD` flag to
+tell commit that the HEAD was the *parent* of the new commit, and that
+this wasn't an initial commit any more), but you've done that once
+already, so let's just use the helpful script this time:
+
+------------------------------------------------
+$ git commit
+------------------------------------------------
+
+which starts an editor for you to write the commit message and tells you
+a bit about what you have done.
+
+Write whatever message you want, and all the lines that start with '#'
+will be pruned out, and the rest will be used as the commit message for
+the change. If you decide you don't want to commit anything after all at
+this point (you can continue to edit things and update the index), you
+can just leave an empty message. Otherwise `git commit` will commit
+the change for you.
+
+You've now made your first real git commit. And if you're interested in
+looking at what `git commit` really does, feel free to investigate:
+it's a few very simple shell scripts to generate the helpful (?) commit
+message headers, and a few one-liners that actually do the
+commit itself (`git-commit`).
+
+
+Inspecting Changes
+------------------
+
+While creating changes is useful, it's even more useful if you can tell
+later what changed. The most useful command for this is another of the
+`diff` family, namely `git-diff-tree`.
+
+`git-diff-tree` can be given two arbitrary trees, and it will tell you the
+differences between them. Perhaps even more commonly, though, you can
+give it just a single commit object, and it will figure out the parent
+of that commit itself, and show the difference directly. Thus, to get
+the same diff that we've already seen several times, we can now do
+
+----------------
+$ git-diff-tree -p HEAD
+----------------
+
+(again, `-p` means to show the difference as a human-readable patch),
+and it will show what the last commit (in `HEAD`) actually changed.
+
+[NOTE]
+============
+Here is an ASCII art by Jon Loeliger that illustrates how
+various diff-\* commands compare things.
+
+                      diff-tree
+                       +----+
+                       |    |
+                       |    |
+                       V    V
+                    +-----------+
+                    | Object DB |
+                    |  Backing  |
+                    |   Store   |
+                    +-----------+
+                      ^    ^
+                      |    |
+                      |    |  diff-index --cached
+                      |    |
+          diff-index  |    V
+                      |  +-----------+
+                      |  |   Index   |
+                      |  |  "cache"  |
+                      |  +-----------+
+                      |    ^
+                      |    |
+                      |    |  diff-files
+                      |    |
+                      V    V
+                    +-----------+
+                    |  Working  |
+                    | Directory |
+                    +-----------+
+============
+
+More interestingly, you can also give `git-diff-tree` the `-v` flag, which
+tells it to also show the commit message and author and date of the
+commit, and you can tell it to show a whole series of diffs.
+Alternatively, you can tell it to be "silent", and not show the diffs at
+all, but just show the actual commit message.
+
+In fact, together with the `git-rev-list` program (which generates a
+list of revisions), `git-diff-tree` ends up being a veritable fount of
+changes. A trivial (but very useful) script called `git-whatchanged` is
+included with git which does exactly this, and shows a log of recent
+activities.
+
+To see the whole history of our pitiful little git-tutorial project, you
+can do
+
+----------------
+$ git log
+----------------
+
+which shows just the log messages, or if we want to see the log together
+with the associated patches use the more complex (and much more
+powerful)
+
+----------------
+$ git-whatchanged -p --root
+----------------
+
+and you will see exactly what has changed in the repository over its
+short history. 
+
+[NOTE]
+The `\--root` flag is a flag to `git-diff-tree` to tell it to
+show the initial aka 'root' commit too. Normally you'd probably not
+want to see the initial import diff, but since the tutorial project
+was started from scratch and is so small, we use it to make the result
+a bit more interesting.
+
+With that, you should now be having some inkling of what git does, and
+can explore on your own.
+
+[NOTE]
+Most likely, you are not directly using the core
+git Plumbing commands, but using Porcelain like Cogito on top
+of it. Cogito works a bit differently and you usually do not
+have to run `git-update-index` yourself for changed files (you
+do tell underlying git about additions and removals via
+`cg-add` and `cg-rm` commands). Just before you make a commit
+with `cg-commit`, Cogito figures out which files you modified,
+and runs `git-update-index` on them for you.
+
+
+Tagging a version
+-----------------
+
+In git, there are two kinds of tags, a "light" one, and an "annotated tag".
+
+A "light" tag is technically nothing more than a branch, except we put
+it in the `.git/refs/tags/` subdirectory instead of calling it a `head`.
+So the simplest form of tag involves nothing more than
+
+------------------------------------------------
+$ git tag my-first-tag
+------------------------------------------------
+
+which just writes the current `HEAD` into the `.git/refs/tags/my-first-tag`
+file, after which point you can then use this symbolic name for that
+particular state. You can, for example, do
+
+----------------
+$ git diff my-first-tag
+----------------
+
+to diff your current state against that tag (which at this point will
+obviously be an empty diff, but if you continue to develop and commit
+stuff, you can use your tag as an "anchor-point" to see what has changed
+since you tagged it.
+
+An "annotated tag" is actually a real git object, and contains not only a
+pointer to the state you want to tag, but also a small tag name and
+message, along with optionally a PGP signature that says that yes,
+you really did
+that tag. You create these annotated tags with either the `-a` or
+`-s` flag to `git tag`:
+
+----------------
+$ git tag -s <tagname>
+----------------
+
+which will sign the current `HEAD` (but you can also give it another
+argument that specifies the thing to tag, ie you could have tagged the
+current `mybranch` point by using `git tag <tagname> mybranch`).
+
+You normally only do signed tags for major releases or things
+like that, while the light-weight tags are useful for any marking you
+want to do -- any time you decide that you want to remember a certain
+point, just create a private tag for it, and you have a nice symbolic
+name for the state at that point.
+
+
+Copying repositories
+--------------------
+
+git repositories are normally totally self-sufficient and relocatable
+Unlike CVS, for example, there is no separate notion of
+"repository" and "working tree". A git repository normally *is* the
+working tree, with the local git information hidden in the `.git`
+subdirectory. There is nothing else. What you see is what you got.
+
+[NOTE]
+You can tell git to split the git internal information from
+the directory that it tracks, but we'll ignore that for now: it's not
+how normal projects work, and it's really only meant for special uses.
+So the mental model of "the git information is always tied directly to
+the working tree that it describes" may not be technically 100%
+accurate, but it's a good model for all normal use.
+
+This has two implications: 
+
+ - if you grow bored with the tutorial repository you created (or you've
+   made a mistake and want to start all over), you can just do simple
++
+----------------
+$ rm -rf git-tutorial
+----------------
++
+and it will be gone. There's no external repository, and there's no
+history outside the project you created.
+
+ - if you want to move or duplicate a git repository, you can do so. There
+   is `git clone` command, but if all you want to do is just to
+   create a copy of your repository (with all the full history that
+   went along with it), you can do so with a regular
+   `cp -a git-tutorial new-git-tutorial`.
++
+Note that when you've moved or copied a git repository, your git index
+file (which caches various information, notably some of the "stat"
+information for the files involved) will likely need to be refreshed.
+So after you do a `cp -a` to create a new copy, you'll want to do
++
+----------------
+$ git-update-index --refresh
+----------------
++
+in the new repository to make sure that the index file is up-to-date.
+
+Note that the second point is true even across machines. You can
+duplicate a remote git repository with *any* regular copy mechanism, be it
+`scp`, `rsync` or `wget`.
+
+When copying a remote repository, you'll want to at a minimum update the
+index cache when you do this, and especially with other peoples'
+repositories you often want to make sure that the index cache is in some
+known state (you don't know *what* they've done and not yet checked in),
+so usually you'll precede the `git-update-index` with a
+
+----------------
+$ git-read-tree --reset HEAD
+$ git-update-index --refresh
+----------------
+
+which will force a total index re-build from the tree pointed to by `HEAD`.
+It resets the index contents to `HEAD`, and then the `git-update-index`
+makes sure to match up all index entries with the checked-out files.
+If the original repository had uncommitted changes in its
+working tree, `git-update-index --refresh` notices them and
+tells you they need to be updated.
+
+The above can also be written as simply
+
+----------------
+$ git reset
+----------------
+
+and in fact a lot of the common git command combinations can be scripted
+with the `git xyz` interfaces.  You can learn things by just looking
+at what the various git scripts do.  For example, `git reset` is the
+above two lines implemented in `git-reset`, but some things like
+`git status` and `git commit` are slightly more complex scripts around
+the basic git commands.
+
+Many (most?) public remote repositories will not contain any of
+the checked out files or even an index file, and will *only* contain the
+actual core git files. Such a repository usually doesn't even have the
+`.git` subdirectory, but has all the git files directly in the
+repository. 
+
+To create your own local live copy of such a "raw" git repository, you'd
+first create your own subdirectory for the project, and then copy the
+raw repository contents into the `.git` directory. For example, to
+create your own copy of the git repository, you'd do the following
+
+----------------
+$ mkdir my-git
+$ cd my-git
+$ rsync -rL rsync://rsync.kernel.org/pub/scm/git/git.git/ .git
+----------------
+
+followed by 
+
+----------------
+$ git-read-tree HEAD
+----------------
+
+to populate the index. However, now you have populated the index, and
+you have all the git internal files, but you will notice that you don't
+actually have any of the working tree files to work on. To get
+those, you'd check them out with
+
+----------------
+$ git-checkout-index -u -a
+----------------
+
+where the `-u` flag means that you want the checkout to keep the index
+up-to-date (so that you don't have to refresh it afterward), and the
+`-a` flag means "check out all files" (if you have a stale copy or an
+older version of a checked out tree you may also need to add the `-f`
+flag first, to tell git-checkout-index to *force* overwriting of any old
+files). 
+
+Again, this can all be simplified with
+
+----------------
+$ git clone rsync://rsync.kernel.org/pub/scm/git/git.git/ my-git
+$ cd my-git
+$ git checkout
+----------------
+
+which will end up doing all of the above for you.
+
+You have now successfully copied somebody else's (mine) remote
+repository, and checked it out. 
+
+
+Creating a new branch
+---------------------
+
+Branches in git are really nothing more than pointers into the git
+object database from within the `.git/refs/` subdirectory, and as we
+already discussed, the `HEAD` branch is nothing but a symlink to one of
+these object pointers. 
+
+You can at any time create a new branch by just picking an arbitrary
+point in the project history, and just writing the SHA1 name of that
+object into a file under `.git/refs/heads/`. You can use any filename you
+want (and indeed, subdirectories), but the convention is that the
+"normal" branch is called `master`. That's just a convention, though,
+and nothing enforces it. 
+
+To show that as an example, let's go back to the git-tutorial repository we
+used earlier, and create a branch in it. You do that by simply just
+saying that you want to check out a new branch:
+
+------------
+$ git checkout -b mybranch
+------------
+
+will create a new branch based at the current `HEAD` position, and switch
+to it. 
+
+[NOTE]
+================================================
+If you make the decision to start your new branch at some
+other point in the history than the current `HEAD`, you can do so by
+just telling `git checkout` what the base of the checkout would be.
+In other words, if you have an earlier tag or branch, you'd just do
+
+------------
+$ git checkout -b mybranch earlier-commit
+------------
+
+and it would create the new branch `mybranch` at the earlier commit,
+and check out the state at that time.
+================================================
+
+You can always just jump back to your original `master` branch by doing
+
+------------
+$ git checkout master
+------------
+
+(or any other branch-name, for that matter) and if you forget which
+branch you happen to be on, a simple
+
+------------
+$ ls -l .git/HEAD
+------------
+
+will tell you where it's pointing (Note that on platforms with bad or no
+symlink support, you have to execute
+
+------------
+$ cat .git/HEAD
+------------
+
+instead). To get the list of branches you have, you can say
+
+------------
+$ git branch
+------------
+
+which is nothing more than a simple script around `ls .git/refs/heads`.
+There will be asterisk in front of the branch you are currently on.
+
+Sometimes you may wish to create a new branch _without_ actually
+checking it out and switching to it. If so, just use the command
+
+------------
+$ git branch <branchname> [startingpoint]
+------------
+
+which will simply _create_ the branch, but will not do anything further. 
+You can then later -- once you decide that you want to actually develop
+on that branch -- switch to that branch with a regular `git checkout`
+with the branchname as the argument.
+
+
+Merging two branches
+--------------------
+
+One of the ideas of having a branch is that you do some (possibly
+experimental) work in it, and eventually merge it back to the main
+branch. So assuming you created the above `mybranch` that started out
+being the same as the original `master` branch, let's make sure we're in
+that branch, and do some work there.
+
+------------------------------------------------
+$ git checkout mybranch
+$ echo "Work, work, work" >>hello
+$ git commit -m 'Some work.' hello
+------------------------------------------------
+
+Here, we just added another line to `hello`, and we used a shorthand for
+doing both `git-update-index hello` and `git commit` by just giving the
+filename directly to `git commit`. The `-m` flag is to give the
+commit log message from the command line.
+
+Now, to make it a bit more interesting, let's assume that somebody else
+does some work in the original branch, and simulate that by going back
+to the master branch, and editing the same file differently there:
+
+------------
+$ git checkout master
+------------
+
+Here, take a moment to look at the contents of `hello`, and notice how they
+don't contain the work we just did in `mybranch` -- because that work
+hasn't happened in the `master` branch at all. Then do
+
+------------
+$ echo "Play, play, play" >>hello
+$ echo "Lots of fun" >>example
+$ git commit -m 'Some fun.' hello example
+------------
+
+since the master branch is obviously in a much better mood.
+
+Now, you've got two branches, and you decide that you want to merge the
+work done. Before we do that, let's introduce a cool graphical tool that
+helps you view what's going on:
+
+----------------
+$ gitk --all
+----------------
+
+will show you graphically both of your branches (that's what the `\--all`
+means: normally it will just show you your current `HEAD`) and their
+histories. You can also see exactly how they came to be from a common
+source. 
+
+Anyway, let's exit `gitk` (`^Q` or the File menu), and decide that we want
+to merge the work we did on the `mybranch` branch into the `master`
+branch (which is currently our `HEAD` too). To do that, there's a nice
+script called `git merge`, which wants to know which branches you want
+to resolve and what the merge is all about:
+
+------------
+$ git merge "Merge work in mybranch" HEAD mybranch
+------------
+
+where the first argument is going to be used as the commit message if
+the merge can be resolved automatically.
+
+Now, in this case we've intentionally created a situation where the
+merge will need to be fixed up by hand, though, so git will do as much
+of it as it can automatically (which in this case is just merge the `example`
+file, which had no differences in the `mybranch` branch), and say:
+
+----------------
+       Trying really trivial in-index merge...
+       fatal: Merge requires file-level merging
+       Nope.
+       ...
+       Auto-merging hello 
+       CONFLICT (content): Merge conflict in hello 
+       Automatic merge failed/prevented; fix up by hand
+----------------
+
+which is way too verbose, but it basically tells you that it failed the
+really trivial merge ("Simple merge") and did an "Automatic merge"
+instead, but that too failed due to conflicts in `hello`.
+
+Not to worry. It left the (trivial) conflict in `hello` in the same form you
+should already be well used to if you've ever used CVS, so let's just
+open `hello` in our editor (whatever that may be), and fix it up somehow.
+I'd suggest just making it so that `hello` contains all four lines:
+
+------------
+Hello World
+It's a new day for git
+Play, play, play
+Work, work, work
+------------
+
+and once you're happy with your manual merge, just do a
+
+------------
+$ git commit hello
+------------
+
+which will very loudly warn you that you're now committing a merge
+(which is correct, so never mind), and you can write a small merge
+message about your adventures in git-merge-land.
+
+After you're done, start up `gitk \--all` to see graphically what the
+history looks like. Notice that `mybranch` still exists, and you can
+switch to it, and continue to work with it if you want to. The
+`mybranch` branch will not contain the merge, but next time you merge it
+from the `master` branch, git will know how you merged it, so you'll not
+have to do _that_ merge again.
+
+Another useful tool, especially if you do not always work in X-Window
+environment, is `git show-branch`.
+
+------------------------------------------------
+$ git show-branch master mybranch
+* [master] Merge work in mybranch
+ ! [mybranch] Some work.
+--
++  [master] Merge work in mybranch
+++ [mybranch] Some work.
+------------------------------------------------
+
+The first two lines indicate that it is showing the two branches
+and the first line of the commit log message from their
+top-of-the-tree commits, you are currently on `master` branch
+(notice the asterisk `*` character), and the first column for
+the later output lines is used to show commits contained in the
+`master` branch, and the second column for the `mybranch`
+branch. Three commits are shown along with their log messages.
+All of them have plus `+` characters in the first column, which
+means they are now part of the `master` branch. Only the "Some
+work" commit has the plus `+` character in the second column,
+because `mybranch` has not been merged to incorporate these
+commits from the master branch.  The string inside brackets
+before the commit log message is a short name you can use to
+name the commit.  In the above example, 'master' and 'mybranch'
+are branch heads.  'master~1' is the first parent of 'master'
+branch head.  Please see 'git-rev-parse' documentation if you
+see more complex cases.
+
+Now, let's pretend you are the one who did all the work in
+`mybranch`, and the fruit of your hard work has finally been merged
+to the `master` branch. Let's go back to `mybranch`, and run
+resolve to get the "upstream changes" back to your branch.
+
+------------
+$ git checkout mybranch
+$ git merge "Merge upstream changes." HEAD master
+------------
+
+This outputs something like this (the actual commit object names
+would be different)
+
+----------------
+Updating from ae3a2da... to a80b4aa....
+ example |    1 +
+ hello   |    1 +
+ 2 files changed, 2 insertions(+), 0 deletions(-)
+----------------
+
+Because your branch did not contain anything more than what are
+already merged into the `master` branch, the resolve operation did
+not actually do a merge. Instead, it just updated the top of
+the tree of your branch to that of the `master` branch. This is
+often called 'fast forward' merge.
+
+You can run `gitk \--all` again to see how the commit ancestry
+looks like, or run `show-branch`, which tells you this.
+
+------------------------------------------------
+$ git show-branch master mybranch
+! [master] Merge work in mybranch
+ * [mybranch] Merge work in mybranch
+--
+++ [master] Merge work in mybranch
+------------------------------------------------
+
+
+Merging external work
+---------------------
+
+It's usually much more common that you merge with somebody else than
+merging with your own branches, so it's worth pointing out that git
+makes that very easy too, and in fact, it's not that different from
+doing a `git merge`. In fact, a remote merge ends up being nothing
+more than "fetch the work from a remote repository into a temporary tag"
+followed by a `git merge`.
+
+Fetching from a remote repository is done by, unsurprisingly,
+`git fetch`:
+
+----------------
+$ git fetch <remote-repository>
+----------------
+
+One of the following transports can be used to name the
+repository to download from:
+
+Rsync::
+       `rsync://remote.machine/path/to/repo.git/`
++
+Rsync transport is usable for both uploading and downloading,
+but is completely unaware of what git does, and can produce
+unexpected results when you download from the public repository
+while the repository owner is uploading into it via `rsync`
+transport.  Most notably, it could update the files under
+`refs/` which holds the object name of the topmost commits
+before uploading the files in `objects/` -- the downloader would
+obtain head commit object name while that object itself is still
+not available in the repository.  For this reason, it is
+considered deprecated.
+
+SSH::
+       `remote.machine:/path/to/repo.git/` or
++
+`ssh://remote.machine/path/to/repo.git/`
++
+This transport can be used for both uploading and downloading,
+and requires you to have a log-in privilege over `ssh` to the
+remote machine.  It finds out the set of objects the other side
+lacks by exchanging the head commits both ends have and
+transfers (close to) minimum set of objects.  It is by far the
+most efficient way to exchange git objects between repositories.
+
+Local directory::
+       `/path/to/repo.git/`
++
+This transport is the same as SSH transport but uses `sh` to run
+both ends on the local machine instead of running other end on
+the remote machine via `ssh`.
+
+git Native::
+       `git://remote.machine/path/to/repo.git/`
++
+This transport was designed for anonymous downloading.  Like SSH
+transport, it finds out the set of objects the downstream side
+lacks and transfers (close to) minimum set of objects.
+
+HTTP(S)::
+       `http://remote.machine/path/to/repo.git/`
++
+Downloader from http and https URL
+first obtains the topmost commit object name from the remote site
+by looking at the specified refname under `repo.git/refs/` directory,
+and then tries to obtain the
+commit object by downloading from `repo.git/objects/xx/xxx\...`
+using the object name of that commit object.  Then it reads the
+commit object to find out its parent commits and the associate
+tree object; it repeats this process until it gets all the
+necessary objects.  Because of this behaviour, they are
+sometimes also called 'commit walkers'.
++
+The 'commit walkers' are sometimes also called 'dumb
+transports', because they do not require any git aware smart
+server like git Native transport does.  Any stock HTTP server
+that does not even support directory index would suffice.  But
+you must prepare your repository with `git-update-server-info`
+to help dumb transport downloaders.
++
+There are (confusingly enough) `git-ssh-fetch` and `git-ssh-upload`
+programs, which are 'commit walkers'; they outlived their
+usefulness when git Native and SSH transports were introduced,
+and not used by `git pull` or `git push` scripts.
+
+Once you fetch from the remote repository, you `resolve` that
+with your current branch.
+
+However -- it's such a common thing to `fetch` and then
+immediately `resolve`, that it's called `git pull`, and you can
+simply do
+
+----------------
+$ git pull <remote-repository>
+----------------
+
+and optionally give a branch-name for the remote end as a second
+argument.
+
+[NOTE]
+You could do without using any branches at all, by
+keeping as many local repositories as you would like to have
+branches, and merging between them with `git pull`, just like
+you merge between branches. The advantage of this approach is
+that it lets you keep set of files for each `branch` checked
+out and you may find it easier to switch back and forth if you
+juggle multiple lines of development simultaneously. Of
+course, you will pay the price of more disk usage to hold
+multiple working trees, but disk space is cheap these days.
+
+[NOTE]
+You could even pull from your own repository by
+giving '.' as <remote-repository> parameter to `git pull`.  This
+is useful when you want to merge a local branch (or more, if you
+are making an Octopus) into the current branch.
+
+It is likely that you will be pulling from the same remote
+repository from time to time. As a short hand, you can store
+the remote repository URL in a file under .git/remotes/
+directory, like this:
+
+------------------------------------------------
+$ mkdir -p .git/remotes/
+$ cat >.git/remotes/linus <<\EOF
+URL: http://www.kernel.org/pub/scm/git/git.git/
+EOF
+------------------------------------------------
+
+and use the filename to `git pull` instead of the full URL.
+The URL specified in such file can even be a prefix
+of a full URL, like this:
+
+------------------------------------------------
+$ cat >.git/remotes/jgarzik <<\EOF
+URL: http://www.kernel.org/pub/scm/linux/git/jgarzik/
+EOF
+------------------------------------------------
+
+
+Examples.
+
+. `git pull linus`
+. `git pull linus tag v0.99.1`
+. `git pull jgarzik/netdev-2.6.git/ e100`
+
+the above are equivalent to:
+
+. `git pull http://www.kernel.org/pub/scm/git/git.git/ HEAD`
+. `git pull http://www.kernel.org/pub/scm/git/git.git/ tag v0.99.1`
+. `git pull http://www.kernel.org/pub/.../jgarzik/netdev-2.6.git e100`
+
+
+How does the merge work?
+------------------------
+
+We said this tutorial shows what plumbing does to help you cope
+with the porcelain that isn't flushing, but we so far did not
+talk about how the merge really works.  If you are following
+this tutorial the first time, I'd suggest to skip to "Publishing
+your work" section and come back here later.
+
+OK, still with me?  To give us an example to look at, let's go
+back to the earlier repository with "hello" and "example" file,
+and bring ourselves back to the pre-merge state:
+
+------------
+$ git show-branch --more=3 master mybranch
+! [master] Merge work in mybranch
+ * [mybranch] Merge work in mybranch
+--
+++ [master] Merge work in mybranch
+++ [master^2] Some work.
+++ [master^] Some fun.
+------------
+
+Remember, before running `git merge`, our `master` head was at
+"Some fun." commit, while our `mybranch` head was at "Some
+work." commit.
+
+------------
+$ git checkout mybranch
+$ git reset --hard master^2
+$ git checkout master
+$ git reset --hard master^
+------------
+
+After rewinding, the commit structure should look like this:
+
+------------
+$ git show-branch
+* [master] Some fun.
+ ! [mybranch] Some work.
+--
+ + [mybranch] Some work.
++  [master] Some fun.
+++ [mybranch^] New day.
+------------
+
+Now we are ready to experiment with the merge by hand.
+
+`git merge` command, when merging two branches, uses 3-way merge
+algorithm.  First, it finds the common ancestor between them.
+The command it uses is `git-merge-base`:
+
+------------
+$ mb=$(git-merge-base HEAD mybranch)
+------------
+
+The command writes the commit object name of the common ancestor
+to the standard output, so we captured its output to a variable,
+because we will be using it in the next step.  BTW, the common
+ancestor commit is the "New day." commit in this case.  You can
+tell it by:
+
+------------
+$ git-name-rev $mb
+my-first-tag
+------------
+
+After finding out a common ancestor commit, the second step is
+this:
+
+------------
+$ git-read-tree -m -u $mb HEAD mybranch
+------------
+
+This is the same `git-read-tree` command we have already seen,
+but it takes three trees, unlike previous examples.  This reads
+the contents of each tree into different 'stage' in the index
+file (the first tree goes to stage 1, the second stage 2,
+etc.).  After reading three trees into three stages, the paths
+that are the same in all three stages are 'collapsed' into stage
+0.  Also paths that are the same in two of three stages are
+collapsed into stage 0, taking the SHA1 from either stage 2 or
+stage 3, whichever is different from stage 1 (i.e. only one side
+changed from the common ancestor).
+
+After 'collapsing' operation, paths that are different in three
+trees are left in non-zero stages.  At this point, you can
+inspect the index file with this command:
+
+------------
+$ git-ls-files --stage
+100644 7f8b141b65fdcee47321e399a2598a235a032422 0      example
+100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1      hello
+100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2      hello
+100644 cc44c73eb783565da5831b4d820c962954019b69 3      hello
+------------
+
+In our example of only two files, we did not have unchanged
+files so only 'example' resulted in collapsing, but in real-life
+large projects, only small number of files change in one commit,
+and this 'collapsing' tends to trivially merge most of the paths
+fairly quickly, leaving only a handful the real changes in non-zero
+stages.
+
+To look at only non-zero stages, use `\--unmerged` flag:
+
+------------
+$ git-ls-files --unmerged
+100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1      hello
+100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2      hello
+100644 cc44c73eb783565da5831b4d820c962954019b69 3      hello
+------------
+
+The next step of merging is to merge these three versions of the
+file, using 3-way merge.  This is done by giving
+`git-merge-one-file` command as one of the arguments to
+`git-merge-index` command:
+
+------------
+$ git-merge-index git-merge-one-file hello
+Auto-merging hello.
+merge: warning: conflicts during merge
+ERROR: Merge conflict in hello.
+fatal: merge program failed
+------------
+
+`git-merge-one-file` script is called with parameters to
+describe those three versions, and is responsible to leave the
+merge results in the working tree.
+It is a fairly straightforward shell script, and
+eventually calls `merge` program from RCS suite to perform a
+file-level 3-way merge.  In this case, `merge` detects
+conflicts, and the merge result with conflict marks is left in
+the working tree..  This can be seen if you run `ls-files
+--stage` again at this point:
+
+------------
+$ git-ls-files --stage
+100644 7f8b141b65fdcee47321e399a2598a235a032422 0      example
+100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1      hello
+100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2      hello
+100644 cc44c73eb783565da5831b4d820c962954019b69 3      hello
+------------
+
+This is the state of the index file and the working file after
+`git merge` returns control back to you, leaving the conflicting
+merge for you to resolve.  Notice that the path `hello` is still
+unmerged, and what you see with `git diff` at this point is
+differences since stage 2 (i.e. your version).
+
+
+Publishing your work
+--------------------
+
+So we can use somebody else's work from a remote repository; but
+how can *you* prepare a repository to let other people pull from
+it?
+
+Your do your real work in your working tree that has your
+primary repository hanging under it as its `.git` subdirectory.
+You *could* make that repository accessible remotely and ask
+people to pull from it, but in practice that is not the way
+things are usually done. A recommended way is to have a public
+repository, make it reachable by other people, and when the
+changes you made in your primary working tree are in good shape,
+update the public repository from it. This is often called
+'pushing'.
+
+[NOTE]
+This public repository could further be mirrored, and that is
+how git repositories at `kernel.org` are managed.
+
+Publishing the changes from your local (private) repository to
+your remote (public) repository requires a write privilege on
+the remote machine. You need to have an SSH account there to
+run a single command, `git-receive-pack`.
+
+First, you need to create an empty repository on the remote
+machine that will house your public repository. This empty
+repository will be populated and be kept up-to-date by pushing
+into it later. Obviously, this repository creation needs to be
+done only once.
+
+[NOTE]
+`git push` uses a pair of programs,
+`git-send-pack` on your local machine, and `git-receive-pack`
+on the remote machine. The communication between the two over
+the network internally uses an SSH connection.
+
+Your private repository's git directory is usually `.git`, but
+your public repository is often named after the project name,
+i.e. `<project>.git`. Let's create such a public repository for
+project `my-git`. After logging into the remote machine, create
+an empty directory:
+
+------------
+$ mkdir my-git.git
+------------
+
+Then, make that directory into a git repository by running
+`git init-db`, but this time, since its name is not the usual
+`.git`, we do things slightly differently:
+
+------------
+$ GIT_DIR=my-git.git git-init-db
+------------
+
+Make sure this directory is available for others you want your
+changes to be pulled by via the transport of your choice. Also
+you need to make sure that you have the `git-receive-pack`
+program on the `$PATH`.
+
+[NOTE]
+Many installations of sshd do not invoke your shell as the login
+shell when you directly run programs; what this means is that if
+your login shell is `bash`, only `.bashrc` is read and not
+`.bash_profile`. As a workaround, make sure `.bashrc` sets up
+`$PATH` so that you can run `git-receive-pack` program.
+
+[NOTE]
+If you plan to publish this repository to be accessed over http,
+you should do `chmod +x my-git.git/hooks/post-update` at this
+point.  This makes sure that every time you push into this
+repository, `git-update-server-info` is run.
+
+Your "public repository" is now ready to accept your changes.
+Come back to the machine you have your private repository. From
+there, run this command:
+
+------------
+$ git push <public-host>:/path/to/my-git.git master
+------------
+
+This synchronizes your public repository to match the named
+branch head (i.e. `master` in this case) and objects reachable
+from them in your current repository.
+
+As a real example, this is how I update my public git
+repository. Kernel.org mirror network takes care of the
+propagation to other publicly visible machines:
+
+------------
+$ git push master.kernel.org:/pub/scm/git/git.git/ 
+------------
+
+
+Packing your repository
+-----------------------
+
+Earlier, we saw that one file under `.git/objects/??/` directory
+is stored for each git object you create. This representation
+is efficient to create atomically and safely, but
+not so convenient to transport over the network. Since git objects are
+immutable once they are created, there is a way to optimize the
+storage by "packing them together". The command
+
+------------
+$ git repack
+------------
+
+will do it for you. If you followed the tutorial examples, you
+would have accumulated about 17 objects in `.git/objects/??/`
+directories by now. `git repack` tells you how many objects it
+packed, and stores the packed file in `.git/objects/pack`
+directory.
+
+[NOTE]
+You will see two files, `pack-\*.pack` and `pack-\*.idx`,
+in `.git/objects/pack` directory. They are closely related to
+each other, and if you ever copy them by hand to a different
+repository for whatever reason, you should make sure you copy
+them together. The former holds all the data from the objects
+in the pack, and the latter holds the index for random
+access.
+
+If you are paranoid, running `git-verify-pack` command would
+detect if you have a corrupt pack, but do not worry too much.
+Our programs are always perfect ;-).
+
+Once you have packed objects, you do not need to leave the
+unpacked objects that are contained in the pack file anymore.
+
+------------
+$ git prune-packed
+------------
+
+would remove them for you.
+
+You can try running `find .git/objects -type f` before and after
+you run `git prune-packed` if you are curious.  Also `git
+count-objects` would tell you how many unpacked objects are in
+your repository and how much space they are consuming.
+
+[NOTE]
+`git pull` is slightly cumbersome for HTTP transport, as a
+packed repository may contain relatively few objects in a
+relatively large pack. If you expect many HTTP pulls from your
+public repository you might want to repack & prune often, or
+never.
+
+If you run `git repack` again at this point, it will say
+"Nothing to pack". Once you continue your development and
+accumulate the changes, running `git repack` again will create a
+new pack, that contains objects created since you packed your
+repository the last time. We recommend that you pack your project
+soon after the initial import (unless you are starting your
+project from scratch), and then run `git repack` every once in a
+while, depending on how active your project is.
+
+When a repository is synchronized via `git push` and `git pull`
+objects packed in the source repository are usually stored
+unpacked in the destination, unless rsync transport is used.
+While this allows you to use different packing strategies on
+both ends, it also means you may need to repack both
+repositories every once in a while.
+
+
+Working with Others
+-------------------
+
+Although git is a truly distributed system, it is often
+convenient to organize your project with an informal hierarchy
+of developers. Linux kernel development is run this way. There
+is a nice illustration (page 17, "Merges to Mainline") in Randy
+Dunlap's presentation (`http://tinyurl.com/a2jdg`).
+
+It should be stressed that this hierarchy is purely *informal*.
+There is nothing fundamental in git that enforces the "chain of
+patch flow" this hierarchy implies. You do not have to pull
+from only one remote repository.
+
+A recommended workflow for a "project lead" goes like this:
+
+1. Prepare your primary repository on your local machine. Your
+   work is done there.
+
+2. Prepare a public repository accessible to others.
++
+If other people are pulling from your repository over dumb
+transport protocols (HTTP), you need to keep this repository
+'dumb transport friendly'.  After `git init-db`,
+`$GIT_DIR/hooks/post-update` copied from the standard templates
+would contain a call to `git-update-server-info` but the
+`post-update` hook itself is disabled by default -- enable it
+with `chmod +x post-update`.  This makes sure `git-update-server-info`
+keeps the necessary files up-to-date.
+
+3. Push into the public repository from your primary
+   repository.
+
+4. `git repack` the public repository. This establishes a big
+   pack that contains the initial set of objects as the
+   baseline, and possibly `git prune` if the transport
+   used for pulling from your repository supports packed
+   repositories.
+
+5. Keep working in your primary repository. Your changes
+   include modifications of your own, patches you receive via
+   e-mails, and merges resulting from pulling the "public"
+   repositories of your "subsystem maintainers".
++
+You can repack this private repository whenever you feel like.
+
+6. Push your changes to the public repository, and announce it
+   to the public.
+
+7. Every once in a while, "git repack" the public repository.
+   Go back to step 5. and continue working.
+
+
+A recommended work cycle for a "subsystem maintainer" who works
+on that project and has an own "public repository" goes like this:
+
+1. Prepare your work repository, by `git clone` the public
+   repository of the "project lead". The URL used for the
+   initial cloning is stored in `.git/remotes/origin`.
+
+2. Prepare a public repository accessible to others, just like
+   the "project lead" person does.
+
+3. Copy over the packed files from "project lead" public
+   repository to your public repository, unless the "project
+   lead" repository lives on the same machine as yours.  In the
+   latter case, you can use `objects/info/alternates` file to
+   point at the repository you are borrowing from.
+
+4. Push into the public repository from your primary
+   repository. Run `git repack`, and possibly `git prune` if the
+   transport used for pulling from your repository supports
+   packed repositories.
+
+5. Keep working in your primary repository. Your changes
+   include modifications of your own, patches you receive via
+   e-mails, and merges resulting from pulling the "public"
+   repositories of your "project lead" and possibly your
+   "sub-subsystem maintainers".
++
+You can repack this private repository whenever you feel
+like.
+
+6. Push your changes to your public repository, and ask your
+   "project lead" and possibly your "sub-subsystem
+   maintainers" to pull from it.
+
+7. Every once in a while, `git repack` the public repository.
+   Go back to step 5. and continue working.
+
+
+A recommended work cycle for an "individual developer" who does
+not have a "public" repository is somewhat different. It goes
+like this:
+
+1. Prepare your work repository, by `git clone` the public
+   repository of the "project lead" (or a "subsystem
+   maintainer", if you work on a subsystem). The URL used for
+   the initial cloning is stored in `.git/remotes/origin`.
+
+2. Do your work in your repository on 'master' branch.
+
+3. Run `git fetch origin` from the public repository of your
+   upstream every once in a while. This does only the first
+   half of `git pull` but does not merge. The head of the
+   public repository is stored in `.git/refs/heads/origin`.
+
+4. Use `git cherry origin` to see which ones of your patches
+   were accepted, and/or use `git rebase origin` to port your
+   unmerged changes forward to the updated upstream.
+
+5. Use `git format-patch origin` to prepare patches for e-mail
+   submission to your upstream and send it out. Go back to
+   step 2. and continue.
+
+
+Working with Others, Shared Repository Style
+--------------------------------------------
+
+If you are coming from CVS background, the style of cooperation
+suggested in the previous section may be new to you. You do not
+have to worry. git supports "shared public repository" style of
+cooperation you are probably more familiar with as well.
+
+For this, set up a public repository on a machine that is
+reachable via SSH by people with "commit privileges".  Put the
+committers in the same user group and make the repository
+writable by that group.  Make sure their umasks are set up to
+allow group members to write into directories other members
+have created.
+
+You, as an individual committer, then:
+
+- First clone the shared repository to a local repository:
+------------------------------------------------
+$ git clone repo.shared.xz:/pub/scm/project.git/ my-project
+$ cd my-project
+$ hack away
+------------------------------------------------
+
+- Merge the work others might have done while you were hacking
+  away:
+------------------------------------------------
+$ git pull origin
+$ test the merge result
+------------------------------------------------
+[NOTE]
+================================
+The first `git clone` would have placed the following in
+`my-project/.git/remotes/origin` file, and that's why this and
+the next step work.
+------------
+URL: repo.shared.xz:/pub/scm/project.git/ my-project
+Pull: master:origin
+------------
+================================
+
+- push your work as the new head of the shared
+  repository.
+------------------------------------------------
+$ git push origin master
+------------------------------------------------
+If somebody else pushed into the same shared repository while
+you were working locally, `git push` in the last step would
+complain, telling you that the remote `master` head does not
+fast forward.  You need to pull and merge those other changes
+back before you push your work when it happens.
+
+
+Advanced Shared Repository Management
+-------------------------------------
+
+Being able to push into a shared repository means being able to
+write into it.  If your developers are coming over the network,
+this means you, as the repository administrator, need to give
+each of them an SSH access to the shared repository machine.
+
+In some cases, though, you may not want to give a normal shell
+account to them, but want to restrict them to be able to only
+do `git push` into the repository and nothing else.
+
+You can achieve this by setting the login shell of your
+developers on the shared repository host to `git-shell` program.
+
+[NOTE]
+Most likely you would also need to list `git-shell` program in
+`/etc/shells` file.
+
+This restricts the set of commands that can be run from incoming
+SSH connection for these users to only `receive-pack` and
+`upload-pack`, so the only thing they can do are `git fetch` and
+`git push`.
+
+You still need to create UNIX user accounts for each developer,
+and put them in the same group.  Make sure that the repository
+shared among these developers is writable by that group.
+
+. Initializing the shared repository with `git-init-db --shared`
+helps somewhat.
+
+. Run the following in the shared repository:
++
+------------
+$ chgrp -R $group repo.git
+$ find repo.git -type d -print | xargs chmod ug+rwx,g+s
+$ GIT_DIR=repo.git git repo-config core.sharedrepository true
+------------
+
+The above measures make sure that directories lazily created in
+`$GIT_DIR` are writable by group members.  You, as the
+repository administrator, are still responsible to make sure
+your developers belong to that shared repository group and set
+their umask to a value no stricter than 027 (i.e. at least allow
+reading and searching by group members).
+
+You can implement finer grained branch policies using update
+hooks.  There is a document ("control access to branches") in
+Documentation/howto by Carl Baldwin and JC outlining how to (1)
+limit access to branch per user, (2) forbid overwriting existing
+tags.
+
+
+Bundling your work together
+---------------------------
+
+It is likely that you will be working on more than one thing at
+a time.  It is easy to manage those more-or-less independent tasks
+using branches with git.
+
+We have already seen how branches work previously,
+with "fun and work" example using two branches.  The idea is the
+same if there are more than two branches.  Let's say you started
+out from "master" head, and have some new code in the "master"
+branch, and two independent fixes in the "commit-fix" and
+"diff-fix" branches:
+
+------------
+$ git show-branch
+! [commit-fix] Fix commit message normalization.
+ ! [diff-fix] Fix rename detection.
+  * [master] Release candidate #1
+---
+ +  [diff-fix] Fix rename detection.
+ +  [diff-fix~1] Better common substring algorithm.
++   [commit-fix] Fix commit message normalization.
+  + [master] Release candidate #1
++++ [diff-fix~2] Pretty-print messages.
+------------
+
+Both fixes are tested well, and at this point, you want to merge
+in both of them.  You could merge in 'diff-fix' first and then
+'commit-fix' next, like this:
+
+------------
+$ git merge 'Merge fix in diff-fix' master diff-fix
+$ git merge 'Merge fix in commit-fix' master commit-fix
+------------
+
+Which would result in:
+
+------------
+$ git show-branch
+! [commit-fix] Fix commit message normalization.
+ ! [diff-fix] Fix rename detection.
+  * [master] Merge fix in commit-fix
+---
+  + [master] Merge fix in commit-fix
++ + [commit-fix] Fix commit message normalization.
+  + [master~1] Merge fix in diff-fix
+ ++ [diff-fix] Fix rename detection.
+ ++ [diff-fix~1] Better common substring algorithm.
+  + [master~2] Release candidate #1
++++ [master~3] Pretty-print messages.
+------------
+
+However, there is no particular reason to merge in one branch
+first and the other next, when what you have are a set of truly
+independent changes (if the order mattered, then they are not
+independent by definition).  You could instead merge those two
+branches into the current branch at once.  First let's undo what
+we just did and start over.  We would want to get the master
+branch before these two merges by resetting it to 'master~2':
+
+------------
+$ git reset --hard master~2
+------------
+
+You can make sure 'git show-branch' matches the state before
+those two 'git merge' you just did.  Then, instead of running
+two 'git merge' commands in a row, you would pull these two
+branch heads (this is known as 'making an Octopus'):
+
+------------
+$ git pull . commit-fix diff-fix
+$ git show-branch
+! [commit-fix] Fix commit message normalization.
+ ! [diff-fix] Fix rename detection.
+  * [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
+---
+  + [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
++ + [commit-fix] Fix commit message normalization.
+ ++ [diff-fix] Fix rename detection.
+ ++ [diff-fix~1] Better common substring algorithm.
+  + [master~1] Release candidate #1
++++ [master~2] Pretty-print messages.
+------------
+
+Note that you should not do Octopus because you can.  An octopus
+is a valid thing to do and often makes it easier to view the
+commit history if you are pulling more than two independent
+changes at the same time.  However, if you have merge conflicts
+with any of the branches you are merging in and need to hand
+resolve, that is an indication that the development happened in
+those branches were not independent after all, and you should
+merge two at a time, documenting how you resolved the conflicts,
+and the reason why you preferred changes made in one side over
+the other.  Otherwise it would make the project history harder
+to follow, not easier.
+
+[ to be continued.. cvsimports ]