TOG(1)

NAME
tog - Git repository browser

SYNOPSIS
tog [-hV] command [arg ...]

tog path

DESCRIPTION
tog is an interactive read-only browser for Git repositories. This repository format is described in git-repository(5).

tog supports several types of views which display repository data:

Log view
    Displays commits in the repository's history. This view is displayed initially if no command is specified, or if just a path is specified.

Diff view
    Displays work tree changes or changes made in a particular commit.

Blame view
    Displays the line-by-line history of a file.

Tree view
    Displays the tree corresponding to a particular commit.

Ref view
    Displays references in the repository.

tog provides global and command-specific key bindings and options. Some command-specific key bindings may be prefixed with an integer, which is denoted by N in the descriptions below, and is used as a modifier to the operation as indicated. tog will echo digits to the screen when count modifiers are entered, and complete the sequence upon input of the first non-numeric character. Count modifiers can be aborted by entering an unmapped key. Once a compound command is executed, the operation can be cancelled with C-g or Backspace.

Global options must precede the command name, and are as follows:

-h  Display usage information.

-V, --version
    Display program version and exit immediately.

The global key bindings are:

H, F1
    Display run-time help. Key bindings for the focussed view will be displayed. Pressing this again inside the help view will toggle the display of key bindings for all tog views.

Q   Quit tog.

q   Quit the view which is in focus.

Tab Switch focus between views.

F   Toggle fullscreen mode for a split-screen view. tog will automatically use vertical split-screen views if the size of the terminal window is sufficiently large.

S   Switch the current split-screen layout, and render all active views in this new layout. The split-screen layout can be either vertical or horizontal. If the terminal is not wide enough when switching to a vertical split, views will render in fullscreen.

-   When in a split-screen view, decrease the size of the focussed split N increments (default: 1).

+   When in a split-screen view, increase the size of the focussed split N increments (default: 1).

G   Go to line N in the view (default: last line).

g   Go to line N in the view (default: first line).

Right-arrow, l
    Scroll view to the right N increments (default: 1).
    Output moves left on the screen.

Left-arrow, h
    Scroll view to the left N increments (default: 1).
    Output moves right on the screen.

$   Scroll view to the rightmost position.

0   Scroll view left to the start of the line.

