Git Product home page Git Product logo

tig's People

Contributors

domivogt avatar esc avatar felipec avatar ferada avatar hashpling avatar hwangcc23 avatar jcowgar avatar jnareb avatar johnkeeping avatar jonas avatar koutcher avatar krobelus avatar kumanna avatar madcoder avatar neuschaefer avatar oblomov avatar odnoletkov avatar peff avatar proski avatar rolandwalker avatar samb avatar stevenyvr987 avatar sunshineco avatar swegener avatar tokkee avatar tsibley avatar vivien avatar wsakernel avatar xaizek avatar yudai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tig's Issues

line numbering and diff metadata

when picking out hunks to stage, the diff line numbers don't match with tig's line numbering. they are offset by the diff header. my initial feeling is the line numbering should display the lines inside the file, but i might be missing something here. lmk please.

Jump to a line number on launch

It'd be nice to jump to a line number specified on the command line. Something like tig blame foo.c +42 would mimic vim's command line syntax for this.

The +<number> could show up at any point after the subcommand (if specified).

tree view: per-character feedback for search typing

when searching with /abcd inside tree view, it would be nice if the search bar tried to match something with every character typed, so you know immediately whether you're typing it right or if the file even exists in tree.

Binary file colorizing in diff stat output needs improvement

Binary file lines in diff stat output such as:

dir/dir/dir/file | Bin 10 -> 20 bytes

should be colorized as follows:

  • "dir/dir/dir/file": color diff-stat
  • " | Bin ": color default
  • "10": color diff-del
  • "20": color diff-add
  • " bytes": color default

The use of diff-del and diff-add coloring comes from looking at the "git diff" output so it makes sense to apply it to tig as well.

I built from d59840e which is the HEAD on master at the moment.

Clipboard support

h/t #65

Old issue was getting derailed.

Thoughts on implementing clipboard generically and having:

tig.clipboard_cmd as a config option to allow interaction with the clipboard?

This would also allow using eg, tmux's buffer.

Improve text input support

  • Add an edit keymap so the "editor" can be customized.
  • Allow the cursor to navigate in the input area.

Split sources of tig.c into multiple files

This work should be done gradually.

> wc -l *.[ch]
    49 git.h
   410 graph.c
    73 graph.h
   579 io.c
    88 io.h
   238 refs.c
    41 refs.h
   106 test-graph.c
  7895 tig.c
   563 tig.h
 10042 total

