A little over 8 years ago the first version of Tig was released. To celebrate the many years with this cursed Git interface, here is a fresh new installment. Version 2.0 of Tig brings several configuration improvements, some of which unfortunately also breaks backwards compatibility with respect to the configuration file. Among view related changes, the branch view has been renamed to the refs view and now also shows tags, the log view now highlights diff stats and supports --graph, and the new grep view allows to quickly jump between matching files. This release also adds mouse support, improvements to the graph rendering, and readline support in the prompt. Please read the release notes below for more information and upgrade instructions. Thanks to everybody who contributed to this release. What is Tig? ------------ Tig is an ncurses-based text-mode interface for git. It functions mainly as a Git repository browser, but can also assist in staging changes for commit at chunk level and act as a pager for output from various Git commands. - Homepage: http://jonas.nitro.dk/tig/ - Manual: http://jonas.nitro.dk/tig/manual.html - Tarballs: http://jonas.nitro.dk/tig/releases/ - Git URL: git://github.com/jonas/tig.git - GitHub: https://github.com/jonas/tig - Q&A: http://stackoverflow.com/questions/tagged/tig Release notes ------------- Note to packagers: - Add `.adoc` extension to AsciiDoc files so they show correctly on GitHub. This includes `README`, `INSTALL`, and `NEWS` and files in `doc/` directory. - `BUGS` file has been merged into `README.adoc`. - Default keybindings have been moved to a system-level `tigrc` file, which is installed to ${sysconfdir} by default. The content of the `tigrc` file is included inside the binary as a fall-back. Pass `NO_BUILTIN_TIGRC=y` to not include the system `tigrc` content and reduce the size of the binary. - The example `contrib/tigrc` file (made obsolete by `tigrc`) has been removed. - Source files have been moved to `src` and `include` and `tig.c` was split up. - Build output is less verbose by default; use `make V=1` for old output. Incompatibilities: - In preparation for key combo support, key mappings for symbolic keys (e.g. `Up` and `Down`) must now start with `<` and end with `>`, e.g. `<Up>` and `<Down>`. Furthermore, escape key combos must now use `<Esc>key` instead of `^[key`, and control key mappings must now use `<Ctrl-key>` instead of `^key`. - Only use 'diff-options' for the diff view and introduce '%(cmdlineargs)' to hold non-file and non-revision flags passed on the command line. Affects all user-defined commands that expect '%(diffargs)' to hold both 'diff-options' arguments and those passed on the command line. (GH #228) - Remove built-in keybinding for `git gc`. Add the following line to `~/.tigrc` to restore it: `bind generic G ?git gc`. - To support view specific colors, '.' can no longer be used interchangeably with '-' and '_' in settings names and in particular color names. - Replace 'stage-next' action with prompt command using a predefined search (see below) and add binding (`@` by default) to also work in the diff view. - Most view display options must now be set via the new `*-view` options in tigrc. Existing options are no longer recognized, but a warning is shown. - Remap default bindings to have more consistent convention: use lower-case keys primarily for view switching and non-destructive actions, use upper-case keys for view-specific actions including user-defined commands. To preserve old default key bindings see `contrib/bindings-v1.x.tigrc`. (GH #257) Improvements: - Add mouse support: scroll view, click line to move cursor, double click line (or click again) to "Enter" cursor line, e.g. open commit diff. Disabled by default, since it makes text selection less intuitive. If you enable this remember to hold down Shift (or Option on Mac) when selecting text. - Rewrite and improve the rendering of the commit graph. (GH #144, #46) - Add completion and history support to the prompt via readline. (GH #185) - Options can be configured and toggled individually for each view. Use the new view settings to configure the order and display options for each view columns. See system tigrc and tigrc(5) for examples. (GH #89, #222) - Add grep view as a front-end to git-grep(1): `tig grep -p strchr`. From within Tig, the key for switching or grepping is bound to 'g' by default. - Rename 'branch' view to 'refs' view and show tags. (GH #134) - Add main view pager mode that reads git-log's '--pretty=raw' data from stdin, e.g. `git reflog --pretty=raw | tig --pretty=raw`. - Add support for `--graph` and highlight diff stats in the log view. - Add default command bindings: `!` to delete branch, `!` to drop stash. - Add 'stage-split-chunk' action for splitting chunks in the stage view. Bound to '\' by default. (GH #107) - Add 'back' action bound to '<' by default, which will return the blame view to the previous revision and line after moving e.g. to the parent. (GH #124) - Auto-refresh views based on watched repository changes. Configure by setting `refresh-mode` to 'manual', 'auto', 'after-command', or 'periodic'. (GH #190) - All default settings are in well-documented system `tigrc`. - Add `:toggle` prompt command to manipulate options using keybindings. For example: `bind diff D :toggle diff-options --patience --notes`. (GH #69) - Add a new "auto" value for the 'vertical-split' option to let Tig choose the split orientation (this is the new default behavior). Can be toggled. - Make it possible to toggle the display of files in untracked directories. - Allow Tig to be started with no default configuration by specifying an alternative system `tigrc` file, e.g.: `TIGRC_SYSTEM=~/.tigrc.safe tig`. Set `TIGRC_SYSTEM` to the empty string to use built-in configuration instead of - Key mappings can contain UTF-8 multibyte unicode keys. - Warn about conflicting keybindings using Ctrl, e.g. `<Ctrl-f>` and `<Ctrl-F>`. (GH #218) - Extend key bindings for prompt commands (ie. `bind <keymap> <key> :<prompt>`) to support predefined searches, eg.: `bind stage 2 :?^@@`. - Git color mappings can be configured in tigrc. - More informative configuration error messages. - Make reference label formatting configurable, for example: `set reference-format = (branch) <tags> remote`. (GH #201) - Adjust author width and other view columns automatically. (GH #49) - Support view specific colors: `color stage.diff-add yellow default`. - Copy `-S`, `-G` and `--grep=` pattern to search buffer so 'find-next' and 'find-prev' work as expected. - Optionally specify custom prompt for `%(prompt)` in shell commands, e.g. `bind main B ?git checkout -b "%(prompt Enter new branch name: )"`. - Add `%(remote)` and `%(tag)` symbols to complement `%(branch)`. - User-defined commands can now be prefixed with any of the supported flags, e.g. `?git checkout -b %(branch)`. - Open editor at line number for combined diffs e.g. diffs of unmerged files. - Add build configuration for Cygwin (OS name: CYGWIN_NT-6.1). (GH #92) - Document the Git commands supported by the pager mode. (GH #1) system `tigrc` configuration. (GH #235) Bug fixes: - Fix stash diff display when reloading the stash view after a deleting. - Set the commit reference when opening the blame view from the blob view. - Correctly identify and highlight the remote branch tracked by HEAD. - Pass --no-color after user defined arguments to ensure that colors do not break the output parsing. (GH #191) - Close stdin when pager mode is not supported. - Show newly created branches in the main view. (GH #196) - File with 0 changes breaks diffstat highlighting (GH #215) - Update %(branch) variable in the main view. (GH #223) - Disable graph rendering when either of `--reverse`, `-S`, `-G`, and `--grep` are passed to the main view. (GH #127) - Only refresh views that support it. - Fix author and date annotation of renamed entries in the tree view. - Fix use of unsafe methods in the signal handler. (GH #245) - Fix rendering in non-UTF8 terminals. - Fix stage-update-line by rewriting the diff chunk containing the line instead of using `--unidiff-zero` and a diff context of zero. (GH #130) - Fix status-update to work for untracked directories. (GH #236) - Don't pass log parameters given on the command line to the diff view. Change summary -------------- The diffstat and log summary for changes made in this release. .gitignore | 26 +- .travis.yml | 18 + BUGS | 8 - INSTALL => INSTALL.adoc | 15 +- Makefile | 241 +- NEWS => NEWS.adoc | 118 + README | 24 - README.adoc | 40 + autogen.sh | 8 +- compat/ansidecl.h | 313 + compat/compat.h | 3 +- compat/hashtab.c | 1001 + compat/hashtab.h | 209 + compat/mkstemps.c | 2 +- compat/setenv.c | 2 +- config.make.in | 3 +- configure.ac | 10 +- contrib/bindings-v1.x.tigrc | 23 + contrib/config.make | 11 +- contrib/config.make-CYGWIN_NT-6.1 | 19 + contrib/config.make-Darwin | 8 + contrib/tig-completion.bash | 9 +- contrib/tig.spec.in | 10 +- contrib/tigrc | 76 - doc/{manual.asciidoc => manual.adoc} | 30 +- doc/{tig.1.asciidoc => tig.1.adoc} | 107 +- doc/{tigmanual.7.asciidoc => tigmanual.7.adoc} | 2 +- doc/tigrc.5.adoc | 963 + doc/tigrc.5.asciidoc | 757 - graph.c | 412 - include/tig/argv.h | 73 + contrib/header.h => include/tig/blame.h | 18 +- contrib/header.h => include/tig/blob.h | 18 +- include/tig/diff.h | 43 + include/tig/display.h | 62 + include/tig/draw.h | 45 + git.h => include/tig/git.h | 26 +- graph.h => include/tig/graph.h | 41 +- contrib/header.h => include/tig/grep.h | 13 +- contrib/header.h => include/tig/help.h | 18 +- io.h => include/tig/io.h | 46 +- include/tig/keys.h | 84 + include/tig/line.h | 130 + contrib/header.h => include/tig/log.h | 18 +- include/tig/main.h | 56 + include/tig/options.h | 194 + include/tig/pager.h | 34 + include/tig/parse.h | 67 + include/tig/prompt.h | 47 + refs.h => include/tig/refdb.h | 36 +- contrib/header.h => include/tig/refs.h | 18 +- include/tig/repo.h | 37 + include/tig/request.h | 116 + contrib/header.h => include/tig/stage.h | 16 +- contrib/header.h => include/tig/stash.h | 18 +- include/tig/status.h | 53 + include/tig/string.h | 123 + include/tig/tig.h | 151 + include/tig/tree.h | 30 + include/tig/types.h | 165 + include/tig/util.h | 126 + include/tig/view.h | 356 + include/tig/watch.h | 58 + refs.c | 250 - src/argv.c | 487 + src/blame.c | 518 + src/blob.c | 133 + src/diff.c | 440 + src/display.c | 527 + src/draw.c | 661 + src/graph.c | 999 + src/grep.c | 263 + src/help.c | 301 + io.c => src/io.c | 373 +- src/keys.c | 438 + src/line.c | 208 + src/log.c | 156 + src/main.c | 514 + src/options.c | 1067 + src/pager.c | 233 + src/parse.c | 330 + src/prompt.c | 892 + src/refdb.c | 398 + src/refs.c | 202 + src/repo.c | 136 + src/request.c | 69 + src/stage.c | 562 + src/stash.c | 57 + src/status.c | 748 + src/string.c | 372 + src/tig.c | 735 + src/tree.c | 486 + src/types.c | 116 + src/util.c | 325 + src/view.c | 1488 ++ src/watch.c | 276 + test/builtin-config.sh | 18 + .../10_shorter_merge_than_branch.in | 22 + .../10_shorter_merge_than_branch.out | 11 + test/test-graph-samples/11_new_branch_in_middle.in | 18 + .../test-graph-samples/11_new_branch_in_middle.out | 9 + test/test-graph-samples/12_cross_over_collapse.in | 18 + test/test-graph-samples/12_cross_over_collapse.out | 9 + ...rallel_branches_with_different_middle_branch.in | 20 + ...allel_branches_with_different_middle_branch.out | 10 + test/test-graph-samples/14_long_collapse_line.in | 40 + test/test-graph-samples/14_long_collapse_line.out | 20 + test/test-graph-samples/16_changes.in | 8 + test/test-graph-samples/16_changes.out | 4 + test/test-graph-samples/1_merge_from_left.in | 10 + test/test-graph-samples/1_merge_from_left.out | 5 + test/test-graph-samples/2_duplicate_parent.in | 18 + test/test-graph-samples/2_duplicate_parent.out | 9 + test/test-graph-samples/3_octo_merge.in | 10 + test/test-graph-samples/3_octo_merge.out | 5 + test/test-graph-samples/4_missing_bar.in | 14 + test/test-graph-samples/4_missing_bar.out | 7 + test/test-graph-samples/5_extra_pipe.in | 12 + test/test-graph-samples/5_extra_pipe.out | 6 + test/test-graph-samples/6_extra_bars.in | 115 + test/test-graph-samples/6_extra_bars.out | 57 + test/test-graph-samples/7_multi_collapse.in | 16 + test/test-graph-samples/7_multi_collapse.out | 8 + test/test-graph-samples/8_multi_collapse_2.in | 18 + test/test-graph-samples/8_multi_collapse_2.out | 9 + test/test-graph-samples/9_parallel_siblings.in | 18 + test/test-graph-samples/9_parallel_siblings.out | 9 + test/test-graph-samples/many_merges.in | 65 + test/test-graph-samples/many_merges.out | 20 + test/test-graph-samples/more.in | 72 + test/test-graph-samples/more.out | 36 + test/test-graph-samples/simple.in | 22 + test/test-graph-samples/simple.out | 6 + test/test-graph-samples/tig-all-long.in |14986 ++++++++++++ test/test-graph-samples/tig-all-long.out | 1517 ++ test/test-graph-samples/tig-all.in | 286 + test/test-graph-samples/tig-all.out | 35 + test/test-graph-samples/tig.in | 28 + test/test-graph-samples/tig.out | 8 + test-graph.c => test/test-graph.c | 23 +- test/unit-test-graph.sh | 19 + tig.c | 9043 ------- tig.h | 622 - tigrc | 386 + {contrib => tools}/announcement.sh | 8 +- {contrib => tools}/aspell.dict | 16 +- tools/ax_lib_readline.m4 | 223 + {contrib => tools}/ax_with_curses.m4 | 0 tools/doc-gen.c | 84 + {contrib => tools}/header.h | 2 +- tools/install.sh | 49 + tools/make-builtin-config.sh | 40 + {contrib => tools}/release.sh | 11 +- {contrib => tools}/update-release-docs.sh | 2 +- 154 files changed, 38086 insertions(+), 11640 deletions(-) 1 Andreas Schlick 1 Beat Bolli 1 Benjamin Bergman 1 Ciro Santilli 1 Dmitry Malikov 1 Ed Bruck 3 Jeff King 399 Jonas Fonseca 3 Kumar Appaiah 1 LCD 47 1 Lau Ching Jun 1 Michael Barlow 1 Oliver Chang 1 Pat Tullmann 4 Sven Wegener 3 Vivien Didelot 1 hasufell -- Jonas Fonseca -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html