The commands for tog are as follows:

    log [-b] [-c commit] [-r repository-path] [path] Display history of a repository. If a path is specified, show only commits which modified this path. If invoked in a work tree, the path is interpreted relative to the current working directory, and the work tree's path prefix is implicitly prepended. Otherwise, the path is interpreted relative to the repository root.

    If invoked in a work tree, the log entry of the work tree's base commit will be prefixed with one of the following annotations:
    * | work tree's base commit and the base commit of all tracked files
    matches the branch tip
    ~ | work tree comprises mixed commits or its base commit is out-of-date

    This command is also executed if no explicit command is specified.

    The key bindings for tog log are as follows (N denotes optional prefixed count modifier):

    Down-arrow, j, >, Full stop, Ctrl-n
        Move the selection cursor down N lines (default: 1).

    Up-arrow, k, <, Comma, Ctrl-p
        Move the selection cursor up N lines (default: 1).

    Page-down, Space, Ctrl+f, f
        Move the selection cursor down N pages (default: 1).

    Page-up, Ctrl+b, b
        Move the selection cursor up N pages (default: 1).

    Ctrl+d, d
        Move the selection cursor down N half pages (default: 1).

    Ctrl+u, u
        Move the selection cursor up N half pages (default: 1).

    Home, =
        Move the cursor to the newest commit.

    End, *
        Move the cursor to the oldest commit. This will traverse all commits on the current branch which may take a long time depending on the number of commits in branch history. If needed, this operation can be cancelled with C-g or Backspace.

    g   Move the cursor to commit N (default: 1).

    G   Like g but defaults to the oldest commit.

    Enter
        Open a diff view showing file changes made in the currently selected commit. If a commit is marked with the m key map, open a diff view showing file changes made between the marked commit and the currently selected commit.

    m   Mark or unmark the selected commit. When a commit is marked, pressing the enter key on another selected commit opens a diff view showing the changes between the marked commit and the currently selected commit.

    T   Open a tree view showing the tree for the currently selected commit.

    Backspace
        Show log entries for the parent directory of the currently selected path. However when an active search is in progress or when additional commits are loaded, Backspace aborts the running operation.

    /   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. Regular expression syntax is documented in re_format(7).

    &   Prompt for a pattern and limit the log view's list of commits to those which match the pattern. If no pattern is specified, i.e. the & prompt is immediately closed with the Enter key, then the pattern is cleared. Until the pattern is cleared, the limited list of commits replaces the full list of commits for all operations supported by the log view. For example, a search started with / will search the limited list of commits, rather than searching all commits. The pattern is an extended regular expression which is matched against a commit's author name, committer name, log message, and commit ID. Regular expression syntax is documented in re_format(7).

    n   Find the Nth next commit which matches the current search pattern (default: 1).
        Searching continues until either a match is found or C-g or the Backspace key is pressed.

    N   Find the Nth previous commit which matches the current search pattern (default: 1).
        Searching continues until either a match is found or C-g or the Backspace key is pressed.

    Ctrl+l
        Reload the log view with new commits found in the repository or new work tree changes.

    B   Reload the log view and toggle display of merged commits. The -b option determines whether merged commits are displayed initially.

    R   Open a ref view listing all references in the repository. This can then be used to open a new log view for arbitrary branches and tags.

    @   Toggle between showing the committer name and the author name.

    The options for tog log are as follows:

    -b  Display individual commits which were merged into the current branch from other branches. By default, tog log shows the linear history of the current branch only. The B key binding can be used to toggle display of merged commits at run-time.

    -c commit
        Start traversing history at the specified commit. The expected argument is a commit ID, or a reference name or keyword which will be resolved to a commit ID. An abbreviated hash argument will be expanded to a full commit ID automatically, provided the abbreviation is unique. The keywords ":base" and ":head" resolve to the work tree's base commit and branch head, respectively. The former is only valid if invoked in a work tree, while the latter will resolve to the tip of the work tree's current branch if invoked in a work tree, otherwise it will resolve to the repository's HEAD reference. Keywords and references may be appended with ":+" or ":-" modifiers and an optional integer N to denote the Nth descendant or antecedent by first parent traversal, respectively; for example, :head:-2 denotes the work tree branch head's 2nd generation ancestor, and :base:+4 denotes the 4th generation descendant of the work tree's base commit. Similarly, foobar:+3 will denote the 3rd generation descendant of the commit resolved by the "foobar" reference. A ":+" or ":-" modifier without a trailing integer has an implicit "1" appended (e.g., :base:+ is equivalent to :base:+1).

    -r repository-path
        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 got(1) work tree, use the repository path associated with this work tree.

    diff [-asw] [-C number] [-c commit] [-r repository-path] [object1 object2 | path ...] If invoked within a work tree without any arguments, display all local changes in the work tree. If one or more path arguments are specified, only show changes within the specified paths.

    Alternatively, if two object arguments are specified, display the differences between the two objects in the repository. Treat each of the two arguments as a reference, a tag name, an object ID, or a keyword and display differences between the corresponding objects. Both objects must be of the same type (blobs, trees, or commits). An abbreviated hash argument will be expanded to a full commit ID automatically, provided the abbreviation is unique. The keywords ":base" and ":head" resolve to the work tree's base commit and branch head, respectively. The former is only valid if invoked in a work tree, while the latter will resolve to the tip of the work tree's current branch if invoked in a work tree, otherwise it will resolve to the repository's HEAD reference. Keywords and references may be appended with ":+" or ":-" modifiers and an optional integer N to denote the Nth descendant or antecedent by first parent traversal, respectively; for example, :head:-2 denotes the work tree branch head's 2nd generation ancestor, and :base:+4 denotes the 4th generation descendant of the work tree's base commit. Similarly, foobar:+3 will denote the 3rd generation descendant of the commit resolved by the "foobar" reference. A ":+" or ":-" modifier without a trailing integer has an implicit "1" appended (e.g., :base:+ is equivalent to :base:+1).

    The key bindings for tog diff are as follows (N denotes optional prefixed count modifier):

    a   Toggle treatment of file contents as ASCII text even if binary data was detected.

    Down-arrow, j, Ctrl-n
        Scroll down N lines (default: 1).

    Up-arrow, k, Ctrl-p
        Scroll up N lines (default: 1).

    Page-down, Space, Ctrl+f, f
        Scroll down N pages (default: 1).

    Page-up, Ctrl+b, b
        Scroll up N pages (default: 1).

    Ctrl+d, d
        Scroll down N half pages (default: 1).

    Ctrl+u, u
        Scroll up N half pages (default: 1).

    Home
        Scroll to the top of the view.

    End Scroll to the bottom of the view.

    g   Scroll to line N (default: 1).

    G   Like g but defaults to the last line in the diff.

    (   Navigate to the Nth previous file in the diff (default: 1).

    )   Navigate to the Nth next file in the diff (default: 1).

    {   Navigate to the Nth previous hunk in the diff (default: 1).

    }   Navigate to the Nth next hunk in the diff (default: 1).

    [   Reduce diff context by N lines (default: 1).

    ]   Increase diff context by N lines (default: 1).

    <, Comma, K
        If the diff view was opened via the log view, move to the Nth previous (younger) commit. If the diff was opened via the blame view, move to the Nth previous line and load the corresponding commit (default: 1).

    >, Full stop, J
        If the diff view was opened via the log view, move to the Nth next (older) commit. If the diff was opened via the blame view, move to the Nth next line and load the corresponding commit (default: 1).

    p   Write the currently viewed diff to a patch file in /tmp. The patch pathname is drawn to the status line.

    /   Prompt for a search pattern and start searching for matching lines. The search pattern is an extended regular expression. Regular expression syntax is documented in re_format(7).

    n   Find the Nth next line which matches the current search pattern (default: 1).

    N   Find the Nth previous line which matches the current search pattern (default: 1).

    w   Toggle display of whitespace-only changes.

    A   Change the diff algorithm. Supported diff algorithms are Myers (quick and dirty) and Patience (slow and tidy). This is a global setting which also affects the blame view.

    The options for tog diff are as follows:

    -a  Treat file contents as ASCII text even if binary data is detected.

    -C number
        Set the number of context lines shown in the diff. By default, 3 lines of context are shown.

    -c commit
        Show differences between commits in the repository. This option may be used up to two times. When used only once, show differences between the specified commit and its first parent commit. When used twice, show differences between the two specified commits.

        The expected argument is a commit ID hash, or an existing reference, tag name, or keyword, which is resolved to a commit ID. Unique abbreviated hash arguments are automatically expanded to a full hash. Both objects must be of the same type (i.e., blobs, trees, or commits).

        If the -c option is used, all non-option arguments are interpreted as paths. If one or more such path arguments are provided, only show differences for the specified paths.

    -r repository-path
        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 got(1) work tree, use the repository path associated with this work tree.

    -s  Show changes staged with got stage instead of showing local changes in the work tree. This option is only valid when tog diff is invoked in a work tree with no -c options.

    -w  Ignore whitespace-only changes.

    blame [-c commit] [-r repository-path] path Display line-by-line history of a file at the specified path.

    The key bindings for tog blame are as follows (N denotes optional prefixed count modifier):

    Down-arrow, j, Ctrl-n
        Move the selection cursor down N pages (default: 1).

    Up-arrow, k, Ctrl-p
        Move the selection cursor up N pages (default: 1).

    Page-down, Space, Ctrl+f, f
        Move the selection cursor down N pages (default: 1).

    Page-up, Ctrl+b, b
        Move the selection cursor up N pages (default: 1).

    Ctrl+d, d
        Move the selection cursor down N half pages (default: 1).

    Ctrl+u, u
        Move the selection cursor up N half pages (default: 1).

    Home
        Move the selection cursor to the first line of the file.

    End Move the selection cursor to the last line of the file.

    g   Move the selection cursor to line N (default: 1).

    G   Like g but defaults to the last line in the file.

    Enter
        Open a diff view for the currently selected line's commit.

    c   Reload the blame view with the version of the file as found in the currently selected line's commit.

    p   Reload the blame view with the version of the file as found in the parent commit of the currently selected line's commit.

    C   Reload the blame view with the previously blamed commit.

    L   Open a log view for the currently selected annotated line.

    /   Prompt for a search pattern and start searching for matching lines. The search pattern is an extended regular expression. Regular expression syntax is documented in re_format(7).

    n   Find the Nth next line which matches the current search pattern (default: 1).

    N   Find the Nth previous line which matches the current search pattern (default: 1).

    A   Change the diff algorithm. Supported diff algorithms are Myers (quick and dirty) and Patience (slow and tidy). This is a global setting which also affects the diff view.

    The options for tog blame are as follows:

    -c commit
        Start traversing history at the specified commit. The expected argument is a commit ID, or a reference name or keyword which will be resolved to a commit ID. An abbreviated hash argument will be expanded to a full commit ID automatically, provided the abbreviation is unique. The keywords ":base" and ":head" resolve to the work tree's base commit and branch head, respectively. The former is only valid if invoked in a work tree, while the latter will resolve to the tip of the work tree's current branch if invoked in a work tree, otherwise it will resolve to the repository's HEAD reference. Keywords and references may be appended with ":+" or ":-" modifiers and an optional integer N to denote the Nth descendant or antecedent by first parent traversal, respectively; for example, :head:-2 denotes the work tree branch head's 2nd generation ancestor, and :base:+4 denotes the 4th generation descendant of the work tree's base commit. Similarly, foobar:+3 will denote the 3rd generation descendant of the commit resolved by the "foobar" reference. A ":+" or ":-" modifier without a trailing integer has an implicit "1" appended (e.g., :base:+ is equivalent to :base:+1).

    -r repository-path
        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 got(1) work tree, use the repository path associated with this work tree.

    tree [-c commit] [-r repository-path] [path] Display the repository tree. If a path is specified, show tree entries at this path.

    Displayed tree entries may carry one of the following trailing annotations:
    @ | entry is a symbolic link
    / | entry is a directory
    * | entry is an executable file
    $ | entry is a Git submodule

    Symbolic link entries are also annotated with the target path of the link.

    The key bindings for tog tree are as follows (N denotes optional prefixed count modifier):

    Down-arrow, j, Ctrl-n
        Move the selection cursor down N lines (default: 1).

    Up-arrow, k, Ctrl-p
        Move the selection cursor up N lines (default: 1).

    Page-down, Space, Ctrl+f, f
        Move the selection cursor down N pages (default: 1).

    Page-up, Ctrl+b, b
        Move the selection cursor up N pages (default: 1).

    Ctrl+d, d
        Move the selection cursor down N half pages (default: 1).

    Ctrl+u, u
        Move the selection cursor up N half pages (default: 1).

    Home, =
        Move the selection cursor to the first entry.

    End, *
        Move the selection cursor to the last entry.

    g   Move the selection cursor to entry N (default: 1).

    G   Like g but defaults to the last entry.

    Enter
        Enter the currently selected directory, or switch to the blame view for the currently selected file.

    L   Open a log view for the currently selected tree entry.

    R   Open a ref view listing all references in the repository. This can then be used to open a new tree view for arbitrary branches and tags.

    Backspace
        Move back to the Nth parent directory (default: 1).

    i   Show object IDs for all objects displayed in the tree view.

    /   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 re_format(7).

    n   Find the Nth next tree entry which matches the current search pattern (default: 1).

    N   Find the Nth previous tree entry which matches the current search pattern (default: 1).

    The options for tog tree are as follows:

    -c commit
        Start traversing history at the specified commit. The expected argument is a commit ID, or a reference name or keyword which will be resolved to a commit ID. An abbreviated hash argument will be expanded to a full commit ID automatically, provided the abbreviation is unique. The keywords ":base" and ":head" resolve to the work tree's base commit and branch head, respectively. The former is only valid if invoked in a work tree, while the latter will resolve to the tip of the work tree's current branch if invoked in a work tree, otherwise it will resolve to the repository's HEAD reference. Keywords and references may be appended with ":+" or ":-" modifiers and an optional integer N to denote the Nth descendant or antecedent by first parent traversal, respectively; for example, :head:-2 denotes the work tree branch head's 2nd generation ancestor, and :base:+4 denotes the 4th generation descendant of the work tree's base commit. Similarly, foobar:+3 will denote the 3rd generation descendant of the commit resolved by the "foobar" reference. A ":+" or ":-" modifier without a trailing integer has an implicit "1" appended (e.g., :base:+ is equivalent to :base:+1).

    -r repository-path
        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 got(1) work tree, use the repository path associated with this work tree.