submodules cause: Failed to chdir(../../../

When using tig with submodules created with the current version of git the following behavior is observed:

[10:55][/tmp]$ mkdir example
[10:55][/tmp]$ cd example/
[10:55][/tmp/example]$ git init
Initialized empty Git repository in /tmp/example/.git/
[10:56][/tmp/example]$ touch README.md
[10:56][/tmp/example]$ git add README.md
[10:56][/tmp/example]$ git commit -m "initial commit"
[master (root-commit) ceb3fb6] initial commit
0 files changed
create mode 100644 README.md
[10:56][/tmp/example(master)]$ git submodule add git://github.com/AD7six/mi.git mi
Cloning into 'mi'...
remote: Counting objects: 1415, done.
remote: Compressing objects: 100% (542/542), done.
remote: Total 1415 (delta 840), reused 1275 (delta 764)
Receiving objects: 100% (1415/1415), 416.41 KiB | 645 KiB/s, done.
Resolving deltas: 100% (840/840), done.
[10:56][/tmp/example(master)]$ cd mi/ 
[10:56][/tmp/example/mi(master)]$ tig
tig: Failed to chdir(../../../mi): No such file or directory
[10:57][/tmp/example/mi(master)]$ more mi/.git
gitdir: ../.git/modules/mi
[10:57][/tmp/example/mi(master)]$ tig --version
tig version 1.0
[10:57][/tmp/example/mi(master)]$ git --version
git version 1.7.10

The current version of git creates a config file in the submodule's .git location - whereas in the past it would be a complete .git folder (and tig would happily use that).

Wrap long lines instead of horizontal scrolling

In general tig doesn't wrap lines, in any view nor in details.
I've looked in the docs and there is no mention to wrapping options.
Count 1 vote for wrapping lines in certain views (with a configuration switch)

cannot bind complex external commands

I want to add a binding to put the current commit hash into the system's clipboard (Mac OS X), so here's my .gitconfig

[tig "bind"]
    main = c !echo "%(commit)" | pbcopy

The output of this is:

9c118dcfea9a65ed668bf26e1984544a0bb083fa | pbcopy

So my assumption is that everything after the first space is treated as a parameter and passed to the command before the first space. This isn't a pbcopy issue, the following also doesn't work:

[tig "bind"]
    main = c !echo "%(commit)" > sha1.txt

This outputs (no file created):

9c118dcfea9a65ed668bf26e1984544a0bb083fa > sha1.txt

EPEL update to 0.18

Hello,

The EPEL package of tig is at 0.17; I'd like to see it upgraded. How can I get that to happen? I'm happy to help out if that's useful; I've already prepared an updated source rpm (and binary for RHEL6 64-bit).

Thanks,

Richard Silverman

Can't compile on OSX

I'm getting this error after running make:

gcc -g -O2 -DHAVE_CONFIG_H '-DTIG_VERSION="0.18-24-gce5c25c"' '-DSYSCONFDIR="/usr/local/etc"'  -c -o tig.o tig.c
In file included from tig.c:14:
tig.h:138: error: conflicting types for ‘isnumber’
/usr/include/ctype.h:341: error: previous definition of ‘isnumber’ was here
make: *** [tig.o] Error 1

UTF8 Mojibake.

I know a guy that likes to throw around Unicode all over the place. My—I mean his—username non-ASCII in it, and it gets displayed all goofed up throughout tig. (If you have any trouble replicating this, let me know, and I'll give you a clean-room reproduction sequence).

So, "☈king" comes out "M-bXHking"

This is probably due to some ncurses mishandling, but it'd be better if tig filtered it to "?" rather than rendered it wrong (because it causes things to misalign, especially the blame log).

Perhaps you want to have some better handling, though, so as to impress the François's and the Frañciso's of the world. Dare we reach for the 费迪's, as well?

Thanks.
—☈—I mean—RK

Cannot make on Mac OS 10.7 with Xcode 4.2

Fresh checkout from current master (e98ff9a) fails to make. It's probably worth noting that GCC was removed in Xcode 4.2, so gcc is actually symlinked to llvm-gcc-4.2, and the traditional gcc-4.2 no longer exists.

% ./configure && make
./configure: line 1664: AX_WITH_CURSES: command not found
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for iconv... yes
checking for iconv declaration... 
         extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking for asciidoc... no
checking for xmlto... no
checking for docbook2pdf... no
configure: creating ./config.status
config.status: creating config.make
config.status: creating config.h
gcc -g -O2 -DHAVE_CONFIG_H '-DTIG_VERSION="0.18-26-ge98ff9a"' '-DSYSCONFDIR="/usr/local/etc"'  -c -o tig.o tig.c
gcc -g -O2 -DHAVE_CONFIG_H '-DTIG_VERSION="0.18-26-ge98ff9a"' '-DSYSCONFDIR="/usr/local/etc"'  -c -o io.o io.c
gcc -g -O2 -DHAVE_CONFIG_H '-DTIG_VERSION="0.18-26-ge98ff9a"' '-DSYSCONFDIR="/usr/local/etc"'  -c -o graph.o graph.c
gcc   tig.o io.o graph.o  -liconv  -o tig
Undefined symbols for architecture x86_64:
  "_wbkgdset", referenced from:
      _update_view_title in tig.o
      _main in tig.o
  "_wmove", referenced from:
      _update_view_title in tig.o
      _draw_view_line in tig.o
      _status_update_files in tig.o
      _report in tig.o
      _get_input in tig.o
  "_waddnstr", referenced from:
      _update_view_title in tig.o
      _draw_chars in tig.o
  "_wclrtoeol", referenced from:
      _update_view_title in tig.o
      _draw_view_line in tig.o
      _report in tig.o
      _prompt_yesno in tig.o
      _read_prompt in tig.o
      _main in tig.o
  "_wnoutrefresh", referenced from:
      _update_view_title in tig.o
      _redraw_view in tig.o
      _select_view_line in tig.o
      _report in tig.o
      _do_scroll_view in tig.o
      _load_view in tig.o
      _scroll_view in tig.o
      ...
  "_wchgat", referenced from:
      _draw_view_line in tig.o
      _draw_chars in tig.o
      _draw_graphic in tig.o
  "_werase", referenced from:
      _redraw_view in tig.o
      _select_view_line in tig.o
      _restore_view_position in tig.o
      _do_scroll_view in tig.o
      _load_view in tig.o
      _scroll_view in tig.o
      _get_input in tig.o
      ...
  "_wclear", referenced from:
      _redraw_display in tig.o
      _report in tig.o
      _get_input in tig.o
      _main in tig.o
  "_waddch", referenced from:
      _draw_chars in tig.o
      _draw_graphic in tig.o
  "_acs_map", referenced from:
      _draw_lineno in tig.o
      _graph_symbol_to_chtype in graph.o
  "_endwin", referenced from:
      _die in tig.o
      _quit in tig.o
      _open_editor in tig.o
      _status_request in tig.o
      _main in tig.o
  "_newscr", referenced from:
      _status_update_files in tig.o
      _get_input in tig.o
  "_leaveok", referenced from:
      _status_update_files in tig.o
      _get_input in tig.o
      _main in tig.o
  "_doupdate", referenced from:
      _status_update_files in tig.o
      _get_input in tig.o
  "_stdscr", referenced from:
      _resize_display in tig.o
      _get_input in tig.o
      _main in tig.o
  "_wresize", referenced from:
      _resize_display in tig.o
      _get_input in tig.o
  "_mvwin", referenced from:
      _resize_display in tig.o
      _get_input in tig.o
  "_newwin", referenced from:
      _resize_display in tig.o
      _main in tig.o
  "_scrollok", referenced from:
      _resize_display in tig.o
      _do_scroll_view in tig.o
  "_vwprintw", referenced from:
      _report in tig.o
  "_wscrl", referenced from:
      _do_scroll_view in tig.o
  "_def_prog_mode", referenced from:
      _open_editor in tig.o
      _status_request in tig.o
      _main in tig.o
  "_reset_prog_mode", referenced from:
      _open_editor in tig.o
      _status_request in tig.o
      _main in tig.o
  "_wredrawln", referenced from:
      _get_input in tig.o
  "_nodelay", referenced from:
      _get_input in tig.o
  "_wgetch", referenced from:
      _get_input in tig.o
  "_erasechar", referenced from:
      _get_input in tig.o
  "_mvwprintw", referenced from:
      _prompt_yesno in tig.o
      _read_prompt in tig.o
      _main in tig.o
  "_initscr", referenced from:
      _main in tig.o
  "_newterm", referenced from:
      _main in tig.o
  "_nonl", referenced from:
      _main in tig.o
  "_cbreak", referenced from:
      _main in tig.o
  "_noecho", referenced from:
      _main in tig.o
  "_has_colors", referenced from:
      _main in tig.o
  "_start_color", referenced from:
      _main in tig.o
  "_assume_default_colors", referenced from:
      _main in tig.o
  "_init_pair", referenced from:
      _main in tig.o
  "_keypad", referenced from:
      _main in tig.o
  "_set_tabsize", referenced from:
      _main in tig.o
  "_wprintw", referenced from:
      _main in tig.o
  "_COLS", referenced from:
      _main in tig.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [tig] Error 1
zsh: exit 2     make

%(directory) returns empty string in tree view

hello jonas

thank you for a fabulous git UI. set up a flattr so i can support it.

on to the possible bug.

.tigrc:
bind tree D !git log %(directory)

but pressing D on a tree directory gives me:
1x fatal: ambiguous argument '': unknown revision or path not in the working tree.
x Use '--' to separate paths from revisions

utf-8 broken?

Hi.
I can't get tig to properly show utf chars. Commit are in utf, in my .tigrc i have
set commit-encoding = "UTF-8"
altough (afaik) it should work out-of-the-box since my commits are in utf-8 and default commit-enc in tig is also utf-8.

  • git show output:

    commit 1e82a460e54a8c76e094bb2700b90603edfde9a0
    Author: Jakub Matraszek [email protected]
    Date: Sun Apr 3 09:28:11 2011 +0200
    Ѐ Ў

  • tig show output:

    Author: Jakub Matraszek [email protected]
    AuthorDate: Sun Apr 3 09:28:11 2011 +0200
    M-P~@ M-P~N

My terminal (as whole system) is in utf-8. Maybe it is a bug, but maybe I am missing something - in that case I will be grateful for hints. If this is some kind of a bug I can try to provide some more information, etc.
greetings,
jakub

Diff preview colors lines wrong

A regression seems to have been introduced in version 0.18 (confirmed not present in version 0.17). In version 0.17 tig colors this diff correctly; but in version 0.18, tig colors the first line of the diff red as if it were a deletion, though it really was not. (I am referring to the line containing - result = render .... Please note the space followed by the dash.)

Author:     Raving Genius <[email protected]>
AuthorDate: Thu Feb 16 16:12:51 2012 -0500
Commit:     Raving Genius <[email protected]>
CommitDate: Thu Feb 16 16:12:51 2012 -0500

    General code cleanup

---
 app/views/admin/line_items/top_off_bundle.js.haml |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/app/views/admin/line_items/top_off_bundle.js.haml b/app/views/admin/line_items/top_off_bundle.js.haml
index c481dac..0171722 100644
--- a/app/views/admin/line_items/top_off_bundle.js.haml
+++ b/app/views/admin/line_items/top_off_bundle.js.haml
@@ -2,10 +2,10 @@
 - result = render 'admin/customers/order', :order => @order
 :plain
   var formatMoney = function (num) {
-    var p = num.toFixed(2).split(".");
-    return "$" + p[0].split("").reverse().reduce(function(acc, num, i, orig) {
-        return  num + (i && !(i % 3) ? "," : "") + acc;
-    }, "") + "." + p[1];
+    var p = num.toFixed(2).split('.');
+    return '$' + p[0].split('').reverse().reduce(function (acc, num, i, orig) {
+      return  num + (i && !(i % 3) ? ',' : '') + acc;
+    }, '') + '.' + p[1];
   };

   $('#order_tab').html("#{j result}");

pressing Enter in the branch view leads to strange behaviour

Steps to reproduce

  1. start tig in a git'ed folder
  2. press 'H' -> branch view
  3. press 'Enter'. -> screen is devided. Focus is in the top area 'branch view'
  4. press 'm' to switch to main view. -> main view is shown.
  5. Try to move with CursorDown/Up -> suddenly the screen is splitted again. Movement is restricted.

The only way to get out of this situation is to press 'q' multiple times until tig exits.

"color blame-id yellow default" doesn't appear to work

When I add the line "color blame-id yellow default" (without the quotes) to my ~/.tigrc file, it doesn't change the color of the commit SHA1 ID in the blame view. Interestingly, if I set the blame-id colors to "default magenta" so that the background stands out, I do momentarily see the commit SHA1 ID flash magenta, but then it redraws to be the default color.

I built from d59840e which is the HEAD on master at the moment.

Wrong jump for diff with no content change

In some rare cases, the "Press Enter to jump" feature skips a diff header. You may try this in the tig repository:

touch FOO
echo bar >> NEWS
git add .
git commit -am baz

In the diff view, pressing Enter on "NEWS" jumps to the FOO diff header.
That's because the diff stat does not show new empty files while tig wants to jump to the first diff header.

Getting encoding problem after upgrading to tig 1.0

I have a git repository in which files and logs are written in GB18030 encoding. It works well when I used tig 0.18. I just need to set i18n.commitEncoding to GB18030, and set LC_CTYPE to zh_CN.GB18030. But after upgrading to tig 1.0, I can't find a way to get it work anymore. I found that in commit 6b195c0, it forces to use UTF-8 to decode anything. But for me there are GB18030 encoded characters in the files, and git log with --encoding parameter will not convert the diff of files. Is there any way to get it work again? Thanks :)

Compile with custom ncursesw

I am trying to compile tig with custom ncursesw on Ubuntu 11.10. Ncursesw was compiled without any problems:

./configure --prefix=/usr/local/ncursesw-5.9 --enable-widec --with-shared
make
make install

When trying to configure tig, following happens:

./configure --prefix=/usr/local/tig-0.18 --with-ncursesw=/usr/local/ncursesw-5.9
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for working ncursesw... no
checking for working ncurses... no
checking for working curses... no
configure: error: ncurses not found

I have also tried setting LDFLAGS and CPPFLAGS:

env LDFLAGS="-L/usr/local/ncursesw-5.9/lib" \
    CPPFLAGS="-I/usr/local/ncursesw/ncursesw-5.9/include" \
    ./configure --prefix=/usr/local/tig-0.18 --with-ncursesw
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for working ncursesw... no
configure: WARNING: The found ncurses library does not support wide-char.
configure: WARNING: This means that tig will not correctly render UTF-8.
checking for iconv... yes
checking for iconv declaration... 
         extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking for asciidoc... no
checking for xmlto... no
checking for docbook2pdf... no
configure: creating ./config.status
config.status: creating config.make
config.status: creating config.h
config.status: config.h is unchanged

I am pretty sure the problem is with my understanding of the configure/make process :) Has this happened to anyone else?

git like graph style

Would it be too hard to implement a graph similar to the one produced by git log --graph --color --oneline --decorate ?

example

Improve rendering of the revision graph

The commit structure should be expanded to have a parent member, which points to the parent commits.

  • Make main view support navigating the revision graph using the parent action.
  • Improve coloring of the graph to make it easier to follow branches.

Feature from gitk:

  • Show from which branch heads and tags a commit is reachable, and perhaps which tag is the latest among the ones reachable from that commit, as part of the diff view. How should rewritten parent information be handled? Depends on new enhanced commit structure.

Toggleable --full-diff option

I'd like to add a diff view toggle for the --full-diff option:

--full-diff
    Without this flag, "git log -p <path>..." shows commits that touch the specified paths, and
    diffs about the same specified paths. With this, the full diff is shown for commits that touch
    the specified paths; this means that "<path>..." limits only commits, and doesn’t limit diff
    for those commits.

    Note that this affects all diff-based output types, e.g. those produced by --stat etc.

Jonas (and others): are there thoughts on good keybindings for this? Would others like such an option as well? I find it very useful when performing pickaxe searches.

regression: broken branch graph when calling tig on a specific path

Hi,

It seems that in tig 1.0 (and todays git master) that the branch graph is broken when calling tig on a specific path. This was fine with tig 0.18.
I get strange column shifting without any branching or merging involved.

Seen this with 2 different git versions: 1.7.4.1 and 1.7.8.6

For example, I get this output when invoking "tig tig.c" :

  1│ 2012-05-11 16:37 Jonas Fonseca      o [master] [origin/HEAD] [origin/master] Fix opening the pager view from the command prompt
   │ 2012-05-11 08:33 Jonas Fonseca      o Show formatted run request argv when prompting
   │ 2012-05-10 23:40 Vivien Didelot     o Add support to confirm the execution of a binding
   │ 2012-05-11 00:48 Jonas Fonseca      o Change run request to use flags for passing silent and force options
  5│ 2012-05-11 00:22 Jonas Fonseca      o Introduce argv_to_string function in the IO library
   │ 2012-05-11 00:04 Jonas Fonseca      o Simplify add_pager_refs interface to expect the commit ID
   │ 2012-05-11 00:03 Jonas Fonseca      o Use const char pointers for common pager and diff read functions
   │ 2012-05-09 22:42 Jonas Fonseca      │ o [GH #49] Increase the author auto-abbreviation threshold to 10
   │ 2012-05-09 22:24 Jonas Fonseca      │ o [GH #50] Make relative dates show number of years ago for old commits
 10│ 2012-05-09 21:56 Jonas Fonseca      │ o Update the index before showing staged/unstaged changes in the main view
   │ 2012-05-09 21:56 Jonas Fonseca      │ o Do not count the first line and parent accessor lines in the tree view
   │ 2012-05-08 07:23 Jonas Fonseca      │ o Do not count the All branches line in the branch view
   │ 2012-05-08 07:21 Jonas Fonseca      │ o Do not count the unstaged/staged commit lines in the main view
   │ 2012-05-04 18:37 Jonas Fonseca      │ o Fix diff stat for files where the path separator is not shown
 15│ 2012-05-03 16:19 Jonas Fonseca      │ o Use git log format to simplify commit title parsing
   │ 2012-05-03 16:26 Jonas Fonseca      │ o Show the file name of the current position in the diff status
   │ 2012-05-03 09:29 Jonas Fonseca      │ o Show the title of the last commit in the branch view
   │ 2012-04-29 23:46 Jonas Fonseca      │ │ o Enable diff stat navigation for the staged changes views
   │ 2012-04-29 23:07 Jonas Fonseca      │ │ o Fix jumping when the diff stat contains a file with no changes
 20│ 2012-04-29 22:26 Jonas Fonseca      │ │ o Add macro to check if a view line is in range
   │ 2012-04-29 20:41 Jonas Fonseca      │ │ o Do not show empty trees for staged and unstaged commit entries
   │ 2012-04-29 14:33 Jonas Fonseca      │ │ │ o Fix diff stat navigation for unmodified renamed files
   │ 2012-04-25 08:39 Giuseppe Bilotta   │ │ │ │ o prompt_menu: protect against programming error
   │ 2012-04-25 08:36 Giuseppe Bilotta   │ │ │ │ o Suppress clang warning
 25│ 2012-04-25 00:20 Jonas Fonseca      │ │ │ │ │ o Fix compile warnings for an unused variable and return values
   │ 2012-04-24 21:59 Jonas Fonseca      │ │ │ │ │ │ o Fix status view position restoration regression from recent refactorings
   │ 2012-04-22 23:19 Jonas Fonseca      │ │ │ │ │ │ o Move error logic to the respective view open handlers
   │ 2012-04-22 23:15 Jonas Fonseca      │ │ │ │ │ │ o Refactor view loading to allow open methods to abort
   │ 2012-04-22 18:40 Jonas Fonseca      │ │ │ │ │ │ o Move open view error reporting down into the view handlers
 30│ 2012-04-22 18:34 Jonas Fonseca      │ │ │ │ │ │ o Simplify code in status_open
   │ 2012-04-22 17:50 Jonas Fonseca      │ │ │ │ │ │ o Move split_view and maximize_view to the open view section
   │ 2012-04-15 12:12 Jonas Fonseca      │ │ │ │ │ │ o Move refs code to separate file
   │ 2012-04-07 11:25 Jonas Fonseca      │ │ │ │ │ │ o Move keymap to view ops and change to use a struct
   │ 2011-12-03 16:58 Jonas Fonseca      │ │ │ │ │ │ o Rework the help view to not use line->other
 35│ 2011-11-30 23:40 Jonas Fonseca      │ │ │ │ │ │ o Refactor setup of built-in run requests
   │ 2012-04-22 23:14 Jonas Fonseca      │ │ │ │ │ │ o Minor improvement of status view restoration
   │ 2011-12-18 11:46 Jonas Fonseca      │ │ │ │ │ │ o Store all restore information in view.prev_pos
   │ 2011-12-05 07:57 Jonas Fonseca      │ │ │ │ │ │ o Move navigation state to struct position
   │ 2012-04-23 08:26 Jonas Fonseca      │ │ │ │ │ │ o Fix refs reloading by not assuming that they are alphabetically sorted
 40│ 2012-04-19 08:15 Jonas Fonseca      │ │ │ │ │ │ │ o Force load the branch view log data
   │ 2012-04-18 23:57 Jonas Fonseca      │ │ │ │ │ │ │ o Fix default commit order to be that of git-log(1)
   │ 2012-04-18 23:53 Jonas Fonseca      │ │ │ │ │ │ │ o Switch to use git-log(s) default commit ordering
   │ 2012-04-18 03:18 Jonas Fonseca      │ │ │ │ │ │ │ o [GH #23] Add %(prompt) variable
   │ 2012-04-18 02:42 Jonas Fonseca      │ │ │ │ │ │ │ o [GH #30] Enable notes by default

After bisecting, it seems that the culprit comes from this commit:


$ git bisect good
73bee5e48a534ff8ab76346992188f0a229837f9 is the first bad commit
commit 73bee5e48a534ff8ab76346992188f0a229837f9
Author: Jonas Fonseca 
Date:   Thu May 3 16:19:54 2012 -0400

    Use git log format to simplify commit title parsing
    
    Also unifies the git-log(1) command arguments used by the main and
    branch views.

:100644 100644 1430a959bdd2c5676bda0465dbca1378974c5fa7 817926125f7d57952dbffaf0f1f30fccf33e7f5f M      git.h
:100644 100644 e927ca62c5ef923767072f4347bbb96f8e700764 af37bf4a3bf6a28e57398498656137c3233a7779 M      tig.c

Feature request: Add staging area to revision tree

feature request

Other viewers like gitk display the content of the staging area and any other changed to the working directory as extra revision nodes on top of the others. Would it be possible to implement that feature? It is extremely useful for development, since one can use one tool for checking what one has changed.

symbols

For graph view, I suggest the following characters to be used for the nodes of the staged and unstaged changes:

                 ASCII Unicode
staged changes   C     ⊕
unstaged changes S     ⊛

Manpage generation broken

For some reason, c7a55c1 breaks generating the manpage on my Debian unstable system.

Output of "make tigmanual.7":

asciidoc -aversion=0.18-43-gc7a55c1 -asysconfdir=/usr/local/etc -b docbook -d manpage tigmanual.7.txt
xmlto man tigmanual.7.xml
xmlto: /home/co/c/tig/tigmanual.7.xml does not validate (status 3)
xmlto: Fix document syntax or use --skip-validation option
/home/co/c/tig/tigmanual.7.xml:5: element refentry: validity error : Element refentry content does not follow the DTD, expecting (beginpage? , indexterm* , refentryinfo? , refmeta? , (remark | link | olink | ulink)* , refnamediv+ , refsynopsisdiv? , (refsect1+ | refsection+)), got (refmeta refnamediv refsynopsisdiv refsect1 refsect1 refsect1 refsect1 refsect1 refsect1 refsect1 refsect1 bibliography )
/home/co/c/tig/tigmanual.7.xml:868: element bibliography: validity error : Element bibliography content does not follow the DTD, expecting (bibliographyinfo? , (title , subtitle? , titleabbrev?)? , (calloutlist | glosslist | bibliolist | itemizedlist | orderedlist | segmentedlist | simplelist | variablelist | caution | important | note | tip | warning | literallayout | programlisting | programlistingco | screen | screenco | screenshot | synopsis | cmdsynopsis | funcsynopsis | classsynopsis | fieldsynopsis | constructorsynopsis | destructorsynopsis | methodsynopsis | formalpara | para | simpara | address | blockquote | graphic | graphicco | mediaobject | mediaobjectco | informalequation | informalexample | informalfigure | informaltable | equation | example | figure | table | msgset | procedure | sidebar | qandaset | task | anchor | bridgehead | remark | highlights | abstract | authorblurb | epigraph | indexterm | beginpage)* , (bibliodiv+ | (biblioentry | bibliomixed)+)), got (title simpara itemizedlist simpara itemizedlist )
Document /home/co/c/tig/tigmanual.7.xml does not validate
make: *** [tigmanual.7] Error 13
rm tigmanual.7.xml

tig not showing git colors in pager mode

Hi.
In my gitconfig I have:
[color]
ui = auto
[color "branch"]
current = yellow reverse
local = yellow
remote = green
[color "diff"]
meta = yellow bold
frag = magenta bold
old = red bold
new = green bold
whitespace = red reverse
[color "status"]
added = yellow
changed = green
untracked = cyan

but this breaks showing colors in tig (in pager mode). That's the example output from git diff:
^[[1;33mindex 8400b58..a9ce073 100644^[[m
^[[1;33m--- a/gitconfig^[[m
^[[1;33m+++ b/gitconfig^[[m
^[[1;35m@@ -18,19 +18,16 @@^[[m
frag = magenta bold^[[m
old = red bold^[[m
new = green bold^[[m
^[[1;32m+^[[m^[[1;32m whitespace = red reverse^[[m
[color "status"]^[[m
added = yellow^[[m
changed = green^[[m
untracked = cyan^[[m
^[[m
^[[1;31m-[color]^[[m
^[[1;31m- ui = true^[[m
^[[1;31m-[color "diff"]^[[m
^[[1;31m- whitespace = red reverse^[[m
[core]^[[m

Cannot run blame -C -C -C

Sometimes I like to use git blame -C -C -C file to see where all the lines in the file came from. Unfortunately this is not currently available in tig. I've made a patch to default blame to always use -C -C -C, but that is not ideal. Ideally tig blame would work similarly to show, resulting in a command line like:

tig blame [options] [rev] [--] [path]

Add color support for colorizing more parts of diff output

Can you add color support for colorizing the following additional parts of the diff output:

  • Lines containing only ---, which separate commit log output from diff-stat output
  • Diff lines beginning with --- a/
  • Diff lines beginning with +++ b/
  • Diff lines beginning with " " (a space, without the quotes), which are context lines in the diff output

I built from d59840e which is the HEAD on master at the moment.

malloc assertion when using command-line options

Current git HEAD has the following issue:

oblomov@oblomov:~/src/tig [master] $ tig --no-merges
tig: malloc.c:3574: mremap_chunk: Assertion `((size + offset) & (mp_.pagesize-1)) == 0' failed.
Aborted

This is due to reallocated memory not being properly zeroed. I have a patch ready, let me see if I can attach it to the issue.

color-words support

Currently, tig has no support for color-words in diffs. In fact, starting tig wit the --color-words option fails with "No revisions match the given argument" (which is quite misleading as error message).

This should probably be consiered a long-term TODO, as it requires some heavy-duty re-engineering of the diff view, especially with respect to highlighting. Also, color-word support would require massaging the input parameters, since the word-diff option should always be turned into 'porcelain'.

stage single lines

The feature i miss most in tig is the ability to stage single lines (no hunks) from the stage view.

Delete files in status view

I just started using tig and found myself looking for the possibility to delete untracked files in the status view. The scrollable view is a nice way to root out generated files which should not be added to the repository. Sometimes it is easier to delete most of the known unwanted files before starting the search for the wanted ones to add. I have not found in the documentation any hints on how to delete the current highlighted file.

show-date=relative should imply short

When showing relative dates, it isn't probably be very useful to see the time of a commit made 1 year ago.
Removing the time, or using "1 year ago" instead of the date would save some space.

example

Interactively increase/decrease diff context

Bound to <CTRL><+> and <CTRL><-> perhaps. This would be invaluable when looking at a commit and needing to see more of the surrounding code. The underlying git diff supports it, so I believe it's a matter of redisplaying the diff view with the extra arg, plus keeping track of the "current" context level.

I may have time to look into writing a patch for this in the next few days if you'd like.

blaming parent uses wrong filename when in subdir

If tig is started in a subdirectory of the project, doing tig blame foo.c will work just fine, reading subdir/foo.c. But when using REQ_PARENT to re-blame starting at the parent, tig pulls the filename from git's blame output, which has the full pathname. As a result, we end up trying to blame subdir/subdir/foo.c.

You can replicate easily in tig with:

$ cd contrib
$ tig blame release.sh

and then using , to blame the parent of any modified line (e.g., the copyright line near the top). Tig will die with tig: No blame exist for contrib/contrib/release.sh.

Feature request: Key sequences as binds

It would be awesome if you could add key sequence support. I imagine that you would add a new key bind type, perhaps something like this:

(in ~/.tigrc)

bind generic g wait
bind generic gd view-diff
bind generic gt view-tree

My reasoning is to make tig's keybinds closer to my vim configuration's.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.