commit - /dev/null
commit + 8797b2280033741ca768a2317dbd0a0312e73c4e
blob - /dev/null
blob + 4c402acc49affdd54c68c8f3fb2d6b50700a0a53 (mode 644)
--- /dev/null
+++ git-repository.5.html
+<!DOCTYPE html>
+<html>
+<!-- This is an automatically generated file. Do not edit.
+ Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ -->
+<head>
+ <meta charset="utf-8"/>
+ <style>
+ table.head, table.foot { width: 100%; }
+ td.head-rtitle, td.foot-os { text-align: right; }
+ td.head-vol { text-align: center; }
+ div.Pp { margin: 1ex 0ex; }
+ div.Nd, div.Bf, div.Op { display: inline; }
+ span.Pa, span.Ad { font-style: italic; }
+ span.Ms { font-weight: bold; }
+ dl.Bl-diag > dt { font-weight: bold; }
+ code.Nm, code.Fl, code.Cm, code.Ic, code.In, code.Fd, code.Fn,
+ code.Cd { font-weight: bold; font-family: inherit; }
+ </style>
+ <title>GIT-REPOSITORY(5)</title>
+</head>
+<body>
+<table class="head">
+ <tr>
+ <td class="head-ltitle">GIT-REPOSITORY(5)</td>
+ <td class="head-vol">File Formats Manual</td>
+ <td class="head-rtitle">GIT-REPOSITORY(5)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<section class="Sh">
+<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
+<code class="Nm">git-repository</code> —
+<div class="Nd">Git repository format</div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+A Git repository stores a series of versioned snapshots of a file hierarchy.
+ Conceptually, the repository's data model is a directed acyclic graph which
+ contains three types of objects as nodes:
+<dl class="Bl-tag">
+ <dt>Blobs</dt>
+ <dd>The content of tracked files is stored in objects of type
+ <i class="Em">blob</i>.</dd>
+ <dt>Trees</dt>
+ <dd>A <i class="Em">tree</i> object points to any number of such blobs, and
+ also to other trees in order to represent a hierarchy of files and
+ directories.</dd>
+ <dt>Commits</dt>
+ <dd>A <i class="Em">commit</i> object points to the root element of one tree,
+ and thus records the state of this entire tree as a snapshot. Commit
+ objects are chained together to form lines of version control history.
+ Most commits have just one successor commit, but commits may be succeeded
+ by an arbitrary number of subsequent commits so that diverging lines of
+ version control history, known as <i class="Em">branches</i>, can be
+ represented. A commit which precedes another commit is referred to as that
+ other commit's <i class="Em">parent commit</i>. A commit with multiple
+ parents unites disparate lines of history and is known as a
+ <i class="Em">merge commit</i>.</dd>
+</dl>
+<p class="Pp">Each object is identified by a SHA1 hash calculated over both the
+ object's header and the data stored in the object.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="OBJECT_STORAGE"><a class="permalink" href="#OBJECT_STORAGE">OBJECT
+ STORAGE</a></h1>
+Loose objects are stored as individual files beneath the directory
+ <span class="Pa">objects</span>, spread across 256 sub-directories named after
+ the 256 possible hexadecimal values of the first byte of an object identifier.
+ The name of the loose object file corresponds to the remaining hexadecimal
+ byte values of the object's identifier.
+<p class="Pp">A loose object file begins with a header which specifies the type
+ of object as an ASCII string, followed by an ASCII space character, followed
+ by the object data's size encoded as an ASCII number string. The header is
+ terminated by a <b class="Sy">NUL</b> character, and the remainder of the
+ file contains object data. Loose objects files are compressed with
+ <a class="Xr">deflate(3)</a>.</p>
+<p class="Pp">Multiple objects can be bundled in a <i class="Em">pack file</i>
+ for better disk space efficiency and increased run-time performance. The
+ pack file format knows two additional types of objects in addition to blobs,
+ trees, and commits:</p>
+<dl class="Bl-tag">
+ <dt>Offset Delta Objects</dt>
+ <dd>This object is represented as a delta against another object in the same
+ pack file. This other object is referred to by its offset in the pack
+ file.</dd>
+ <dt>Reference Delta Objects</dt>
+ <dd>This object is represented as a delta against another object in the same
+ pack file. The other object is referred to by its SHA1 object
+ identifier.</dd>
+</dl>
+<p class="Pp">Pack files are self-contained and may not refer to loose objects
+ or objects stored in other pack files. Deltified objects may refer to other
+ deltified objects as their delta base, forming chains of deltas. The
+ ultimate base of a delta chain must be an object of the same type as the
+ original object which is stored in deltified form.</p>
+<p class="Pp">Each pack file is accompanied by a corresponding
+ <i class="Em">pack index</i> file, which lists the IDs and offsets of all
+ objects contained in the pack file.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="REFERENCES"><a class="permalink" href="#REFERENCES">REFERENCES</a></h1>
+A reference associates a name with an object ID. A prominent use of references
+ is providing names to branches in the repository by pointing at commit objects
+ which represent the current tip commit of a branch. Because references may
+ point to arbitrary object IDs their use is not limited to branches.
+<p class="Pp">The name is a UTF-8 string with the following disallowed
+ characters: ‘ ’ (space), ~ (tilde), ^ (caret), :
+ (colon), ? (question mark), * (asterisk), [ (opening square bracket), \
+ (backslash). Additionally, the name may not contain the two-character
+ sequences //, .. , and @{.</p>
+<p class="Pp">Reference names may optionally have multiple components separated
+ by the / (slash) character, forming a hierarchy of reference namespaces. Got
+ reserves the <span class="Pa">got/</span> reference namespace for internal
+ use.</p>
+<p class="Pp">A symbolic reference associates a name with the name of another
+ reference. The most prominent example is the <span class="Pa">HEAD</span>
+ reference which points at the name of the repository's default branch
+ reference.</p>
+<p class="Pp">References are stored either as a plain file within the
+ repository, typically under the <span class="Pa">refs/</span> directory, or
+ in the <span class="Pa">packed-refs</span> file which contains one reference
+ definition per line.</p>
+<p class="Pp">Any object which is not directly or indirectly reachable via a
+ reference is subject to deletion by Git's garbage collector.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="FILES"><a class="permalink" href="#FILES">FILES</a></h1>
+<dl class="Bl-tag Bl-compact">
+ <dt><span class="Pa">HEAD</span></dt>
+ <dd>A reference to the current head commit of the Git work tree. In bare
+ repositories, this files serves as a default reference.</dd>
+ <dt><span class="Pa">ORIG_HEAD</span></dt>
+ <dd>Reference to original head commit. Set by some Git operations.</dd>
+ <dt><span class="Pa">FETCH_HEAD</span></dt>
+ <dd>Reference to a branch tip commit most recently fetched from another
+ repository.</dd>
+ <dt><span class="Pa">branches/</span></dt>
+ <dd>Legacy directory used by the deprecated Gogito Git interface.</dd>
+ <dt><span class="Pa">config</span></dt>
+ <dd>Git configuration file. See <a class="Xr">git-config(1)</a>.</dd>
+ <dt><span class="Pa">description</span></dt>
+ <dd>A human-readable description of the repository.</dd>
+ <dt><span class="Pa">hooks/</span></dt>
+ <dd>This directory contains hook scripts to run when certain events
+ occur.</dd>
+ <dt><span class="Pa">index</span></dt>
+ <dd>The file index used by <a class="Xr">git(1)</a>. This file is not used by
+ <a class="Xr">got(1)</a>, which uses the <a class="Xr">got-worktree(5)</a>
+ file index instead.</dd>
+ <dt><span class="Pa">info</span></dt>
+ <dd>Various configuration items.</dd>
+ <dt><span class="Pa">logs/</span></dt>
+ <dd>Directory where reflogs are stored.</dd>
+ <dt><span class="Pa">objects/</span></dt>
+ <dd>Loose and packed objects are stored in this directory.</dd>
+ <dt><span class="Pa">packed-refs</span></dt>
+ <dd>A file which stores references. Corresponding on-disk references take
+ precedence over those stored here.</dd>
+ <dt><span class="Pa">refs/</span></dt>
+ <dd>The default directory to store references in.</dd>
+</dl>
+<p class="Pp">A typical Git repository exposes a work tree which allows the user
+ to make changes to versioned files and create new commits. When a Git work
+ tree is present, the actual repository data is stored in a
+ <span class="Pa">.git</span> subfolder of the repository's root directory. A
+ Git repository without a work tree is known as a “bare”
+ repository. <a class="Xr">got(1)</a> does not make use of Git's work tree
+ and treats every repository as if it was bare.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<a class="Xr">got(1)</a>, <a class="Xr">deflate(3)</a>,
+ <a class="Xr">SHA1(3)</a>, <a class="Xr">got-worktree(5)</a>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
+The Git repository format was initially designed by Linus Torvalds in 2005 and
+ has since been extended by various people involved in the development of the
+ Git version control system.
+</section>
+<section class="Sh">
+<h1 class="Sh" id="CAVEATS"><a class="permalink" href="#CAVEATS">CAVEATS</a></h1>
+The particular set of disallowed characters in reference names is a consequence
+ of design choices made for the command-line interface of
+ <a class="Xr">git(1)</a>. The same characters are disallowed by Got for
+ compatibility purposes. Got additionaly prevents users from creating reference
+ names with a leading - (dash) character, because this is rarely intended and
+ not considered useful.
+</section>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">August 4, 2019</td>
+ <td class="foot-os">OpenBSD 6.5</td>
+ </tr>
+</table>
+</body>
+</html>
blob - /dev/null
blob + 7cf6d3904d98ef99fa3f0a28e5d1e40683739145 (mode 644)
--- /dev/null
+++ goals.html
+<!doctype html>
+<html lang=en>
+<meta charset=utf-8>
+
+<title>Game of Trees (Got): Goals</title>
+<meta name="description" content="Game of Trees (Got) Goals">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<link rel="stylesheet" type="text/css" href="openbsd.css">
+<link rel="canonical" href="https://stsp.name/got/goals.html">
+
+<h2>
+<a href="index.html">
+<i>Game of Trees</i></a>
+Goals
+</h2>
+<hr>
+
+<ul>
+<li>
+Provide an intuitive command interface for working with
+<a href="https://git-scm.com">Git</a> repositories.
+<ul>
+<li>Provide a single interface usable by both Git experts and non-experts.
+</ul>
+<li>
+Remain on-disk compatible with bare Git repositories.
+<ul>
+<li>Don't bother with Git-compatibility beyond this requirement.
+</ul>
+<li>
+Follow OpenBSD's security practices and coding style.
+<ul>
+<li>
+Use privilege separation when parsing data from network or disk.
+<li>Use <a href="https://man.openbsd.org/pledge">pledge(2)</a> and
+<a href="https://man.openbsd.org/unveil">unveil(2)</a>.
+<li>Use a peer-reviewed development process.
+</ul>
+<li>
+Consider workflow requirements of OpenBSD developers.
+<ul>
+<li>Implement strictly required features only.
+</ul>
+</ul>
blob - /dev/null
blob + 640cca1ba2eba696debc48075c713934560f42d6 (mode 644)
--- /dev/null
+++ got-worktree.5.html
+<!DOCTYPE html>
+<html>
+<!-- This is an automatically generated file. Do not edit.
+ Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ -->
+<head>
+ <meta charset="utf-8"/>
+ <style>
+ table.head, table.foot { width: 100%; }
+ td.head-rtitle, td.foot-os { text-align: right; }
+ td.head-vol { text-align: center; }
+ div.Pp { margin: 1ex 0ex; }
+ div.Nd, div.Bf, div.Op { display: inline; }
+ span.Pa, span.Ad { font-style: italic; }
+ span.Ms { font-weight: bold; }
+ dl.Bl-diag > dt { font-weight: bold; }
+ code.Nm, code.Fl, code.Cm, code.Ic, code.In, code.Fd, code.Fn,
+ code.Cd { font-weight: bold; font-family: inherit; }
+ </style>
+ <title>GOT-WORKTREE(5)</title>
+</head>
+<body>
+<table class="head">
+ <tr>
+ <td class="head-ltitle">GOT-WORKTREE(5)</td>
+ <td class="head-vol">File Formats Manual</td>
+ <td class="head-rtitle">GOT-WORKTREE(5)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<section class="Sh">
+<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
+<code class="Nm">got-worktree</code> —
+<div class="Nd">got worktree format</div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+A got <i class="Em">work tree</i> stores a file hierarchy which corresponds to a
+ versioned snapshot stored in a Git repository. The work tree's meta data is
+ stored in the <span class="Pa">.got</span> directory. A work tree is created
+ with <code class="Cm">got checkout</code> and is required to make changes to a
+ Git repository with <a class="Xr">got(1)</a>.
+<p class="Pp">A work tree stores the path to its Git repository, the name of a
+ reference to the branch which files were checked out from, and the ID of a
+ commit on this branch known as the <i class="Em">base commit</i>.</p>
+<p class="Pp">File meta-data is stored in a structured file called the
+ <i class="Em">file index</i> and tracks the status of file modifications,
+ additions, and deletions, relative to the base commit in the repository. The
+ file index contains a series of records, and each such record contains the
+ following status information for a particular file:</p>
+<dl class="Bl-tag">
+ <dt>Copy of filesystem meta-data</dt>
+ <dd>Timestamp, file size, and file ownership information from
+ <a class="Xr">stat(2)</a>. This is only used to detect file modifications
+ and is never applied back to the filesystem. File permissions are not
+ tracked, except for the executable bit. When versioned files are checked
+ out into the work tree, the current <a class="Xr">umask(2)</a> is
+ heeded.</dd>
+ <dt>Blob object ID</dt>
+ <dd>The SHA1 hash of the blob object which corresponds to the contents of this
+ file in the repository. The hash is stored as binary data.</dd>
+ <dt>Commit object ID</dt>
+ <dd>The SHA1 hash of the commit object the file was checked out from. The hash
+ is stored as binary data. This data is used to detect past incomplete
+ update operations. Entries which do not match the work tree's base commit
+ may still need to be updated to match file content stored in the base
+ commit.</dd>
+ <dt>Flags</dt>
+ <dd>A flags field (intentionally not documented).</dd>
+ <dt>Path data</dt>
+ <dd>The path of the entry, relative to the work tree root. Path data is of
+ variable length and NUL-padded to a multiple of 8 bytes.</dd>
+</dl>
+<p class="Pp">A corrupt or missing file index can be recreated on demand with
+ <code class="Cm">got update</code>. When the file index is modified, it is
+ read into memory in its entirety, modified in place, and written to a
+ temporary file. This temporary file is then moved on top of the old file
+ index with <a class="Xr">rename(2)</a>. This ensures that no other processes
+ see an inconsistent file index which is in the process of being written.</p>
+<p class="Pp">Work tree meta data must only be modified while the work tree's
+ <span class="Pa">lock</span> file has been exclusively locked with
+ <a class="Xr">lockf(3)</a>.</p>
+<p class="Pp">Each work tree has a universal unique identifier. When a work tree
+ is checked out or updated, this identifier is used to create a reference to
+ the current base commit in the Git repository. The presence of this
+ reference prevents Git garbage collectors from discarding the base commit
+ and any objects it refers to. When a work tree is no longer needed its
+ reference can be deleted from the Git repository with <code class="Cm">got
+ ref -d</code>.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="FILES"><a class="permalink" href="#FILES">FILES</a></h1>
+<dl class="Bl-tag Bl-compact">
+ <dt><span class="Pa">.got</span></dt>
+ <dd>Meta-data directory where all files listed below reside.</dd>
+ <dt><span class="Pa">base-commit</span></dt>
+ <dd>SHA1 hex-string representation of the current base commit.</dd>
+ <dt><span class="Pa">file-index</span></dt>
+ <dd>File status information.</dd>
+ <dt><span class="Pa">format</span></dt>
+ <dd>Work tree format number.</dd>
+ <dt><span class="Pa">head-ref</span></dt>
+ <dd>Name of the reference to the current branch.</dd>
+ <dt><span class="Pa">lock</span></dt>
+ <dd>Lock file to obtain exclusive write access to meta data.</dd>
+ <dt><span class="Pa">path-prefix</span></dt>
+ <dd>Path inside repository the work tree was checked out from.</dd>
+ <dt><span class="Pa">repository</span></dt>
+ <dd>Path to the repository the work tree was checked out from.</dd>
+ <dt><span class="Pa">uuid</span></dt>
+ <dd>A universal unique identifier for the work tree.</dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<a class="Xr">got(1)</a>, <a class="Xr">rename(2)</a>,
+ <a class="Xr">stat(2)</a>, <a class="Xr">umask(2)</a>,
+ <a class="Xr">lockf(3)</a>, <a class="Xr">git-repository(5)</a>
+</section>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">August 4, 2019</td>
+ <td class="foot-os">OpenBSD 6.5</td>
+ </tr>
+</table>
+</body>
+</html>
blob - /dev/null
blob + b6bb9cac6ed249ef0cad685b99f35ca41c96dc20 (mode 644)
--- /dev/null
+++ got.1.html
+<!DOCTYPE html>
+<html>
+<!-- This is an automatically generated file. Do not edit.
+ Copyright (c) 2017 Martin Pieuchot
+ Copyright (c) 2018, 2019 Stefan Sperling
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ -->
+<head>
+ <meta charset="utf-8"/>
+ <style>
+ table.head, table.foot { width: 100%; }
+ td.head-rtitle, td.foot-os { text-align: right; }
+ td.head-vol { text-align: center; }
+ div.Pp { margin: 1ex 0ex; }
+ div.Nd, div.Bf, div.Op { display: inline; }
+ span.Pa, span.Ad { font-style: italic; }
+ span.Ms { font-weight: bold; }
+ dl.Bl-diag > dt { font-weight: bold; }
+ code.Nm, code.Fl, code.Cm, code.Ic, code.In, code.Fd, code.Fn,
+ code.Cd { font-weight: bold; font-family: inherit; }
+ </style>
+ <title>GOT(1)</title>
+</head>
+<body>
+<table class="head">
+ <tr>
+ <td class="head-ltitle">GOT(1)</td>
+ <td class="head-vol">General Commands Manual</td>
+ <td class="head-rtitle">GOT(1)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<section class="Sh">
+<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
+<code class="Nm">got</code> —
+<div class="Nd">game of trees</div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
+<table class="Nm">
+ <tr>
+ <td><code class="Nm">got</code></td>
+ <td><var class="Ar">command</var> [<code class="Fl">-h</code>]
+ [<var class="Ar">arg ...</var>]</td>
+ </tr>
+</table>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+<code class="Nm">got</code> is a version control system which stores the history
+ of tracked files in a Git repository, as used by the Git version control
+ system. This repository format is described in
+ <a class="Xr">git-repository(5)</a>.
+<p class="Pp"><code class="Nm">got</code> is a “distributed”
+ version control system because every copy of a repository is writeable.
+ Modifications made to files can be synchronized between repositories at any
+ time.</p>
+<p class="Pp">Files managed by <code class="Nm">got</code> must be checked out
+ from the repository for modification. Checked out files are stored in a
+ <i class="Em">work tree</i> which can be placed at an arbitrary directory in
+ the filesystem hierarchy. The on-disk format of this work tree is described
+ in <a class="Xr">got-worktree(5)</a>.</p>
+<p class="Pp"><code class="Nm">got</code> provides global and command-specific
+ options. Global options must preceed the command name, and are as
+ follows:</p>
+<dl class="Bl-tag">
+ <dt><a class="permalink" href="#h"><code class="Fl" id="h">-h</code></a></dt>
+ <dd>Display usage information.</dd>
+ <dt><a class="permalink" href="#V"><code class="Fl" id="V">-V</code></a></dt>
+ <dd>Display program version and exit immediately.</dd>
+</dl>
+<p class="Pp">The commands for <code class="Nm">got</code> are as follows:</p>
+<dl class="Bl-tag">
+ <dt><a class="permalink" href="#init"><code class="Cm" id="init">init</code></a>
+ <var class="Ar">repository-path</var></dt>
+ <dd>Create a new empty repository at the specified
+ <var class="Ar">repository-path</var>.
+ <p class="Pp">After <code class="Cm">got init</code>, the
+ <code class="Cm">got import</code> command must be used to populate the
+ empty repository before <code class="Cm">got checkout</code> can be
+ used.</p>
+ </dd>
+ <dt><a class="permalink" href="#in"><code class="Cm" id="in">in</code></a></dt>
+ <dd>Short alias for <code class="Cm">init</code>.</dd>
+ <dt><a class="permalink" href="#import"><code class="Cm" id="import">import</code></a>
+ [<code class="Fl">-b</code> <var class="Ar">branch</var>]
+ [<code class="Fl">-m</code> <var class="Ar">message</var>]
+ [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+ [<code class="Fl">-I</code> <var class="Ar">pattern</var>]
+ <var class="Ar">directory</var></dt>
+ <dd>Create an initial commit in a repository from the file hierarchy within
+ the specified <var class="Ar">directory</var>. The created commit will not
+ have any parent commits, i.e. it will be a root commit. Also create a new
+ reference which provides a branch name for the newly created commit. Show
+ the path of each imported file to indicate progress.
+ <p class="Pp">The <code class="Cm">got import</code> command requires the
+ <code class="Ev">GOT_AUTHOR</code> environment variable to be set.</p>
+ <p class="Pp">The options for <code class="Cm">got import</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#b"><code class="Fl" id="b">-b</code></a>
+ <var class="Ar">branch</var></dt>
+ <dd>Create the specified <var class="Ar">branch</var> instead of creating
+ the default branch “master”. Use of this option is
+ required if the “master” branch already exists.</dd>
+ <dt><a class="permalink" href="#m"><code class="Fl" id="m">-m</code></a>
+ <var class="Ar">message</var></dt>
+ <dd>Use the specified log message when creating the new commit. Without
+ the <code class="Fl">-m</code> option, <code class="Cm">got
+ import</code> opens a temporary file in an editor where a log message
+ can be written.</dd>
+ <dt><a class="permalink" href="#r"><code class="Fl" id="r">-r</code></a>
+ <var class="Ar">repository-path</var></dt>
+ <dd>Use the repository at the specified path. If not specified, assume the
+ repository is located at or above the current working directory.</dd>
+ <dt><a class="permalink" href="#I"><code class="Fl" id="I">-I</code></a>
+ <var class="Ar">pattern</var></dt>
+ <dd>Ignore files or directories with a name which matches the specified
+ <var class="Ar">pattern</var>. This option may be specified multiple
+ times to build a list of ignore patterns. The
+ <var class="Ar">pattern</var> follows the globbing rules documented in
+ <a class="Xr">glob(7)</a>.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#im"><code class="Cm" id="im">im</code></a></dt>
+ <dd>Short alias for <code class="Cm">import</code>.</dd>
+ <dt><a class="permalink" href="#checkout"><code class="Cm" id="checkout">checkout</code></a>
+ [<code class="Fl">-b</code> <var class="Ar">branch</var>]
+ [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+ [<code class="Fl">-p</code> <var class="Ar">path-prefix</var>]
+ <var class="Ar">repository-path</var>
+ [<var class="Ar">work-tree-path</var>]</dt>
+ <dd>Copy files from a repository into a new work tree. If the
+ <var class="Ar">work tree path</var> is not specified, either use the last
+ component of <var class="Ar">repository path</var>, or if a
+ <var class="Ar">path prefix</var> was specified use the last component of
+ <var class="Ar">path prefix</var>.
+ <p class="Pp">The options for <code class="Cm">got checkout</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#b_2"><code class="Fl" id="b_2">-b</code></a>
+ <var class="Ar">branch</var></dt>
+ <dd>Check out files from a commit on the specified
+ <var class="Ar">branch</var>. If this option is not specified, a
+ branch resolved via the repository's HEAD reference will be used.</dd>
+ <dt><a class="permalink" href="#c"><code class="Fl" id="c">-c</code></a>
+ <var class="Ar">commit</var></dt>
+ <dd>Check out files from the specified <var class="Ar">commit</var> on the
+ selected branch. The expected argument is a commit ID SHA1 hash or an
+ existing reference which will be resolved to a commit ID. An
+ abbreviated hash argument will be expanded to a full SHA1 hash
+ automatically, provided the abbreviation is unique. If this option is
+ not specified, the most recent commit on the selected branch will be
+ used.</dd>
+ <dt><a class="permalink" href="#p"><code class="Fl" id="p">-p</code></a>
+ <var class="Ar">path-prefix</var></dt>
+ <dd>Restrict the work tree to a subset of the repository's tree hierarchy.
+ Only files beneath the specified <var class="Ar">path-prefix</var>
+ will be checked out.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#co"><code class="Cm" id="co">co</code></a></dt>
+ <dd>Short alias for <code class="Cm">checkout</code>.</dd>
+ <dt><a class="permalink" href="#update"><code class="Cm" id="update">update</code></a>
+ [<code class="Fl">-b</code> <var class="Ar">branch</var>]
+ [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+ [<var class="Ar">path ...</var>]</dt>
+ <dd>Update an existing work tree to a different commit. Show the status of
+ each affected file, using the following status codes:
+ <table class="Bl-column">
+ <tr>
+ <td>U</td>
+ <td>file was updated and contained no local changes</td>
+ </tr>
+ <tr>
+ <td>G</td>
+ <td>file was updated and local changes were merged cleanly</td>
+ </tr>
+ <tr>
+ <td>C</td>
+ <td>file was updated and conflicts occurred during merge</td>
+ </tr>
+ <tr>
+ <td>D</td>
+ <td>file was deleted</td>
+ </tr>
+ <tr>
+ <td>A</td>
+ <td>new file was added</td>
+ </tr>
+ <tr>
+ <td>~</td>
+ <td>versioned file is obstructed by a non-regular file</td>
+ </tr>
+ <tr>
+ <td>!</td>
+ <td>a missing versioned file was restored</td>
+ </tr>
+ </table>
+ <p class="Pp">If no <var class="Ar">path</var> is specified, update the
+ entire work tree. Otherwise, restrict the update operation to files at
+ or within the specified paths. Each path is required to exist in the
+ update operation's target commit. Files in the work tree outside
+ specified paths will remain unchanged and will retain their previously
+ recorded base commit. Some <code class="Nm">got</code> commands may
+ refuse to run while the work tree contains files from multiple base
+ commits. The base commit of such a work tree can be made consistent by
+ running <code class="Cm">got update</code> across the entire work tree.
+ Specifying a <var class="Ar">path</var> is incompatible with the
+ <code class="Fl">-b</code> option.</p>
+ <p class="Pp"><code class="Cm">got update</code> cannot update paths with
+ staged changes. If changes have been staged with <code class="Cm">got
+ stage</code>, these changes must first be comitted with
+ <code class="Cm">got commit</code> or unstaged with <code class="Cm">got
+ unstage</code>.</p>
+ <p class="Pp">The options for <code class="Cm">got update</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#b_3"><code class="Fl" id="b_3">-b</code></a>
+ <var class="Ar">branch</var></dt>
+ <dd>Switch the work tree's branch reference to the specified
+ <var class="Ar">branch</var> before updating the work tree. This
+ option requires that all paths in the work tree are updated.</dd>
+ <dt><a class="permalink" href="#c_2"><code class="Fl" id="c_2">-c</code></a>
+ <var class="Ar">commit</var></dt>
+ <dd>Update the work tree to the specified <var class="Ar">commit</var>.
+ The expected argument is a commit ID SHA1 hash or an existing
+ reference which will be resolved to a commit ID. An abbreviated hash
+ argument will be expanded to a full SHA1 hash automatically, provided
+ the abbreviation is unique. If this option is not specified, the most
+ recent commit on the work tree's branch will be used.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#up"><code class="Cm" id="up">up</code></a></dt>
+ <dd>Short alias for <code class="Cm">update</code>.</dd>
+ <dt><a class="permalink" href="#status"><code class="Cm" id="status">status</code></a>
+ [<var class="Ar">path ...</var>]</dt>
+ <dd>Show the current modification status of files in a work tree, using the
+ following status codes:
+ <table class="Bl-column">
+ <tr>
+ <td>M</td>
+ <td>modified file</td>
+ </tr>
+ <tr>
+ <td>A</td>
+ <td>file scheduled for addition in next commit</td>
+ </tr>
+ <tr>
+ <td>D</td>
+ <td>file scheduled for deletion in next commit</td>
+ </tr>
+ <tr>
+ <td>C</td>
+ <td>modified or added file which contains merge conflicts</td>
+ </tr>
+ <tr>
+ <td>!</td>
+ <td>versioned file was expected on disk but is missing</td>
+ </tr>
+ <tr>
+ <td>~</td>
+ <td>versioned file is obstructed by a non-regular file</td>
+ </tr>
+ <tr>
+ <td>?</td>
+ <td>unversioned item not tracked by <code class="Nm">got</code></td>
+ </tr>
+ </table>
+ <p class="Pp">If no <var class="Ar">path</var> is specified, show
+ modifications in the entire work tree. Otherwise, show modifications at
+ or within the specified paths.</p>
+ <p class="Pp">If changes have been staged with <code class="Cm">got
+ stage</code>, staged changes are shown in the second output column,
+ using the following status codes:</p>
+ <table class="Bl-column">
+ <tr>
+ <td>M</td>
+ <td>file modification is staged</td>
+ </tr>
+ <tr>
+ <td>A</td>
+ <td>file addition is staged</td>
+ </tr>
+ <tr>
+ <td>D</td>
+ <td>file deletion is staged</td>
+ </tr>
+ </table>
+ <p class="Pp">If a path has staged changes, modification status of files
+ shown in the first output column is relative to the staged changes:</p>
+ <table class="Bl-column">
+ <tr>
+ <td>MM</td>
+ <td>modified file was modified again after being staged</td>
+ </tr>
+ <tr>
+ <td>MA</td>
+ <td>added file was modified after being staged</td>
+ </tr>
+ </table>
+ </dd>
+ <dt><a class="permalink" href="#st"><code class="Cm" id="st">st</code></a></dt>
+ <dd>Short alias for <code class="Cm">status</code>.</dd>
+ <dt><a class="permalink" href="#log"><code class="Cm" id="log">log</code></a>
+ [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+ [<code class="Fl">-C</code> <var class="Ar">number</var>]
+ [<code class="Fl">-f</code>] [<code class="Fl">-l</code>
+ <var class="Ar">N</var>] [<code class="Fl">-p</code>]
+ [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+ [<var class="Ar">path</var>]</dt>
+ <dd>Display history of a repository. If a <var class="Ar">path</var> is
+ specified, show only commits which modified this path.
+ <p class="Pp">The options for <code class="Cm">got log</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#c_3"><code class="Fl" id="c_3">-c</code></a>
+ <var class="Ar">commit</var></dt>
+ <dd>Start traversing history at the specified
+ <var class="Ar">commit</var>. The expected argument is a commit ID
+ SHA1 hash or an existing reference which will be resolved to a commit
+ ID. An abbreviated hash argument will be expanded to a full SHA1 hash
+ automatically, provided the abbreviation is unique. If this option is
+ not specified, default to the work tree's current branch if invoked in
+ a work tree, or to the repository's HEAD reference.</dd>
+ <dt><a class="permalink" href="#C"><code class="Fl" id="C">-C</code></a>
+ <var class="Ar">number</var></dt>
+ <dd>Set the number of context lines shown in diffs with
+ <code class="Fl">-p</code>. By default, 3 lines of context are
+ shown.</dd>
+ <dt><a class="permalink" href="#f"><code class="Fl" id="f">-f</code></a></dt>
+ <dd>Restrict history traversal to the first parent of each commit. This
+ shows the linear history of the current branch only. Merge commits
+ which affected the current branch will be shown but individual commits
+ which originated on other branches will be omitted.</dd>
+ <dt><a class="permalink" href="#l"><code class="Fl" id="l">-l</code></a>
+ <var class="Ar">N</var></dt>
+ <dd>Limit history traversal to a given number of commits.</dd>
+ <dt><a class="permalink" href="#p_2"><code class="Fl" id="p_2">-p</code></a></dt>
+ <dd>Display the patch of modifications made in each commit.</dd>
+ <dt><a class="permalink" href="#r_2"><code class="Fl" id="r_2">-r</code></a>
+ <var class="Ar">repository-path</var></dt>
+ <dd>Use the repository at the specified path. If not specified, assume the
+ repository is located at or above the current working directory. If
+ this directory is a <code class="Nm">got</code> work tree, use the
+ repository path associated with this work tree.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#diff"><code class="Cm" id="diff">diff</code></a>
+ [<code class="Fl">-C</code> <var class="Ar">number</var>]
+ [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+ [<code class="Fl">-s</code>] [<var class="Ar">object1</var>
+ <var class="Ar">object2</var> | <var class="Ar">path</var>]</dt>
+ <dd>When invoked within a work tree with less than two arguments, display
+ uncommitted changes in the work tree. If a <var class="Ar">path</var> is
+ specified, only show changes within this path.
+ <p class="Pp">If two arguments are provided, treat each argument as a
+ reference, or an object ID SHA1 hash, and display differences between
+ these objects. Both objects must be of the same type (blobs, trees, or
+ commits). An abbreviated hash argument will be expanded to a full SHA1
+ hash automatically, provided the abbreviation is unique.</p>
+ <p class="Pp">The options for <code class="Cm">got diff</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#C_2"><code class="Fl" id="C_2">-C</code></a>
+ <var class="Ar">number</var></dt>
+ <dd>Set the number of context lines shown in the diff. By default, 3 lines
+ of context are shown.</dd>
+ <dt><a class="permalink" href="#r_3"><code class="Fl" id="r_3">-r</code></a>
+ <var class="Ar">repository-path</var></dt>
+ <dd>Use the repository at the specified path. If not specified, assume the
+ repository is located at or above the current working directory. If
+ this directory is a <code class="Nm">got</code> work tree, use the
+ repository path associated with this work tree.</dd>
+ <dt><a class="permalink" href="#s"><code class="Fl" id="s">-s</code></a></dt>
+ <dd>Show changes staged with <code class="Cm">got stage</code> instead of
+ showing local changes. This option is only valid when
+ <code class="Cm">got diff</code> is invoked in a work tree.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#di"><code class="Cm" id="di">di</code></a></dt>
+ <dd>Short alias for <code class="Cm">diff</code>.</dd>
+ <dt><a class="permalink" href="#blame"><code class="Cm" id="blame">blame</code></a>
+ [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+ [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+ <var class="Ar">path</var></dt>
+ <dd>Display line-by-line history of a file at the specified path.
+ <p class="Pp">The options for <code class="Cm">got blame</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#c_4"><code class="Fl" id="c_4">-c</code></a>
+ <var class="Ar">commit</var></dt>
+ <dd>Start traversing history at the specified
+ <var class="Ar">commit</var>. The expected argument is a commit ID
+ SHA1 hash or an existing reference which will be resolved to a commit
+ ID. An abbreviated hash argument will be expanded to a full SHA1 hash
+ automatically, provided the abbreviation is unique.</dd>
+ <dt><a class="permalink" href="#r_4"><code class="Fl" id="r_4">-r</code></a>
+ <var class="Ar">repository-path</var></dt>
+ <dd>Use the repository at the specified path. If not specified, assume the
+ repository is located at or above the current working directory. If
+ this directory is a <code class="Nm">got</code> work tree, use the
+ repository path associated with this work tree.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#bl"><code class="Cm" id="bl">bl</code></a></dt>
+ <dd>Short alias for <code class="Cm">blame</code>.</dd>
+ <dt><a class="permalink" href="#tree"><code class="Cm" id="tree">tree</code></a>
+ [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+ [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+ [<code class="Fl">-i</code>] [<code class="Fl">-R]</code>
+ [<var class="Ar">path</var>]</dt>
+ <dd>Display a listing of files and directories at the specified directory path
+ in the repository. Entries shown in this listing may carry one of the
+ following trailing annotations:
+ <table class="Bl-column">
+ <tr>
+ <td>/</td>
+ <td>entry is a directory</td>
+ </tr>
+ <tr>
+ <td>*</td>
+ <td>entry is an executable file</td>
+ </tr>
+ </table>
+ <p class="Pp">If no <var class="Ar">path</var> is specified, list the
+ repository path corresponding to the current directory of the work tree,
+ or the root directory of the repository if there is no work tree.</p>
+ <p class="Pp">The options for <code class="Cm">got tree</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#c_5"><code class="Fl" id="c_5">-c</code></a>
+ <var class="Ar">commit</var></dt>
+ <dd>List files and directories as they appear in the specified
+ <var class="Ar">commit</var>. The expected argument is a commit ID
+ SHA1 hash or an existing reference which will be resolved to a commit
+ ID. An abbreviated hash argument will be expanded to a full SHA1 hash
+ automatically, provided the abbreviation is unique.</dd>
+ <dt><a class="permalink" href="#r_5"><code class="Fl" id="r_5">-r</code></a>
+ <var class="Ar">repository-path</var></dt>
+ <dd>Use the repository at the specified path. If not specified, assume the
+ repository is located at or above the current working directory. If
+ this directory is a <code class="Nm">got</code> work tree, use the
+ repository path associated with this work tree.</dd>
+ <dt><a class="permalink" href="#i"><code class="Fl" id="i">-i</code></a></dt>
+ <dd>Show object IDs of files (blob objects) and directories (tree
+ objects).</dd>
+ <dt><a class="permalink" href="#R"><code class="Fl" id="R">-R</code></a></dt>
+ <dd>Recurse into sub-directories in the repository.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#tr"><code class="Cm" id="tr">tr</code></a></dt>
+ <dd>Short alias for <code class="Cm">tree</code>.</dd>
+ <dt><a class="permalink" href="#ref"><code class="Cm" id="ref">ref</code></a>
+ [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+ [<code class="Fl">-l</code>] [<code class="Fl">-d</code>
+ <var class="Ar">name</var>] [<var class="Ar">name</var>
+ <var class="Ar">target</var>]</dt>
+ <dd>Manage references in a repository.
+ <p class="Pp">If no options are passed, expect two arguments and attempt to
+ create, or update, the reference with the given
+ <var class="Ar">name</var>, and make it point at the given
+ <var class="Ar">target</var>. The target may be an object ID SHA1 hash
+ or an existing reference which will be resolved to an object ID. An
+ abbreviated hash argument will be expanded to a full SHA1 hash
+ automatically, provided the abbreviation is unique.</p>
+ <p class="Pp">The options for <code class="Cm">got ref</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#r_6"><code class="Fl" id="r_6">-r</code></a>
+ <var class="Ar">repository-path</var></dt>
+ <dd>Use the repository at the specified path. If not specified, assume the
+ repository is located at or above the current working directory. If
+ this directory is a <code class="Nm">got</code> work tree, use the
+ repository path associated with this work tree.</dd>
+ <dt><a class="permalink" href="#l_2"><code class="Fl" id="l_2">-l</code></a></dt>
+ <dd>List all existing references in the repository.</dd>
+ <dt><a class="permalink" href="#d"><code class="Fl" id="d">-d</code></a>
+ <var class="Ar">name</var></dt>
+ <dd>Delete the reference with the specified name from the repository.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#branch"><code class="Cm" id="branch">branch</code></a>
+ [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+ [<code class="Fl">-l</code>] [<code class="Fl">-d</code>
+ <var class="Ar">name</var>] [<var class="Ar">name</var>
+ [<var class="Ar">base-branch</var>]]</dt>
+ <dd>Manage branches in a repository.
+ <p class="Pp">Branches are managed via references which live in the
+ “refs/heads/” reference namespace. The
+ <code class="Cm">got branch</code> command operates on references in
+ this namespace only.</p>
+ <p class="Pp">If no options are passed, expect one or two arguments and
+ attempt to create a branch with the given <var class="Ar">name</var>,
+ and make it point at the given <var class="Ar">base-branch</var>. If no
+ <var class="Ar">base-branch</var> is specified, default to the work
+ tree's current branch if invoked in a work tree, or to the repository's
+ HEAD reference.</p>
+ <p class="Pp">The options for <code class="Cm">got branch</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#r_7"><code class="Fl" id="r_7">-r</code></a>
+ <var class="Ar">repository-path</var></dt>
+ <dd>Use the repository at the specified path. If not specified, assume the
+ repository is located at or above the current working directory. If
+ this directory is a <code class="Nm">got</code> work tree, use the
+ repository path associated with this work tree.</dd>
+ <dt><a class="permalink" href="#l_3"><code class="Fl" id="l_3">-l</code></a></dt>
+ <dd>List all existing branches in the repository. If invoked in a work
+ tree, the work tree's current branch is shown with one the following
+ annotations:
+ <table class="Bl-column">
+ <tr>
+ <td>*</td>
+ <td>work tree's base commit matches the branch tip</td>
+ </tr>
+ <tr>
+ <td>~</td>
+ <td>work tree's base commit is out-of-date</td>
+ </tr>
+ </table>
+ </dd>
+ <dt><a class="permalink" href="#d_2"><code class="Fl" id="d_2">-d</code></a>
+ <var class="Ar">name</var></dt>
+ <dd>Delete the branch with the specified name from the repository. Only
+ the branch reference is deleted. Any commit, tree, and blob objects
+ belonging to the branch remain in the repository and may be removed
+ separately with Git's garbage collector.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#br"><code class="Cm" id="br">br</code></a></dt>
+ <dd>Short alias for <code class="Cm">branch</code>.</dd>
+ <dt><a class="permalink" href="#add"><code class="Cm" id="add">add</code></a>
+ <var class="Ar">file-path ...</var></dt>
+ <dd>Schedule unversioned files in a work tree for addition to the repository
+ in the next commit.</dd>
+ <dt><a class="permalink" href="#remove"><code class="Cm" id="remove">remove</code></a>
+ <var class="Ar">file-path ...</var></dt>
+ <dd>Remove versioned files from a work tree and schedule them for deletion
+ from the repository in the next commit.
+ <p class="Pp">The options for <code class="Cm">got remove</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#f_2"><code class="Fl" id="f_2">-f</code></a></dt>
+ <dd>Perform the operation even if a file contains uncommitted
+ modifications.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#rm"><code class="Cm" id="rm">rm</code></a></dt>
+ <dd>Short alias for <code class="Cm">remove</code>.</dd>
+ <dt><a class="permalink" href="#revert"><code class="Cm" id="revert">revert</code></a>
+ <var class="Ar">file-path ...</var></dt>
+ <dd>Revert any uncommited changes in files at the specified paths. File
+ contents will be overwritten with those contained in the work tree's base
+ commit. There is no way to bring discarded changes back after
+ <code class="Cm">got revert</code>!
+ <p class="Pp">If a file was added with <code class="Cm">got add</code> it
+ will become an unversioned file again. If a file was deleted with
+ <code class="Cm">got remove</code> it will be restored.</p>
+ </dd>
+ <dt><a class="permalink" href="#rv"><code class="Cm" id="rv">rv</code></a></dt>
+ <dd>Short alias for <code class="Cm">revert</code>.</dd>
+ <dt><a class="permalink" href="#commit"><code class="Cm" id="commit">commit</code></a>
+ [<code class="Fl">-m</code> <var class="Ar">message</var>]
+ [<var class="Ar">path ...</var>]</dt>
+ <dd>Create a new commit in the repository from changes in a work tree and use
+ this commit as the new base commit for the work tree. If no
+ <var class="Ar">path</var> is specified, commit all changes in the work
+ tree. Otherwise, commit changes at or within the specified paths.
+ <p class="Pp">If changes have been explicitly staged for commit with
+ <code class="Cm">got stage,</code> only commit staged changes and reject
+ any specified paths which have not been staged.</p>
+ <p class="Pp">Show the status of each affected file, using the following
+ status codes:</p>
+ <table class="Bl-column">
+ <tr>
+ <td>M</td>
+ <td>modified file</td>
+ </tr>
+ <tr>
+ <td>D</td>
+ <td>file was deleted</td>
+ </tr>
+ <tr>
+ <td>A</td>
+ <td>new file was added</td>
+ </tr>
+ </table>
+ <p class="Pp">Files without local changes will retain their previously
+ recorded base commit. Some <code class="Nm">got</code> commands may
+ refuse to run while the work tree contains files from multiple base
+ commits. The base commit of such a work tree can be made consistent by
+ running <code class="Cm">got update</code> across the entire work
+ tree.</p>
+ <p class="Pp">The <code class="Cm">got commit</code> command requires the
+ <code class="Ev">GOT_AUTHOR</code> environment variable to be set.</p>
+ <p class="Pp">The options for <code class="Cm">got commit</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#m_2"><code class="Fl" id="m_2">-m</code></a>
+ <var class="Ar">message</var></dt>
+ <dd>Use the specified log message when creating the new commit. Without
+ the <code class="Fl">-m</code> option, <code class="Cm">got
+ commit</code> opens a temporary file in an editor where a log message
+ can be written.</dd>
+ </dl>
+ <p class="Pp"><code class="Cm">got commit</code> will refuse to run if
+ certain preconditions are not met. If the work tree's current branch is
+ not in the “refs/heads/” reference namespace, new commits
+ may not be created on this branch. Local changes may only be committed
+ if they are based on file content found in the most recent commit on the
+ work tree's branch. If a path is found to be out of date,
+ <code class="Cm">got update</code> must be used first in order to merge
+ local changes with changes made in the repository.</p>
+ </dd>
+ <dt><a class="permalink" href="#ci"><code class="Cm" id="ci">ci</code></a></dt>
+ <dd>Short alias for <code class="Cm">commit</code>.</dd>
+ <dt><a class="permalink" href="#cherrypick"><code class="Cm" id="cherrypick">cherrypick</code></a>
+ <var class="Ar">commit</var></dt>
+ <dd>Merge changes from a single <var class="Ar">commit</var> into the work
+ tree. The specified <var class="Ar">commit</var> must be on a different
+ branch than the work tree's base commit. The expected argument is a
+ reference or a commit ID SHA1 hash. An abbreviated hash argument will be
+ expanded to a full SHA1 hash automatically, provided the abbreviation is
+ unique.
+ <p class="Pp">Show the status of each affected file, using the following
+ status codes:</p>
+ <table class="Bl-column">
+ <tr>
+ <td>G</td>
+ <td>file was merged</td>
+ </tr>
+ <tr>
+ <td>C</td>
+ <td>file was merged and conflicts occurred during merge</td>
+ </tr>
+ <tr>
+ <td>!</td>
+ <td>changes destined for a missing file were not merged</td>
+ </tr>
+ <tr>
+ <td>D</td>
+ <td>file was deleted</td>
+ </tr>
+ <tr>
+ <td>d</td>
+ <td>file's deletion was obstructed by local modifications</td>
+ </tr>
+ <tr>
+ <td>A</td>
+ <td>new file was added</td>
+ </tr>
+ <tr>
+ <td>~</td>
+ <td>changes destined for a non-regular file were not merged</td>
+ </tr>
+ </table>
+ <p class="Pp">The merged changes will appear as local changes in the work
+ tree, which may be viewed with <code class="Cm">got diff</code>, amended
+ manually or with further <code class="Cm">got cherrypick</code> comands,
+ committed with <code class="Cm">got commit</code>, or discarded again
+ with <code class="Cm">got revert</code>.</p>
+ <p class="Pp"><code class="Cm">got cherrypick</code> will refuse to run if
+ certain preconditions are not met. If the work tree contains multiple
+ base commits it must first be updated to a single base commit with
+ <code class="Cm">got update</code>. If the work tree already contains
+ files with merge conflicts, these conflicts must be resolved first.</p>
+ </dd>
+ <dt><a class="permalink" href="#cy"><code class="Cm" id="cy">cy</code></a></dt>
+ <dd>Short alias for <code class="Cm">cherrypick</code>.</dd>
+ <dt><a class="permalink" href="#backout"><code class="Cm" id="backout">backout</code></a>
+ <var class="Ar">commit</var></dt>
+ <dd>Reverse-merge changes from a single <var class="Ar">commit</var> into the
+ work tree. The specified <var class="Ar">commit</var> must be on the same
+ branch as the work tree's base commit. The expected argument is a
+ reference or a commit ID SHA1 hash. An abbreviated hash argument will be
+ expanded to a full SHA1 hash automatically, provided the abbreviation is
+ unique.
+ <p class="Pp">Show the status of each affected file, using the following
+ status codes:</p>
+ <table class="Bl-column">
+ <tr>
+ <td>G</td>
+ <td>file was merged</td>
+ </tr>
+ <tr>
+ <td>C</td>
+ <td>file was merged and conflicts occurred during merge</td>
+ </tr>
+ <tr>
+ <td>!</td>
+ <td>changes destined for a missing file were not merged</td>
+ </tr>
+ <tr>
+ <td>D</td>
+ <td>file was deleted</td>
+ </tr>
+ <tr>
+ <td>d</td>
+ <td>file's deletion was obstructed by local modifications</td>
+ </tr>
+ <tr>
+ <td>A</td>
+ <td>new file was added</td>
+ </tr>
+ <tr>
+ <td>~</td>
+ <td>changes destined for a non-regular file were not merged</td>
+ </tr>
+ </table>
+ <p class="Pp">The reverse-merged changes will appear as local changes in the
+ work tree, which may be viewed with <code class="Cm">got diff</code>,
+ amended manually or with further <code class="Cm">got backout</code>
+ comands, committed with <code class="Cm">got commit</code>, or discarded
+ again with <code class="Cm">got revert</code>.</p>
+ <p class="Pp"><code class="Cm">got backout</code> will refuse to run if
+ certain preconditions are not met. If the work tree contains multiple
+ base commits it must first be updated to a single base commit with
+ <code class="Cm">got update</code>. If the work tree already contains
+ files with merge conflicts, these conflicts must be resolved first.</p>
+ </dd>
+ <dt><a class="permalink" href="#bo"><code class="Cm" id="bo">bo</code></a></dt>
+ <dd>Short alias for <code class="Cm">backout</code>.</dd>
+ <dt><a class="permalink" href="#rebase"><code class="Cm" id="rebase">rebase</code></a>
+ [<code class="Fl">-a</code>] [<code class="Fl">-c]</code>
+ [<var class="Ar">branch</var>]</dt>
+ <dd>Rebase commits on the specified <var class="Ar">branch</var> onto the tip
+ of the current branch of the work tree. The <var class="Ar">branch</var>
+ must share common ancestry with the work tree's current branch. Rebasing
+ begins with the first descendent commit of the youngest common ancestor
+ commit shared by the specified <var class="Ar">branch</var> and the work
+ tree's current branch, and stops once the tip commit of the specified
+ <var class="Ar">branch</var> has been rebased.
+ <p class="Pp">Rebased commits are accumulated on a temporary branch which
+ the work tree will remain switched to throughout the entire rebase
+ operation. Commits on this branch represent the same changes with the
+ same log messages as their counterparts on the original
+ <var class="Ar">branch</var>, but with different commit IDs. Once
+ rebasing has completed successfully, the temporary branch becomes the
+ new version of the specified <var class="Ar">branch</var> and the work
+ tree is automatically switched to it.</p>
+ <p class="Pp">While rebasing commits, show the status of each affected file,
+ using the following status codes:</p>
+ <table class="Bl-column">
+ <tr>
+ <td>G</td>
+ <td>file was merged</td>
+ </tr>
+ <tr>
+ <td>C</td>
+ <td>file was merged and conflicts occurred during merge</td>
+ </tr>
+ <tr>
+ <td>!</td>
+ <td>changes destined for a missing file were not merged</td>
+ </tr>
+ <tr>
+ <td>D</td>
+ <td>file was deleted</td>
+ </tr>
+ <tr>
+ <td>d</td>
+ <td>file's deletion was obstructed by local modifications</td>
+ </tr>
+ <tr>
+ <td>A</td>
+ <td>new file was added</td>
+ </tr>
+ <tr>
+ <td>~</td>
+ <td>changes destined for a non-regular file were not merged</td>
+ </tr>
+ </table>
+ <p class="Pp">If merge conflicts occur the rebase operation is interrupted
+ and may be continued once conflicts have been resolved. Alternatively,
+ the rebase operation may be aborted which will leave
+ <var class="Ar">branch</var> unmodified and the work tree switched back
+ to its original branch.</p>
+ <p class="Pp">If a merge conflict is resolved in a way which renders the
+ merged change into a no-op change, the corresponding commit will be
+ elided when the rebase operation continues.</p>
+ <p class="Pp"><code class="Cm">got rebase</code> will refuse to run if
+ certain preconditions are not met. If the work tree contains multiple
+ base commits it must first be updated to a single base commit with
+ <code class="Cm">got update</code>. If changes have been staged with
+ <code class="Cm">got stage</code>, these changes must first be comitted
+ with <code class="Cm">got commit</code> or unstaged with
+ <code class="Cm">got unstage</code>. If the work tree contains local
+ changes, these changes must first be committed with <code class="Cm">got
+ commit</code> or reverted with <code class="Cm">got revert</code>. If
+ the <var class="Ar">branch</var> contains changes to files outside of
+ the work tree's path prefix, the work tree cannot be used to rebase this
+ branch.</p>
+ <p class="Pp">The <code class="Cm">got update</code> and
+ <code class="Cm">got commit</code> commands will refuse to run while a
+ rebase operation is in progress. Other commands which manipulate the
+ work tree may be used for conflict resolution purposes.</p>
+ <p class="Pp">The options for <code class="Cm">got rebase</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#a"><code class="Fl" id="a">-a</code></a></dt>
+ <dd>Abort an interrupted rebase operation. If this option is used, no
+ further command-line arguments are allowed.</dd>
+ <dt><a class="permalink" href="#c_6"><code class="Fl" id="c_6">-c</code></a></dt>
+ <dd>Continue an interrupted rebase operation. If this option is used, no
+ further command-line arguments are allowed.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#rb"><code class="Cm" id="rb">rb</code></a></dt>
+ <dd>Short alias for <code class="Cm">rebase</code>.</dd>
+ <dt><a class="permalink" href="#histedit"><code class="Cm" id="histedit">histedit</code></a>
+ [<code class="Fl">-a</code>] [<code class="Fl">-c]</code>
+ [<code class="Fl">-F</code> <var class="Ar">histedit-script</var>]</dt>
+ <dd>Edit commit history between the work tree's current base commit and the
+ tip commit of the work tree's current branch.
+ <p class="Pp">Editing of commit history is controlled via a
+ <var class="Ar">histedit script</var> which can be edited interactively
+ or passed on the command line. The format of the histedit script is
+ line-based. Each line in the script begins with a command name, followed
+ by whitespace and an argument. For most commands, the expected argument
+ is a commit ID SHA1 hash. Any remaining text on the line is ignored.
+ Lines which begin with the ‘#’ character are ignored
+ entirely.</p>
+ <p class="Pp">The available commands are as follows:</p>
+ <table class="Bl-column">
+ <tr>
+ <td>pick <var class="Ar">commit</var></td>
+ <td>Use the specified commit as it is.</td>
+ </tr>
+ <tr>
+ <td>edit <var class="Ar">commit</var></td>
+ <td>Use the specified commit but once changes have been merged into the
+ work tree interrupt the histedit operation for amending.</td>
+ </tr>
+ <tr>
+ <td>fold <var class="Ar">commit</var></td>
+ <td>Combine the specified commit with the next commit listed further
+ below that will be used.</td>
+ </tr>
+ <tr>
+ <td>drop <var class="Ar">commit</var></td>
+ <td>Remove this commit from the edited history.</td>
+ </tr>
+ <tr>
+ <td>mesg <var class="Ar">log-message</var></td>
+ <td>Use the specified single-line log message for the commit on the
+ previous line. If the log message argument is left empty, open an
+ editor where a new log message can be written.</td>
+ </tr>
+ </table>
+ <p class="Pp">Every commit in the history being edited must be mentioned in
+ the script. Lines may be re-ordered to change the order of commits in
+ the edited history.</p>
+ <p class="Pp">Edited commits are accumulated on a temporary branch which the
+ work tree will remain switched to throughout the entire histedit
+ operation. Once history editing has completed successfully, the
+ temporary branch becomes the new version of the work tree's branch and
+ the work tree is automatically switched to it.</p>
+ <p class="Pp">While merging commits, show the status of each affected file,
+ using the following status codes:</p>
+ <table class="Bl-column">
+ <tr>
+ <td>G</td>
+ <td>file was merged</td>
+ </tr>
+ <tr>
+ <td>C</td>
+ <td>file was merged and conflicts occurred during merge</td>
+ </tr>
+ <tr>
+ <td>!</td>
+ <td>changes destined for a missing file were not merged</td>
+ </tr>
+ <tr>
+ <td>D</td>
+ <td>file was deleted</td>
+ </tr>
+ <tr>
+ <td>d</td>
+ <td>file's deletion was obstructed by local modifications</td>
+ </tr>
+ <tr>
+ <td>A</td>
+ <td>new file was added</td>
+ </tr>
+ <tr>
+ <td>~</td>
+ <td>changes destined for a non-regular file were not merged</td>
+ </tr>
+ </table>
+ <p class="Pp">If merge conflicts occur the histedit operation is interrupted
+ and may be continued once conflicts have been resolved. Alternatively,
+ the histedit operation may be aborted which will leave the work tree
+ switched back to its original branch.</p>
+ <p class="Pp">If a merge conflict is resolved in a way which renders the
+ merged change into a no-op change, the corresponding commit will be
+ elided when the histedit operation continues.</p>
+ <p class="Pp"><code class="Cm">got histedit</code> will refuse to run if
+ certain preconditions are not met. If the work tree's current branch is
+ not in the “refs/heads/” reference namespace, the history
+ of the branch may not be edited. If the work tree contains multiple base
+ commits it must first be updated to a single base commit with
+ <code class="Cm">got update</code>. If changes have been staged with
+ <code class="Cm">got stage</code>, these changes must first be comitted
+ with <code class="Cm">got commit</code> or unstaged with
+ <code class="Cm">got unstage</code>. If the work tree contains local
+ changes, these changes must first be committed with <code class="Cm">got
+ commit</code> or reverted with <code class="Cm">got revert</code>. If
+ the edited history contains changes to files outside of the work tree's
+ path prefix, the work tree cannot be used to edit the history of this
+ branch.</p>
+ <p class="Pp">The <code class="Cm">got update</code> command will refuse to
+ run while a histedit operation is in progress. Other commands which
+ manipulate the work tree may be used, and the <code class="Cm">got
+ commit</code> command may be used to commit arbitrary changes to the
+ temporary branch while the histedit operation is interrupted.</p>
+ <p class="Pp">The options for <code class="Cm">got histedit</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#a_2"><code class="Fl" id="a_2">-a</code></a></dt>
+ <dd>Abort an interrupted histedit operation. If this option is used, no
+ further command-line arguments are allowed.</dd>
+ <dt><a class="permalink" href="#c_7"><code class="Fl" id="c_7">-c</code></a></dt>
+ <dd>Continue an interrupted histedit operation. If this option is used, no
+ further command-line arguments are allowed.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#he"><code class="Cm" id="he">he</code></a></dt>
+ <dd>Short alias for <code class="Cm">histedit</code>.</dd>
+ <dt><a class="permalink" href="#stage"><code class="Cm" id="stage">stage</code></a>
+ [<code class="Fl">-l</code>] <var class="Ar">file-path ...</var></dt>
+ <dd>Stage local changes at the specified paths for inclusion in the next
+ commit. Paths may be staged if they are added, modified, or deleted
+ according to <code class="Cm">got status</code>.
+ <p class="Pp">Staged changes affect the behaviour of <code class="Cm">got
+ commit</code>, <code class="Cm">got status</code>, and
+ <code class="Cm">got diff</code>. While paths with staged changes exist,
+ the <code class="Cm">got commit</code> command will refuse to commit any
+ paths which do not have staged changes. Local changes created on top of
+ staged changes can only be committed if the path is staged again, or if
+ the staged changes are committed first. The <code class="Cm">got
+ status</code> command will show both local changes and staged changes.
+ The <code class="Cm">got diff</code> command is able to display local
+ changes relative to staged changes, and to display staged changes
+ relative to the repository. The <code class="Cm">got revert</code>
+ command cannot revert staged changes but may be used to revert local
+ changes relative to staged changes.</p>
+ <p class="Pp">The options for <code class="Cm">got stage</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#l_4"><code class="Fl" id="l_4">-l</code></a></dt>
+ <dd>Instead of staging new changes, list paths which are already staged,
+ along with the IDs of corresponding blob objects. Indicate staged
+ status using the following status codes:
+ <table class="Bl-column">
+ <tr>
+ <td>A</td>
+ <td>file addition is staged</td>
+ </tr>
+ <tr>
+ <td>M</td>
+ <td>file modification is staged</td>
+ </tr>
+ <tr>
+ <td>D</td>
+ <td>file deletion is staged</td>
+ </tr>
+ </table>
+ </dd>
+ </dl>
+ <p class="Pp"><code class="Cm">got stage</code> will refuse to run if
+ certain preconditions are not met. If a file contains merge conflicts,
+ these conflicts must be resolved first. If a file is found to be out of
+ date relative to the head commit on the work tree's current branch, the
+ file must be updated with <code class="Cm">got update</code> before it
+ can be staged (however, this does not prevent the file from becoming
+ out-of-date at some point after having been staged).</p>
+ <p class="Pp">The <code class="Cm">got update</code>, <code class="Cm">got
+ rebase</code>, and <code class="Cm">got histedit</code> commands will
+ refuse to run while staged changes exist. If staged changes cannot be
+ committed because a staged path is out of date, the path must be
+ unstaged with <code class="Cm">got unstage</code> before it can be
+ updated with <code class="Cm">got update</code>, and may then be staged
+ again if necessary.</p>
+ </dd>
+ <dt><a class="permalink" href="#sg"><code class="Cm" id="sg">sg</code></a></dt>
+ <dd>Short alias for <code class="Cm">stage</code>.</dd>
+ <dt><a class="permalink" href="#unstage"><code class="Cm" id="unstage">unstage</code></a>
+ [<var class="Ar">path ...</var>]</dt>
+ <dd>Merge staged changes back into the work tree and put affected paths back
+ into non-staged status. If no <var class="Ar">path</var> is specified,
+ unstage all staged changes across the entire work tree.
+ <p class="Pp">Show the status of each affected file, using the following
+ status codes:</p>
+ <table class="Bl-column">
+ <tr>
+ <td>G</td>
+ <td>file was unstaged</td>
+ </tr>
+ <tr>
+ <td>C</td>
+ <td>file was unstaged and conflicts occurred during merge</td>
+ </tr>
+ <tr>
+ <td>!</td>
+ <td>changes destined for a missing file were not merged</td>
+ </tr>
+ <tr>
+ <td>D</td>
+ <td>file was staged as deleted and still is deleted</td>
+ </tr>
+ <tr>
+ <td>d</td>
+ <td>file's deletion was obstructed by local modifications</td>
+ </tr>
+ <tr>
+ <td>~</td>
+ <td>changes destined for a non-regular file were not merged</td>
+ </tr>
+ </table>
+ </dd>
+ <dt><a class="permalink" href="#ug"><code class="Cm" id="ug">ug</code></a></dt>
+ <dd>Short alias for <code class="Cm">unstage</code>.</dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="ENVIRONMENT"><a class="permalink" href="#ENVIRONMENT">ENVIRONMENT</a></h1>
+<dl class="Bl-tag">
+ <dt><a class="permalink" href="#GOT_AUTHOR"><code class="Ev" id="GOT_AUTHOR">GOT_AUTHOR</code></a></dt>
+ <dd>The author's name and email address for <code class="Cm">got commit</code>
+ and <code class="Cm">got import</code>, for example:
+ <span class="An">Stefan Sperling</span>
+ <<a class="Mt" href="mailto:stsp@openbsd.org">stsp@openbsd.org</a>></dd>
+ <dt><a class="permalink" href="#VISUAL,"><code class="Ev" id="VISUAL,">VISUAL,</code></a>
+ <code class="Ev">EDITOR</code></dt>
+ <dd>The editor spawned by <code class="Cm">got commit</code>.</dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="EXIT_STATUS"><a class="permalink" href="#EXIT_STATUS">EXIT
+ STATUS</a></h1>
+The <code class="Nm">got</code> utility exits 0 on success,
+ and >0 if an error occurs.
+</section>
+<section class="Sh">
+<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
+Clone an existing Git repository for use with <code class="Nm">got</code>. This
+ step currently requires <a class="Xr">git(1)</a>:
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ cd /var/git/</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ git clone --bare
+ https://github.com/openbsd/src.git</code></div>
+<p class="Pp">Alternatively, for quick and dirty local testing of
+ <code class="Nm">got</code> a new Git repository could be created and
+ populated with files, e.g. from a temporary CVS checkout located at
+ <span class="Pa">/tmp/src</span>:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got init
+ /var/git/src.git</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got import -r /var/git/src.git -I
+ CVS -I obj /tmp/src</code></div>
+<p class="Pp">Check out a work tree from the Git repository to /usr/src:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got checkout /var/git/src.git
+ /usr/src</code></div>
+<p class="Pp">View local changes in a work tree directory:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got status</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got diff | less</code></div>
+<p class="Pp">In a work tree or a git repository directory, list all branch
+ references:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got branch -l</code></div>
+<p class="Pp">In a work tree or a git repository directory, create a new branch
+ called “unified-buffer-cache” which is forked off the
+ “master” branch:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got branch unified-buffer-cache
+ master</code></div>
+<p class="Pp">Switch an existing work tree to the branch
+ “unified-buffer-cache”. Local changes in the work tree will be
+ preserved and merged if necessary:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got update -b
+ unified-buffer-cache</code></div>
+<p class="Pp">Create a new commit from local changes in a work tree directory.
+ This new commit will become the head commit of the work tree's current
+ branch:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got commit</code></div>
+<p class="Pp">In a work tree or a git repository directory, view changes
+ committed in the 3 most recent commits to the work tree's branch, or the
+ branch resolved via the repository's HEAD reference, respectively:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got log -p -l 3 -f</code></div>
+<p class="Pp">Add new files and remove obsolete files in a work tree
+ directory:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got add
+ sys/uvm/uvm_ubc.c</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got remove
+ sys/uvm/uvm_vnode.c</code></div>
+<p class="Pp">Create a new commit from local changes in a work tree directory
+ with a pre-defined log message.</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got commit -m 'unify the buffer
+ cache'</code></div>
+<p class="Pp">Update any work tree checked out from the
+ “unified-buffer-cache” branch to the latest commit on this
+ branch:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got update</code></div>
+<p class="Pp">Roll file content on the unified-buffer-cache branch back by one
+ commit, and then fetch the rolled-back change into the work tree as a local
+ change to be amended and perhaps committed again:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got backout
+ unified-buffer-cache</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got commit -m 'roll back
+ previous'</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ # now back out the previous backout
+ :-)</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got backout
+ unified-buffer-cache</code></div>
+<p class="Pp">Fetch new upstream commits into the local repository's master
+ branch. This step currently requires <a class="Xr">git(1)</a>:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ cd /var/git/src.git</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ git fetch origin
+ master:master</code></div>
+<p class="Pp">Rebase the “unified-buffer-cache” branch on top of
+ the new head commit of the “master” branch.</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got update -b master</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got rebase
+ unified-buffer-cache</code></div>
+<p class="Pp">Create a patch from all changes on the unified-buffer-cache
+ branch. The patch can be mailed out for review and applied to OpenBSD's CVS
+ tree:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got diff master
+ unified-buffer-cache > /tmp/ubc.diff</code></div>
+<p class="Pp">Edit the entire commit history of the
+ “unified-buffer-cache” branch:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got update -b
+ unified-buffer-cache</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got update -c master</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got histedit</code></div>
+<p class="Pp">Additional steps are necessary if local changes need to be pushed
+ back to the remote repository, which currently requires <code class="Cm">git
+ fetch</code> and <code class="Cm">git push</code>. Before working against
+ existing branches in a repository cloned with “git clone
+ --bare”, a Git “refspec” must be configured to map all
+ references in the remote repository into the “refs/remotes”
+ namespace of the local repository. This can achieved by setting Git's
+ <span class="Pa">remote.origin.fetch</span> configuration variable to the
+ value “+refs/heads/*:refs/remotes/origin/*” with the
+ <code class="Cm">git config</code> command:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ cd /var/git/repo</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ git config remote.origin.fetch
+ '+refs/heads/*:refs/remotes/origin/*'</code></div>
+<p class="Pp">Alternatively, the following <span class="Pa">fetch</span>
+ configuration item can be added manually to the Git repository's
+ <span class="Pa">config</span> file:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">[remote origin]</code></div>
+<div class="Bd Bd-indent"><code class="Li">url = ...</code></div>
+<div class="Bd Bd-indent"><code class="Li">fetch =
+ +refs/heads/*:refs/remotes/origin/*</code></div>
+<p class="Pp">This configuration leaves the local repository's
+ “refs/heads” namespace free for use by local branches checked
+ out with <code class="Cm">got checkout</code> and, if needed, created with
+ <code class="Cm">got branch</code>.</p>
+<p class="Pp">Branches in the “remotes/origin” namespace can be
+ updated with incoming changes from the remote repository with
+ <code class="Cm">git fetch</code>:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ cd /var/git/repo</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ git fetch</code></div>
+<p class="Pp">Before outgoing changes on the local “master” branch
+ can be pushed to the remote repository, the local “master”
+ branch must be rebased onto the “origin/master” branch:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ got update -b
+ origin/master</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ got rebase master</code></div>
+<p class="Pp">Changes on the local “master” branch can then be
+ pushed to the remote repository with <code class="Cm">git push</code>:</p>
+<p class="Pp"></p>
+<div class="Bd Bd-indent"><code class="Li">$ cd /var/git/repo</code></div>
+<div class="Bd Bd-indent"><code class="Li">$ git push origin master</code></div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<a class="Xr">tog(1)</a>, <a class="Xr">git-repository(5)</a>,
+ <a class="Xr">got-worktree(5)</a>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
+<span class="An">Stefan Sperling</span>
+ <<a class="Mt" href="mailto:stsp@openbsd.org">stsp@openbsd.org</a>>
+<br/>
+<span class="An">Martin Pieuchot</span>
+ <<a class="Mt" href="mailto:mpi@openbsd.org">mpi@openbsd.org</a>>
+<br/>
+<span class="An">joshua stein</span>
+ <<a class="Mt" href="mailto:jcs@openbsd.org">jcs@openbsd.org</a>>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="CAVEATS"><a class="permalink" href="#CAVEATS">CAVEATS</a></h1>
+<code class="Nm">got</code> is a work-in-progress and many commands remain to be
+ implemented. At present, the user has to fall back on <a class="Xr">git(1)</a>
+ to perform many tasks, in particular tasks related to repository
+ administration and tasks which require a network connection.
+</section>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">August 4, 2019</td>
+ <td class="foot-os">OpenBSD 6.5</td>
+ </tr>
+</table>
+</body>
+</html>
blob - /dev/null
blob + 97ace786464b193baf1cd51e54016aea3016e62f (mode 644)
Binary files /dev/null and got.png differ
blob - /dev/null
blob + 627271783e42d3e398372616e05d46102ff9b4fa (mode 644)
--- /dev/null
+++ index.html
+<!doctype html>
+<html lang=en>
+ <meta charset=utf-8>
+ <title>Game of Trees</title>
+ <meta name="description" content="the main Game of Trees page">
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+ <link rel="canonical" href="https://stsp.name/got/index.html">
+ <link rel="stylesheet" href="openbsd.css">
+
+<table id="project-main" class="not-openbsd">
+ <tr class="align-top">
+ <td>
+
+ <h1>About Got</h1>
+ <ul>
+ <li><a href="goals.html">Project Goals</a>
+ </ul>
+ <h1>Resources</h1>
+ <ul>
+ <li><a href="manual.html">Manual Pages</a>
+ </ul>
+ <h1>For OpenBSD</h1>
+ <ul>
+ <li><a href="install.html">Installation</a>
+ <li><a href="code.html">Get source code</a>
+ </ul>
+<!--
+ <h1>For other systems</h1>
+ <ul>
+ <li><a href="portable.html">FreeBSD</a>
+ </ul>
+-->
+
+ <td>
+ <h1 class="header">
+ <img src="got.png" height=243 width=400 alt="[Game of Trees]">
+ </h1>
+
+ <p id="callout">
+ Got is to be released soon.
+
+<p>
+Game of Trees (Got) is a version control system which prioritizes ease
+of use and simplicity over flexibility.
+
+<p>
+Got is being developed exclusively on
+<a href="https://www.openbsd.org">OpenBSD</a>. It is not a drop-in
+replacement for other version control systems and it does not attempt
+to compete with anything else than the use of other version control
+systems in the context of the OpenBSD project.
+Got's target audience are OpenBSD developers, and its focus is directed
+at the particular needs and use cases of the OpenBSD project.
+
+<p>
+Game of Trees is developed by <a href="https://stsp.name">Stefan Sperling</a>
+with help from other OpenBSD developers</a>.
+The software is freely usable and re-usable by everyone under
+a BSD license.
+
+
+</table>
blob - /dev/null
blob + e9984c2ddffaab9e0dc33772ad316239b3eb7de1 (mode 644)
--- /dev/null
+++ manual.html
+<!doctype html>
+<html lang=en>
+<meta charset=utf-8>
+
+<title>Game of Trees Manual Pages</title>
+<meta name="description" content="Game of Trees Manual Pages">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<link rel="stylesheet" type="text/css" href="openbsd.css">
+<link rel="canonical" href="https://stsp.name/got/manual.html">
+
+<h2>
+<a href="index.html">
+<i>Game of Trees</i></a>
+Manual Pages
+</h2>
+<hr>
+<ul>
+<li><a href="got.1.html">got</a> — command line interface
+<li><a href="tog.1.html">tog</a> — interactive repository browser
+<li><a href="got-worktree.5.html">got-worktree</a> — Got work tree format
+<li><a href="git-repository.5.html">git-repository</a> — Git repository format
+</ul>
blob - /dev/null
blob + 2b0849318b79f0d8454a3531d30f88c1da427faf (mode 644)
--- /dev/null
+++ openbsd.css
+/* $OpenBSD: openbsd.css,v 1.9 2019/06/03 02:43:03 deraadt Exp $ */
+
+:root {
+ --red: #E00000;
+ --green: #008100;
+ --blue: #0000E0;
+ --buildhead: #E0E0E0;
+}
+
+:link {
+ color: #23238E;
+}
+
+:visited {
+ color: #008088;
+}
+
+body {
+ background-color: #FFFFFF;
+ color: #111111;
+ margin: 15px auto;
+ padding: 0 10px;
+}
+
+code {
+ white-space: nowrap;
+}
+
+@media (min-width: 800px) {
+ body {
+ max-width: 85%;
+ }
+}
+
+tt {
+ white-space: pre;
+}
+
+.cmdbox {
+ background: #F5F5F5;
+ border: 1px solid #AAAAAA;
+ overflow: auto;
+ padding: 10px;
+}
+
+#OpenBSD {
+ color: #E00000;
+}
+
+#OpenBSD :link i, #OpenBSD :visited i {
+ color: #0000FF;
+}
+
+#OpenBSD :link b, #OpenBSD :visited b {
+ color: #000084;
+}
+
+#OpenBSD small {
+ font-weight: normal;
+ float: right;
+}
+
+/* sidebar layout */
+
+#project-main {
+ height: 100%;
+ border-collapse: collapse;
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ top: 0;
+}
+
+#project-main td {
+ padding: 4px;
+}
+
+#project-main tr td:first-child {
+ border-right: 11px solid;
+}
+
+#project-main tr td:first-child {
+ background-color: #6BBDD6;
+ border-color: #007B9C;
+}
+
+#project-main.not-openbsd tr td:first-child {
+ background-color: #6BBDD6;
+ border-color: #007B9C;
+}
+
+#project-main tr td:first-child h1 {
+ margin: 0;
+ font-size: 15pt;
+ white-space: nowrap;
+}
+
+#project-main tr td:first-child ul {
+ margin-top: 0;
+ margin-bottom: 1em;
+ padding-left: 0;
+}
+
+#project-main tr td:first-child ul li {
+ list-style-type: none;
+ list-style-position: inside;
+ margin-left: 0.5em;
+}
+
+#project-main .header {
+ margin: 0;
+ text-align: center;
+}
+
+#callout {
+ color: #E00000;
+ font-weight: bold;
+ text-align: center;
+}
+
+.not-openbsd #callout {
+ color: #0000A0;
+ font-weight: normal;
+}
+
+#project-main .align-top {
+ vertical-align: top;
+}
+
+#project-main .align-bottom {
+ vertical-align: bottom;
+}
+
+/* errataXX.html */
+
+#errata strong {
+ color: var(--green);
+}
+
+/* XX.html */
+
+#release #OpenBSD + table {
+ border-spacing: 0;
+ margin-bottom: 1.5em;
+}
+
+#release #OpenBSD + table td {
+ vertical-align: top;
+}
+
+#release #OpenBSD + table > tbody > tr > td {
+ padding-left: 1.4em;
+}
+
+#release #OpenBSD + table ul {
+ margin-left: 0;
+ padding-left: 0;
+}
+
+#release #OpenBSD + table ul li {
+ margin-left: 0;
+ padding-left: 0;
+}
+
+#release cite.isbn {
+ color: var(--red);
+ font-style: normal;
+}
+
+#release code.reldir {
+ color: var(--red);
+ font-family: serif;
+}
+
+#release table.signify {
+ font-family: monospace;
+}
+
+#release table.signify td {
+ padding: 0;
+}
+
+#release h3 {
+ color: var(--blue);
+}
+
+#release #quickinstall h3 {
+ color: var(--red);
+}
+
+#release kbd {
+ font-weight: bolder;
+}
+
+#release #new li p {
+ margin-bottom: 0;
+}
+
+#release #new li p + p {
+ margin-top: 0;
+}
+
+#release #new li + li {
+ margin-top: 1em;
+}
+
+#release #new li li + li {
+ margin-top: 0;
+}
+
+#release #new li li ul {
+ margin-bottom: 0;
+}
+
+#release #quickinstall p:first-child {
+ margin-left: 0;
+}
+
+#release #quickinstall p {
+ margin-left: 2.5em;
+}
+
+#release #quickinstall blockquote {
+ margin-left: 4.5em;
+}
+
+/* platform pages */
+
+#platform #OpenBSD + hr + table {
+ margin-bottom: 0;
+}
+#platform #OpenBSD + hr + table tr {
+ margin-left: 0;
+}
+
+#platform #OpenBSD + hr + table td {
+ vertical-align: top;
+ padding-left: 0;
+ padding-bottom: 0;
+}
+
+#platform #OpenBSD + hr + table p {
+ margin-top: 0;
+}
+
+#platform #OpenBSD + hr + table p:last-child {
+ margin-bottom: 0;
+}
+
+#platform h3 {
+ color: var(--blue);
+}
+
+/* redefine colors for dark mode */
+
+@media (prefers-color-scheme: dark) {
+ :root {
+ --red: #E05434;
+ --green: #20B700;
+ --blue: #A7C1E5;
+ --buildhead: #474749;
+ }
+
+ :link {
+ color: #BAD7FF;
+ }
+
+ :visited {
+ color: #F6BAFF;
+ }
+
+ body {
+ background-color: #1E1F21;
+ color: #EEEFF1;
+ }
+
+ .cmdbox {
+ background: #000000;
+ color: #FFFFFFF;
+ }
+
+ #OpenBSD :link {
+ text-decoration-color: #CF4229;
+ }
+
+ #OpenBSD :link i, #OpenBSD :visited i {
+ color: #F2CA30;
+ }
+
+ #OpenBSD :link b, #OpenBSD :visited b {
+ color: #CF4229;
+ }
+
+ #OpenBSD {
+ color: #EEEFF1;
+ }
+
+ #faq #OpenBSD small :link {
+ text-decoration-color: #BAD7FF;
+ }
+
+ #project-main tr td:first-child {
+ background-color: #202F51;
+ border-color: #97BADB;
+ }
+
+ #project-main.not-openbsd tr td:first-child {
+ background-color: #202F51;
+ border-color: #97BADB;
+ }
+
+ #callout {
+ color: #E05434;
+ }
+
+ .not-openbsd #callout {
+ color: #E05434;
+ }
+}
blob - /dev/null
blob + f5c7738b51ed6a308fbc963b2e4ebe4d85343829 (mode 644)
--- /dev/null
+++ tog.1.html
+<!DOCTYPE html>
+<html>
+<!-- This is an automatically generated file. Do not edit.
+ Copyright (c) 2018 Stefan Sperling
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ -->
+<head>
+ <meta charset="utf-8"/>
+ <style>
+ table.head, table.foot { width: 100%; }
+ td.head-rtitle, td.foot-os { text-align: right; }
+ td.head-vol { text-align: center; }
+ div.Pp { margin: 1ex 0ex; }
+ div.Nd, div.Bf, div.Op { display: inline; }
+ span.Pa, span.Ad { font-style: italic; }
+ span.Ms { font-weight: bold; }
+ dl.Bl-diag > dt { font-weight: bold; }
+ code.Nm, code.Fl, code.Cm, code.Ic, code.In, code.Fd, code.Fn,
+ code.Cd { font-weight: bold; font-family: inherit; }
+ </style>
+ <title>TOG(1)</title>
+</head>
+<body>
+<table class="head">
+ <tr>
+ <td class="head-ltitle">TOG(1)</td>
+ <td class="head-vol">General Commands Manual</td>
+ <td class="head-rtitle">TOG(1)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<section class="Sh">
+<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
+<code class="Nm">tog</code> —
+<div class="Nd">git repository browser</div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
+<table class="Nm">
+ <tr>
+ <td><code class="Nm">tog</code></td>
+ <td><var class="Ar">command</var> [<code class="Fl">-h</code>]
+ [<var class="Ar">arg ...</var>]</td>
+ </tr>
+</table>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+<code class="Nm">tog</code> is an interactive read-only browser for git
+ repositories. This repository format is described in
+ <a class="Xr">git-repository(5)</a>.
+<p class="Pp"><code class="Nm">tog</code> supports several types of views which
+ display repository data:</p>
+<dl class="Bl-tag">
+ <dt>Log view</dt>
+ <dd>Displays commits in the repository's history. This view is displayed
+ initially if no <var class="Ar">command</var> is specified.</dd>
+ <dt>Diff view</dt>
+ <dd>Displays changes made in a particular commit.</dd>
+ <dt>Blame view</dt>
+ <dd>Displays the line-by-line history of a file.</dd>
+ <dt>Tree view</dt>
+ <dd>Displays the tree corresponding to a particular commit.</dd>
+</dl>
+<p class="Pp"><code class="Nm">tog</code> provides global and command-specific
+ key bindings and options. The global key bindings are:</p>
+<dl class="Bl-tag">
+ <dt><a class="permalink" href="#Q"><code class="Cm" id="Q">Q</code></a></dt>
+ <dd>Quit <code class="Nm">tog</code>.</dd>
+ <dt><a class="permalink" href="#q"><code class="Cm" id="q">q</code></a></dt>
+ <dd>Quit the view which is in focus.</dd>
+ <dt><a class="permalink" href="#Tab"><code class="Cm" id="Tab">Tab</code></a></dt>
+ <dd>Switch focus between views.</dd>
+ <dt><a class="permalink" href="#f"><code class="Cm" id="f">f</code></a></dt>
+ <dd>Toggle fullscreen mode for a split-screen view.
+ <code class="Nm">tog</code> will automatically use split-screen views if
+ the size of the terminal window is sufficiently large.</dd>
+</dl>
+<p class="Pp">Global options must precede the command name, and are as
+ follows:</p>
+<dl class="Bl-tag">
+ <dt><a class="permalink" href="#h"><code class="Fl" id="h">-h</code></a></dt>
+ <dd>Display usage information.</dd>
+ <dt><a class="permalink" href="#V"><code class="Fl" id="V">-V</code></a></dt>
+ <dd>Display program version and exit immediately.</dd>
+</dl>
+<p class="Pp">The commands for <code class="Nm">tog</code> are as follows:</p>
+<dl class="Bl-tag">
+ <dt><a class="permalink" href="#log"><code class="Cm" id="log">log</code></a>
+ [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+ [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+ [<var class="Ar">path</var>]</dt>
+ <dd>Display history of a repository. If a <var class="Ar">path</var> is
+ specified, show only commits which modified this path.
+ <p class="Pp">This command is also executed if no explicit command is
+ specified.</p>
+ <p class="Pp">The key bindings for <code class="Cm">tog log</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#Down-arrow,_j,__,_Full_stop"><code class="Cm" id="Down-arrow,_j,__,_Full_stop">Down-arrow,
+ j, >, Full stop</code></a></dt>
+ <dd>Move the selection cursor down.</dd>
+ <dt><a class="permalink" href="#Up-arrow,_k,__,_Comma"><code class="Cm" id="Up-arrow,_k,__,_Comma">Up-arrow,
+ k, <, Comma</code></a></dt>
+ <dd>Move the selection cursor up.</dd>
+ <dt><a class="permalink" href="#Page-down,_Ctrl+f"><code class="Cm" id="Page-down,_Ctrl+f">Page-down,
+ Ctrl+f</code></a></dt>
+ <dd>Move the selection cursor down one page.</dd>
+ <dt><a class="permalink" href="#Page-up,_Ctrl+b"><code class="Cm" id="Page-up,_Ctrl+b">Page-up,
+ Ctrl+b</code></a></dt>
+ <dd>Move the selection cursor up one page.</dd>
+ <dt><a class="permalink" href="#Enter,_Space"><code class="Cm" id="Enter,_Space">Enter,
+ Space</code></a></dt>
+ <dd>Open a <code class="Cm">diff</code> view showing file changes made in
+ the currently selected commit.</dd>
+ <dt><a class="permalink" href="#t"><code class="Cm" id="t">t</code></a></dt>
+ <dd>Open a <code class="Cm">tree</code> view showing the tree for the
+ currently selected commit.</dd>
+ <dt><a class="permalink" href="#Backspace"><code class="Cm" id="Backspace">Backspace</code></a></dt>
+ <dd>Show log entries for the parent directory of the currently selected
+ path, unless an active search is in progress in which case
+ <code class="Cm">Backspace</code> aborts the search.</dd>
+ <dt><a class="permalink" href="#/"><code class="Cm" id="/">/</code></a></dt>
+ <dd>Prompt for a search pattern and start searching for matching commits.
+ The search pattern is an extended regular expression which is matched
+ against a commit's author name, committer name, log message, and
+ commit ID SHA1 hash. Regular expression syntax is documented in
+ <a class="Xr">re_format(7)</a>.</dd>
+ <dt><a class="permalink" href="#n"><code class="Cm" id="n">n</code></a></dt>
+ <dd>Find the next commit which matches the current search pattern.
+ Searching continues until either a match is found or the
+ <code class="Cm">Backspace</code> key is pressed.</dd>
+ <dt><a class="permalink" href="#N"><code class="Cm" id="N">N</code></a></dt>
+ <dd>Find the previous commit which matches the current search pattern.
+ Searching continues until either a match is found or the
+ <code class="Cm">Backspace</code> key is pressed.</dd>
+ <dt><a class="permalink" href="#Ctrl+l"><code class="Cm" id="Ctrl+l">Ctrl+l</code></a></dt>
+ <dd>Reload the log view with new commits found in the repository.</dd>
+ </dl>
+ <p class="Pp">The options for <code class="Cm">tog log</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#c"><code class="Fl" id="c">-c</code></a>
+ <var class="Ar">commit</var></dt>
+ <dd>Start traversing history at the specified
+ <var class="Ar">commit</var>. The expected argument is the name of a
+ branch or a commit ID SHA1 hash. An abbreviated hash argument will be
+ expanded to a full SHA1 hash automatically, provided the abbreviation
+ is unique. If this option is not specified, default to the work tree's
+ current branch if invoked in a work tree, or to the repository's HEAD
+ reference.</dd>
+ <dt><a class="permalink" href="#r"><code class="Fl" id="r">-r</code></a>
+ <var class="Ar">repository-path</var></dt>
+ <dd>Use the repository at the specified path. If not specified, assume the
+ repository is located at or above the current working directory.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#diff"><code class="Cm" id="diff">diff</code></a>
+ [<var class="Ar">repository-path</var>] <var class="Ar">object1</var>
+ <var class="Ar">object2</var></dt>
+ <dd>Display the differences between two objects in the repository. Each
+ <var class="Ar">object</var> argument is an object ID SHA1 hash. An
+ abbreviated hash argument will be expanded to a full SHA1 hash
+ automatically, provided the abbreviation is unique. Both objects must be
+ of the same type (blobs, trees, or commits). If the
+ <var class="Ar">repository path</var> is omitted, use the current working
+ directory.
+ <p class="Pp">The key bindings for <code class="Cm">tog diff</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#Down-arrow,_j"><code class="Cm" id="Down-arrow,_j">Down-arrow,
+ j</code></a></dt>
+ <dd>Scroll down.</dd>
+ <dt><a class="permalink" href="#Up-arrow,_k"><code class="Cm" id="Up-arrow,_k">Up-arrow,
+ k</code></a></dt>
+ <dd>Scroll up.</dd>
+ <dt><a class="permalink" href="#Page-down,_Space,_Ctrl+f"><code class="Cm" id="Page-down,_Space,_Ctrl+f">Page-down,
+ Space, Ctrl+f</code></a></dt>
+ <dd>Scroll down one page.</dd>
+ <dt><a class="permalink" href="#Page-up,_Ctrl+b_2"><code class="Cm" id="Page-up,_Ctrl+b_2">Page-up,
+ Ctrl+b</code></a></dt>
+ <dd>Scroll up one page.</dd>
+ <dt>[</dt>
+ <dd>Reduce the amount of diff context lines.</dd>
+ <dt>]</dt>
+ <dd>Increase the amount of diff context lines.</dd>
+ <dt><a class="permalink" href="#_,_Comma"><code class="Cm" id="_,_Comma"><,
+ Comma</code></a></dt>
+ <dd>If the diff view was opened via the log view, move to the previous
+ (younger) commit.</dd>
+ <dt><a class="permalink" href="#_,_Full_stop"><code class="Cm" id="_,_Full_stop">>,
+ Full stop</code></a></dt>
+ <dd>If the diff view was opened via the log view, move to the next (older)
+ commit.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#blame"><code class="Cm" id="blame">blame</code></a>
+ [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+ [<code class="Fl">-r</code> <var class="Ar">repository-path</var>]
+ <var class="Ar">path</var></dt>
+ <dd>Display line-by-line history of a file at the specified path.
+ <p class="Pp">The key bindings for <code class="Cm">tog blame</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#Down-arrow,_j,_Page-down,_Space"><code class="Cm" id="Down-arrow,_j,_Page-down,_Space">Down-arrow,
+ j, Page-down, Space</code></a></dt>
+ <dd>Move the selection cursor down.</dd>
+ <dt><a class="permalink" href="#Up-arrow,_k,_Page-up"><code class="Cm" id="Up-arrow,_k,_Page-up">Up-arrow,
+ k, Page-up</code></a></dt>
+ <dd>Move the selection cursor up.</dd>
+ <dt><a class="permalink" href="#Enter"><code class="Cm" id="Enter">Enter</code></a></dt>
+ <dd>Open a <code class="Cm">diff</code> view for the currently selected
+ line's commit.</dd>
+ <dt><a class="permalink" href="#b"><code class="Cm" id="b">b</code></a></dt>
+ <dd>Reload the <code class="Cm">blame</code> view with the version of the
+ file as found in the currently selected line's commit.</dd>
+ <dt><a class="permalink" href="#p"><code class="Cm" id="p">p</code></a></dt>
+ <dd>Reload the <code class="Cm">blame</code> view with the version of the
+ file as found in the parent commit of the currently selected line's
+ commit.</dd>
+ <dt><a class="permalink" href="#B"><code class="Cm" id="B">B</code></a></dt>
+ <dd>Reload the <code class="Cm">blame</code> view with the previously
+ blamed commit.</dd>
+ <dt><a class="permalink" href="#/_2"><code class="Cm" id="/_2">/</code></a></dt>
+ <dd>Prompt for a search pattern and start searching for matching line. The
+ search pattern is an extended regular expression. Regular expression
+ syntax is documented in <a class="Xr">re_format(7)</a>.</dd>
+ <dt><a class="permalink" href="#n_2"><code class="Cm" id="n_2">n</code></a></dt>
+ <dd>Find the next line which matches the current search pattern.</dd>
+ <dt><a class="permalink" href="#N_2"><code class="Cm" id="N_2">N</code></a></dt>
+ <dd>Find the previous line which matches the current search pattern.</dd>
+ </dl>
+ <p class="Pp">The options for <code class="Cm">tog blame</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#c_2"><code class="Fl" id="c_2">-c</code></a>
+ <var class="Ar">commit</var></dt>
+ <dd>Start traversing history at the specified
+ <var class="Ar">commit</var>. The expected argument is the name of a
+ branch or a commit ID SHA1 hash. An abbreviated hash argument will be
+ expanded to a full SHA1 hash automatically, provided the abbreviation
+ is unique.</dd>
+ <dt><a class="permalink" href="#r_2"><code class="Fl" id="r_2">-r</code></a>
+ <var class="Ar">repository-path</var></dt>
+ <dd>Use the repository at the specified path. If not specified, assume the
+ repository is located at or above the current working directory.</dd>
+ </dl>
+ </dd>
+ <dt><a class="permalink" href="#tree"><code class="Cm" id="tree">tree</code></a>
+ [<code class="Fl">-c</code> <var class="Ar">commit</var>]
+ [<var class="Ar">repository-path</var>]</dt>
+ <dd>Display the repository tree. If the <var class="Ar">repository path</var>
+ is omitted, assume the repository is located in the current working
+ directory.
+ <p class="Pp">The key bindings for <code class="Cm">tog tree</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#Down-arrow,_j,_Page-down"><code class="Cm" id="Down-arrow,_j,_Page-down">Down-arrow,
+ j, Page-down</code></a></dt>
+ <dd>Move the selection cursor down.</dd>
+ <dt><a class="permalink" href="#Up-arrow,_k,_Page-up_2"><code class="Cm" id="Up-arrow,_k,_Page-up_2">Up-arrow,
+ k, Page-up</code></a></dt>
+ <dd>Move the selection cursor up.</dd>
+ <dt><a class="permalink" href="#Enter_2"><code class="Cm" id="Enter_2">Enter</code></a></dt>
+ <dd>Enter the currently selected directory, or switch to the
+ <code class="Cm">blame</code> view for the currently selected
+ file.</dd>
+ <dt><a class="permalink" href="#l"><code class="Cm" id="l">l</code></a></dt>
+ <dd>Open a <code class="Cm">log</code> view for the currently selected
+ tree entry.</dd>
+ <dt><a class="permalink" href="#Backspace_2"><code class="Cm" id="Backspace_2">Backspace</code></a></dt>
+ <dd>Move back to the parent directory.</dd>
+ <dt><a class="permalink" href="#i"><code class="Cm" id="i">i</code></a></dt>
+ <dd>Show object IDs for all objects displayed in the
+ <code class="Cm">tree</code> view.</dd>
+ <dt><a class="permalink" href="#/_3"><code class="Cm" id="/_3">/</code></a></dt>
+ <dd>Prompt for a search pattern and start searching for matching tree
+ entries. The search pattern is an extended regular expression which is
+ matched against the tree entry's name. Regular expression syntax is
+ documented in <a class="Xr">re_format(7)</a>.</dd>
+ <dt><a class="permalink" href="#n_3"><code class="Cm" id="n_3">n</code></a></dt>
+ <dd>Find the next tree entry which matches the current search
+ pattern.</dd>
+ <dt><a class="permalink" href="#N_3"><code class="Cm" id="N_3">N</code></a></dt>
+ <dd>Find the previous tree entry which matches the current search
+ pattern.</dd>
+ </dl>
+ <p class="Pp">The options for <code class="Cm">tog tree</code> are as
+ follows:</p>
+ <dl class="Bl-tag">
+ <dt><a class="permalink" href="#c_3"><code class="Fl" id="c_3">-c</code></a>
+ <var class="Ar">commit</var></dt>
+ <dd>Start traversing history at the specified
+ <var class="Ar">commit</var>. The expected argument is the name of a
+ branch or a commit ID SHA1 hash. An abbreviated hash argument will be
+ expanded to a full SHA1 hash automatically, provided the abbreviation
+ is unique.</dd>
+ </dl>
+ </dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="EXIT_STATUS"><a class="permalink" href="#EXIT_STATUS">EXIT
+ STATUS</a></h1>
+The <code class="Nm">tog</code> utility exits 0 on success,
+ and >0 if an error occurs.
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<a class="Xr">got(1)</a>, <a class="Xr">git-repository(5)</a>,
+ <a class="Xr">re_format(7)</a>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
+<span class="An">Stefan Sperling</span>
+ <<a class="Mt" href="mailto:stsp@openbsd.org">stsp@openbsd.org</a>>
+<br/>
+<span class="An">joshua stein</span>
+ <<a class="Mt" href="mailto:jcs@openbsd.org">jcs@openbsd.org</a>>
+</section>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">August 4, 2019</td>
+ <td class="foot-os">OpenBSD 6.5</td>
+ </tr>
+</table>
+</body>
+</html>