ref [-r repository-path]
    Display references in the repository.

    The key bindings for tog ref are as follows (N denotes optional prefixed count modifier):

    Down-arrow, j, Ctrl-n
        Move the selection cursor down N lines (default: 1).

    Up-arrow, k, Ctrl-p
        Move the selection cursor up N lines (default: 1).

    Page-down, Space, Ctrl+f, f
        Move the selection cursor down N pages (default: 1).

    Page-up, Ctrl+b, b
        Move the selection cursor up N pages (default: 1).

    Ctrl+d, d
        Move the selection cursor down N half pages (default: 1).

    Ctrl+u, u
        Move the selection cursor up N half pages (default: 1).

    Home, =
        Move the selection cursor to the first reference.

    End, *
        Move the selection cursor to the last reference.

    g   Move the selection cursor to reference N (default: 1).

    G   Like g but defaults to the last reference.

    Enter
        Open a log view which begins traversing history at the commit resolved via the currently selected reference.

    T   Open a tree view showing the tree resolved via the currently selected reference.

    i   Show object IDs for all non-symbolic references displayed in the ref view.

    m   Show last modified date of each displayed reference.

    o   Toggle display order of references between sort by name and sort by timestamp.

    /   Prompt for a search pattern and start searching for matching references. The search pattern is an extended regular expression which is matched against absolute reference names. Regular expression syntax is documented in re_format(7).

    n   Find the Nth next reference which matches the current search pattern (default: 1).

    N   Find the Nth previous reference which matches the current search pattern (default: 1).

    Ctrl+l
        Reload the list of references displayed by the ref view.

    The options for tog ref are as follows:

    -r repository-path
        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 got(1) work tree, use the repository path associated with this work tree.

