Drop use of $(...) for popen() and system() calls
Some shells don't support it, like the jsh that is used as /bin/sh on
some Solaris boxes, which results in the following error:
sh: syntax error at line 1: `(' unexpected
Fix the only user (reading remote information via git-ls-remote) to use
a much simpler shell syntax.
Reported by SungHyun Nam.
Some shells don't support it, like the jsh that is used as /bin/sh on
some Solaris boxes, which results in the following error:
sh: syntax error at line 1: `(' unexpected
Fix the only user (reading remote information via git-ls-remote) to use
a much simpler shell syntax.
Reported by SungHyun Nam.
Add NEWS file
Fix warnings emitted with -pedantic
Refactor management of the current draw column and max draw width
Do it in the draw_* functions instead of all the view draw functions.
Do it in the draw_* functions instead of all the view draw functions.
Use draw_field() for the author field
This requires that utf8_length() makes the width/column available to
draw_text().
This requires that utf8_length() makes the width/column available to
draw_text().
Introduce draw_field() helper for drawing main and blame fields
It will draw spaces if the passed string is NULL.
It will draw spaces if the passed string is NULL.
Refactor revgraph drawing into draw_graphic()
blame: simplify handling of incomplete commit information
Always wait for the final blame information (the commit filename) to be
read before showing any commit information.
Always wait for the final blame information (the commit filename) to be
read before showing any commit information.
Simplify line attribute handling
- Add set_view_attr() that wraps calls to wattrset() and does the right
thing for the selected line. For successive calls without a change of
the attribute nothing will be done.
- Make draw_text() take a line attribute since all callers were already
calling set_view_attr().
Note: all attribute updates will now also call wchgat() in addition to
wattrset().
- Add set_view_attr() that wraps calls to wattrset() and does the right
thing for the selected line. For successive calls without a change of
the attribute nothing will be done.
- Make draw_text() take a line attribute since all callers were already
calling set_view_attr().
Note: all attribute updates will now also call wchgat() in addition to
wattrset().
Keep line graphics characters in a table initialized on startup
... and use ACS_VLINE instead of '|' for the revgraph.
... and use ACS_VLINE instead of '|' for the revgraph.
Add line-graphics option to disable graphics characters for line drawing
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Search checks reference names too
Do not search for matches in hidden view elements.
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Do not search for matches in hidden view elements.
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Document the main-commit colour option
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Let ncurses take care of expanding tabs by setting its TABSIZE variable
Rename the default tab size from TABSIZE to TAB_SIZE, since it shadows
the public ncurses TABSIZE variable which controls how the waddch-family
expands tabs when drawing. This makes it possible to finally handle
tabsizes different from 8 for UTF-8.
Rename the default tab size from TABSIZE to TAB_SIZE, since it shadows
the public ncurses TABSIZE variable which controls how the waddch-family
expands tabs when drawing. This makes it possible to finally handle
tabsizes different from 8 for UTF-8.
Refreshing the current view when F5 is pressed (like gitk)
Fix regression from "Improve staging of diff chunks"
In commit 234918423a4fac44375317e6c9e7ee54ea09379c the change to
stage_update reads:
static bool
stage_update(struct view *view, struct line *line)
{
- if (!opt_no_head && stage_line_type != LINE_STAT_UNTRACKED &&
- (line->type == LINE_DIFF_CHUNK || !stage_status.status)) {
- if (!stage_update_chunk(view, line)) {
where the !stage_status.status part was meant to match whole sections.
Reinstate this behavior so that pressing 'u' when in the stage view for
a section of changes it will stage all changed files in that section.
In commit 234918423a4fac44375317e6c9e7ee54ea09379c the change to
stage_update reads:
static bool
stage_update(struct view *view, struct line *line)
{
- if (!opt_no_head && stage_line_type != LINE_STAT_UNTRACKED &&
- (line->type == LINE_DIFF_CHUNK || !stage_status.status)) {
- if (!stage_update_chunk(view, line)) {
where the !stage_status.status part was meant to match whole sections.
Reinstate this behavior so that pressing 'u' when in the stage view for
a section of changes it will stage all changed files in that section.
Do not reload status and stage views on errors
It hides the error message.
It hides the error message.
Fix AsciiDoc replacing -- in --with-libiconv
Squelsh output of update-index when loading the status view (part II)
Also include messages from stdout.
Also include messages from stdout.
Rebind the maximize action to 'O' instead of 'M'
The latter is already used for launching the mergetool when in the
status view.
The latter is already used for launching the mergetool when in the
status view.
tig-0.11
Use sans-serif font for the README page
Update copyright notice for the manual
Remove unused blame line attributes
Use tables for listing the UI colors
Minor cleanup in blame_draw
Setup colors for the selected line in draw_view_line()
Make the main and blame view share date drawing and date colors
Renames the main-date color to date.
Renames the main-date color to date.
Squelsh output of update-index when loading the status view
Avoid splitting the view when navigating stage view in full screen
Use 3 as the minimum width of formatted line numbers
It gives a more pleasant experience when "digging" through commits.
And of course, most commits will have diffs smaller than 1000 lines!?
For the blame view it means less flickering in the startup when the
whole file is read.
It gives a more pleasant experience when "digging" through commits.
And of course, most commits will have diffs smaller than 1000 lines!?
For the blame view it means less flickering in the startup when the
whole file is read.
Revert "When toggling options redraw the view instead of the whole display"
This reverts commit d79f15772b0489ae3bf77322706016c733a714c9.
This reverts commit d79f15772b0489ae3bf77322706016c733a714c9.
Fix compatibility for git rev-parse without --symbolic-full-name
Use symbolic-ref instead.
Use symbolic-ref instead.
Error out when starting up in empty main or blame view
This usually means that the arguments did not match any revisions or file.
This usually means that the arguments did not match any revisions or file.
Improve staging of diff chunks
As suggested by Petr Baudis some year ago, make updating of chunks work
stage the chunk the cursor line is within instead of the whole file. Still
stage everything when the cursor is in the diff --stat header.
As suggested by Petr Baudis some year ago, make updating of chunks work
stage the chunk the cursor line is within instead of the whole file. Still
stage everything when the cursor is in the diff --stat header.
Reload the status and stage views after a run request has been handled
Add support for refreshing of the stage view
Consolidate stage reloading for the edit, refresh, and update requests.
It works by first reloading the status view after which the stage view
is closed or reloaded depending on whether the status information of the
stage view still is valid.
Consolidate stage reloading for the edit, refresh, and update requests.
It works by first reloading the status view after which the stage view
is closed or reloaded depending on whether the status information of the
stage view still is valid.
When toggling options redraw the view instead of the whole display
Use werase() instead of wclear() when reloading a view
It behaves much better by not causing the parent view to be repainted.
It behaves much better by not causing the parent view to be repainted.
Share the line number colors between blame view and others
Renames the blame-lineno color to line-number.
Renames the blame-lineno color to line-number.
Rename load_repo_config() to load_git_config()
Do not load repository references when acting as a pager
It will cause git ls-remote to print an error message.
It will cause git ls-remote to print an error message.
Merge branch 'master' of remote-server:src/tig
status: use draw_text completely
Make local tags and normal branches use normal font-weight
Change color of HEAD reference to use cyan as normal branches
but with bold font.
Change color of HEAD reference to use cyan as normal branches
but with bold font.
Show the tracked remote branch with bold text
... and others with normal font-weight.
... and others with normal font-weight.
Add draw_lineno() and use when drawing the blame and pager view
Add action to maximize the current view; bound to M by default
Disable opening views that require a git directory when in pager mode
Fix pager mode by always doing the isatty()
Also relax the opt_git_dir check.
Also relax the opt_git_dir check.
stage: disable whitespace warnings from git apply when staging updates
Improve perfomance and usability when updating many files
Split the update function into one for single file and all files in a
section so that only one fork of update-index is required in both cases.
Show progress for long running updates (e.g. importing the Linux kernel)
where git needs to hash many objects (>20k).
Split the update function into one for single file and all files in a
section so that only one fork of update-index is required in both cases.
Show progress for long running updates (e.g. importing the Linux kernel)
where git needs to hash many objects (>20k).
Fix and improve status refreshing after updating
Update the view offset so the current line is already visible.
This requires that the display is split or initialized before
starting to load the view so status_open has the view->height
available.
Update the view offset so the current line is already visible.
This requires that the display is split or initialized before
starting to load the view so status_open has the view->height
available.
Fix uninitialized variable warning
Output extra \n on tig -h
The usage string does not contain a '\n' as the last character which is
annoying when calling 'tig -h'.
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
The usage string does not contain a '\n' as the last character which is
annoying when calling 'tig -h'.
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Avoid reloading the status view when nothing was updated
Oops, fix delimiter documentation
Add support for preparing the initial commit in the status view
Rename "main-delim" color to the more generic "delimiter"
It was already used by views other than main.
It was already used by views other than main.
Show the current branch in the status view
Also, improve the positioning of the cursor line after updates to
restore or select something that is "updateable". Adding new files
should now work more intuitively.
Also, improve the positioning of the cursor line after updates to
restore or select something that is "updateable". Adding new files
should now work more intuitively.
Save current branch from rev-parse output and highlight it
The chosen color is red with bold font, however, maybe all other refs
should be toned down and only the current branch should use bold font.
The chosen color is red with bold font, however, maybe all other refs
should be toned down and only the current branch should use bold font.
blame: Fix opening from subdirectory and consecutive invokations
Remove deprecated options and cleanup option parsing
More blame view fixes
Various fixes and improvements of the new blame view
- Fix entering from status and stage views by making opt_ref setting
optional.
- Use separate opt_file variable, since the tree view also uses
opt_path.
- Fix entering from status and stage views by making opt_ref setting
optional.
- Use separate opt_file variable, since the tree view also uses
opt_path.
Add blame view
It may both be entered from the command line using:
tig blame [rev] path
or from either the status and stage, as well as by using the tree view
to navigte.
It may both be entered from the command line using:
tig blame [rev] path
or from either the status and stage, as well as by using the tree view
to navigte.
Add hack to allow view loading to have multiple phases
.. by avoiding end_update() call after last read line.
.. by avoiding end_update() call after last read line.
Simplify subcommand option parsing by moving it out of the loop
draw_text: remove unused col argument
Use rewritten parent info from --parents to simplify the revgraph
Move unrelated UTF-8 setup code out of parse_options
tigrc(5): Improve documentation of new show-* options
configure: test for git binary and improve config subcommand test
Call realloc() less often because it is potentially slow.
Signed-off-by: Dominik Vogt <dvogt@ffm.tc.iot.dtag.de>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Dominik Vogt <dvogt@ffm.tc.iot.dtag.de>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
New config options show-author, show-date, show-refs, show-line-numbers.
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Fixed displaying local tags.
Added a new colour main-local-tag.
Signed-off-by: Dominik Vogt <dvogt@ffm.tc.iot.dtag.de>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Added a new colour main-local-tag.
Signed-off-by: Dominik Vogt <dvogt@ffm.tc.iot.dtag.de>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
New actions toggle-date, toggle-author, and toggle-refs.
Signed-off-by: Dominik Vogt <dvogt@ffm.tc.iot.dtag.de>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Dominik Vogt <dvogt@ffm.tc.iot.dtag.de>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Fix index refreshing into separate call so diff-files is always run
draw_text: reduce indentation level
draw_text: minor cleanup to use fewer local variables
utf8_length: add reserve flag for reserving a trailing character
Replace unused coloffset with reserve flag, which will reserve at least
one character cell at the end. Use it for reserving a delimiter character
when use_tilde is TRUE, and avoid a second call to utf8_length().
Replace unused coloffset with reserve flag, which will reserve at least
one character cell at the end. Use it for reserving a delimiter character
when use_tilde is TRUE, and avoid a second call to utf8_length().
TODO: --boundary flag is already used
0.11.git
tig-0.10.1
More verbose diff headers (including dates and committer)
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Fix drawing "outside" the screen in the status and pager views
It was causing text to wrap to next line, but with the new function to
draw text with limited width this has become much easier.
It was causing text to wrap to next line, but with the new function to
draw text with limited width this has become much easier.
Fixed handling of UTF8 tag names and commit messages.
[ jf: fix off-by-one error for trimmed tilde drawing and bad padding
substraction ]
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
[ jf: fix off-by-one error for trimmed tilde drawing and bad padding
substraction ]
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Make configure search for the ncursesw library first
Also (unconditionally) define _XOPEN_SOURCE_EXTENDED before including
curses.h to have extended functions as recommended by ncurses(3).
Also (unconditionally) define _XOPEN_SOURCE_EXTENDED before including
curses.h to have extended functions as recommended by ncurses(3).
Fix compiler warnings: pointer of type ‘void *’ used in arithmetic
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Fix signed char comparison where char is unsigned by default
tig uses a char as a flag, and expects that to have three
values: TRUE, FALSE, and -1. When char is unsigned char (such
as on PPC), this fails with the compiler warning "comparison is
always false due to limited range of data type".
So explicitly make the flag a signed char.
Detecting the int8_t type with the autoconf macro
AC_CREATE_STDINT_H would probably be a better fix.
Signed-off-by: Russell Steicke <russellsteicke@gmail.com>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
tig uses a char as a flag, and expects that to have three
values: TRUE, FALSE, and -1. When char is unsigned char (such
as on PPC), this fails with the compiler warning "comparison is
always false due to limited range of data type".
So explicitly make the flag a signed char.
Detecting the int8_t type with the autoconf macro
AC_CREATE_STDINT_H would probably be a better fix.
Signed-off-by: Russell Steicke <russellsteicke@gmail.com>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Fixed spurious "/bin/sh: --list: command not found" error
If git has been installed with a separate libexecdir which is not in path
(for example, a standard msysgit installation), tig would not find
"git-config", and we must instead find the "git" binary and call it as
"git config".
Signed-off-by: Peter Karlsson <peter@softwolves.pp.se>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
If git has been installed with a separate libexecdir which is not in path
(for example, a standard msysgit installation), tig would not find
"git-config", and we must instead find the "git" binary and call it as
"git config".
Signed-off-by: Peter Karlsson <peter@softwolves.pp.se>
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Refresh the index when opening the status view to avoid "empty diffs"
Add rename support to the status view
Renames are now picked up and displayed with the 'R' flag instead of
being shown as a 'C'opy and 'D'eletion. Remove --find-copies-harder from
the arguments to diff-index and diff-files since this option seem to
interfere with rename detection.
Renames are now picked up and displayed with the 'R' flag instead of
being shown as a 'C'opy and 'D'eletion. Remove --find-copies-harder from
the arguments to diff-index and diff-files since this option seem to
interfere with rename detection.
Make it more clear that use of configure (and autoreconf) is optional
Suggested by Junio.
Suggested by Junio.
Replace SYSCONFDIR value in distributed documentation distributed
.. by defining sysconfdir to ++SYSCONFDIR++ when building documentation
for the release branch. This also improved quoting of paths during
installation.
Reported by Jakub Narebski.
.. by defining sysconfdir to ++SYSCONFDIR++ when building documentation
for the release branch. This also improved quoting of paths during
installation.
Reported by Jakub Narebski.
tig-0.10.1.git
tig-0.10
Make command line parsing more compatible with gitk
Many of the command line arguments are relics from the beginning of the
project and served as a method of configuring tig before support for the
configuration file was introduced. Since then they have become less
useful and make tig less compatible with gitk and other git repo
viewers.
This commit tries to fix this by deprecating all command line arguments
except the very tig specific version and help arguments. The option to
enter the status view (-S) is moved to a new "status" subcommand. Tig
will warn about the deprecation and advise -S users to use the new
subcommand. The handling of "--" is kept as it is for compatibility, but
will be removed in a future version. Finally, the man page and manual
was updated to reflect the new options and subcommands.
So enjoy the new less cludgy `tig --all' ... I will! :)
Many of the command line arguments are relics from the beginning of the
project and served as a method of configuring tig before support for the
configuration file was introduced. Since then they have become less
useful and make tig less compatible with gitk and other git repo
viewers.
This commit tries to fix this by deprecating all command line arguments
except the very tig specific version and help arguments. The option to
enter the status view (-S) is moved to a new "status" subcommand. Tig
will warn about the deprecation and advise -S users to use the new
subcommand. The handling of "--" is kept as it is for compatibility, but
will be removed in a future version. Finally, the man page and manual
was updated to reflect the new options and subcommands.
So enjoy the new less cludgy `tig --all' ... I will! :)
Add system-wide configuration file and new config file environment vars
Introduced envvars TIGRC_USER and TIGRC_SYSTEM to control which config
file is used. The default user specific config file can be overridden
with TIGRC_USER. Before loading the user config file, tig now looks for
a system wide config file ($(sysconfdir)/tirgc by default). This can be
overridden with the environment variable TIGRC_SYSTEM.
Also corrected a small mistake in the Makefile. Instead of setting
CFLAGS for '-D...' compiler options, use CPPFLAGS.
[ The original code from Dominik was changed so that tig always reads
the system-wide configuration file. The documentation was improved
so the configured sysconfdir is used in the generated documentation.
-- jonas ]
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Introduced envvars TIGRC_USER and TIGRC_SYSTEM to control which config
file is used. The default user specific config file can be overridden
with TIGRC_USER. Before loading the user config file, tig now looks for
a system wide config file ($(sysconfdir)/tirgc by default). This can be
overridden with the environment variable TIGRC_SYSTEM.
Also corrected a small mistake in the Makefile. Instead of setting
CFLAGS for '-D...' compiler options, use CPPFLAGS.
[ The original code from Dominik was changed so that tig always reads
the system-wide configuration file. The documentation was improved
so the configured sysconfdir is used in the generated documentation.
-- jonas ]
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Make it possible to overwrite the default (terminal) colors
Use the setting of the "default" color pair to set the default colors of
the terminal via assume_default_colors(). Fall back to white on black.
With this it is possible to no longer use the terminal colors if
desired.
This was requested by Sebastian Harl as a way to fix Debian bug 399884.
Use the setting of the "default" color pair to set the default colors of
the terminal via assume_default_colors(). Fall back to white on black.
With this it is possible to no longer use the terminal colors if
desired.
This was requested by Sebastian Harl as a way to fix Debian bug 399884.