ENVIRONMENT

TOG_COLORS
    tog shows colorized output if this variable is set to a non-empty value. The default color scheme can be modified by setting the environment variables documented below. The colors available in color schemes are “black”, “red”, “green”, “yellow”, “blue”, “magenta”, “cyan”, and “default” which maps to the terminal's default foreground color.

TOG_COLOR_AUTHOR
    The color used to mark up author information. If not set, the default value “cyan” is used.

TOG_COLOR_COMMIT
    The color used to mark up commit IDs. If not set, the default value “green” is used.

TOG_COLOR_DATE
    The color used to mark up date information. If not set, the default value “yellow” is used.

TOG_COLOR_DIFF_CHUNK_HEADER
    The color used to mark up chunk header lines in diffs. If not set, the default value “yellow” is used.

TOG_COLOR_DIFF_META
    The color used to mark up meta data in diffs. If not set, the default value “green” is used.

TOG_COLOR_DIFF_MINUS
    The color used to mark up removed lines in diffs. If not set, the default value “magenta” is used.

TOG_COLOR_DIFF_PLUS
    The color used to mark up added lines in diffs. If not set, the default value “cyan” is used.

TOG_COLOR_REFS_BACKUP
    The color used to mark up references in the “refs/got/backup/” namespace. If not set, the default value “cyan” is used.

TOG_COLOR_REFS_HEADS
    The color used to mark up references in the “refs/heads/” namespace. If not set, the default value “green” is used.

TOG_COLOR_REFS_REMOTES
    The color used to mark up references in the “refs/remotes/” namespace. If not set, the default value “yellow” is used.

TOG_COLOR_REFS_TAGS
    The color used to mark up references in the “refs/tags/” namespace. If not set, the default value “magenta” is used.

TOG_COLOR_TREE_DIRECTORY
    The color used to mark up directory tree entries. If not set, the default value “cyan” is used.

TOG_COLOR_TREE_EXECUTABLE
    The color used to mark up executable file tree entries. If not set, the default value “green” is used.

TOG_COLOR_TREE_SUBMODULE
    The color used to mark up submodule tree entries. If not set, the default value “magenta” is used.

TOG_COLOR_TREE_SYMLINK
    The color used to mark up symbolic link tree entries. If not set, the default value “magenta” is used.

TOG_DIFF_ALGORITHM
    Determines the default diff algorithm used by tog. Supported diff algorithms are Myers (quick and dirty) and Patience (slow and tidy). Valid values for TOG_DIFF_ALGORITHM are “patience” and “myers”. If unset, the Patience diff algorithm will be used by default.

TOG_VIEW_SPLIT_MODE
    Determines the default layout of split-screen views. If set to “h” or “H”, tog will use horizontal split by default. Otherwise, vertical split will be used. The S key can be used to switch between vertical and horizontal split layout at run-time.

EXIT STATUS

SEE ALSO
got(1), git-repository(5), re_format(7)

AUTHORS
Christian Weisgerber <naddy@openbsd.org> Josh Rickmar <jrick@zettaport.com> Joshua Stein <jcs@openbsd.org> Mark Jamsek <mark@jamsek.dev> Martin Pieuchot <mpi@openbsd.org> Omar Polo <op@openbsd.org> Stefan Sperling <stsp@openbsd.org> Klemens Nanni <kn@openbsd.org>