Hello community, here is the log from the commit of package tig for openSUSE:Factory checked in at 2018-01-13 21:45:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/tig (Old) and /work/SRC/openSUSE:Factory/.tig.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tig" Sat Jan 13 21:45:26 2018 rev:41 rq:559567 version:2.3.2 Changes: -------- --- /work/SRC/openSUSE:Factory/tig/tig.changes 2017-10-13 14:17:09.641397749 +0200 +++ /work/SRC/openSUSE:Factory/.tig.new/tig.changes 2018-01-13 21:45:34.935851302 +0100 @@ -1,0 +2,17 @@ +Sat Dec 23 00:46:18 UTC 2017 - [email protected] + +- tig 2.3.2: + * Improve how busy loop detection performs on large repos +- tig 2.3.1: + * Improvements: + - Restore TTY attributes + - Handle \n like \r + * Bug fixes: + - Add workaround that detects busy loops when Tig loses the + TTY. This may happen if Tig does not receive the HUP signal + (e.g. when started with nohup) + - compatibility with ncurses-5.4 (clipboard support for prompt) + - tig(1): document correct environment variable +- use macros to simplify build and install steps + +------------------------------------------------------------------- Old: ---- tig-2.3.0.tar.gz New: ---- tig-2.3.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ tig.spec ++++++ --- /var/tmp/diff_new_pack.Q25mmq/_old 2018-01-13 21:45:38.239697296 +0100 +++ /var/tmp/diff_new_pack.Q25mmq/_new 2018-01-13 21:45:38.243697109 +0100 @@ -17,13 +17,13 @@ Name: tig -Version: 2.3.0 +Version: 2.3.2 Release: 0 Summary: An ncurses-based text-mode interface for git License: GPL-2.0+ Group: Development/Tools/Version Control Url: https://jonas.github.io/tig/ -Source0: https://github.com/jonas/tig/releases/download/tig-%{version}/tig-%{version}.tar.gz +Source0: https://github.com/jonas/tig/releases/download/%{name}-%{version}/%{name}-%{version}.tar.gz BuildRequires: asciidoc BuildRequires: bash-completion BuildRequires: ncurses-devel @@ -49,17 +49,15 @@ --with-ncurses \ --docdir=%{_docdir} -make %{?_smp_mflags} prefix=%{_prefix} mandir=%{_mandir} +make %{?_smp_mflags} %install -make DESTDIR=%{buildroot} prefix="%{_prefix}" mandir="%{_mandir}" install -make DESTDIR=%{buildroot} prefix="%{_prefix}" mandir="%{_mandir}" install-doc +%make_install install-doc-man install -D -m0644 contrib/tig-completion.bash "%{buildroot}%{_sysconfdir}/bash_completion.d/%{name}" %files %doc COPYING NEWS.adoc README.adoc %doc contrib/*.tigrc -%{_docdir}/%{name}/* %{_bindir}/tig %{_mandir}/man1/tig.1%{ext_man} %{_mandir}/man5/tigrc.5%{ext_man} ++++++ tig-2.3.0.tar.gz -> tig-2.3.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/.travis.yml new/tig-2.3.2/.travis.yml --- old/tig-2.3.0/.travis.yml 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/.travis.yml 2017-12-18 22:59:21.000000000 +0100 @@ -1,9 +1,5 @@ language: c -compiler: - - clang - - gcc - sudo: false addons: @@ -13,25 +9,27 @@ - xmlto - valgrind -script: - - # ============ Build from config =============== - - cp contrib/config.make . - - make all-debug - - make update-docs && git diff --exit-code - - make test - - make test TEST_OPTS=valgrind - - if [ $CC = clang ]; then make test-address-sanitizer; fi - - make DESTDIR=/tmp/bare-destdir install install-doc - - make DESTDIR=/tmp/bare-destdir uninstall - - test ! -d /tmp/bare-destdir - - make prefix=/tmp/bare-prefix install install-doc - - make prefix=/tmp/bare-prefix uninstall - - test ! -d /tmp/bare-prefix - - make distclean - - # ============ Build using autoconf ============ - - make dist - - ./configure --prefix=/tmp/conf-prefix - - make V=1 TEST_SHELL=bash all test install install-doc - - make uninstall - - test ! -d /tmp/conf-prefix - - make clean +env: + global: + matrix: + - TRAVIS_TIG=autoconf + - TRAVIS_TIG=config + +compiler: + - gcc + - clang + +script: tools/travis.sh + +matrix: + include: + - if: branch = master + os: osx + env: + compiler: clang + script: brew install --HEAD tig + - if: branch = master + os: osx + env: + compiler: gcc + script: brew install --HEAD tig diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/INSTALL.adoc new/tig-2.3.2/INSTALL.adoc --- old/tig-2.3.0/INSTALL.adoc 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/INSTALL.adoc 2017-12-18 22:59:21.000000000 +0100 @@ -6,8 +6,8 @@ repository http://github.com/jonas/tig[git://github.com/jonas/tig.git]. The latest version is: -https://github.com/jonas/tig/releases/download/tig-2.3.0/tig-2.3.0.tar.gz[tig-2.3.0] -https://github.com/jonas/tig/releases/download/tig-2.3.0/tig-2.3.0.tar.gz.md5[(md5)] +https://github.com/jonas/tig/releases/download/tig-2.3.2/tig-2.3.2.tar.gz[tig-2.3.2] +https://github.com/jonas/tig/releases/download/tig-2.3.2/tig-2.3.2.tar.gz.md5[(md5)] *Note:* Do not use the tar.gz file for version 2.0 because it will fail to compile due to issue https://github.com/jonas/tig/pull/283[#283] and @@ -85,8 +85,17 @@ $ mv /usr/local/etc/tigrc{,.old} + +Installation using Nix +---------------------- + +You can use link:https://nixos.org/nix/[Nix] to install Tig on NixOS, or any Linux/OSX distribution with Nix installed: + + $ nix-env -i tig + Installation on Windows ----------------------- + To run on Windows, you will need link:https://www.cygwin.com/[cygwin]. You must then install the packages `git`, `gcc-core`, `make`, `libiconv-devel` and `libncurses-devel`. Extract the tarball and install by using `configure` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/INSTALL.html new/tig-2.3.2/INSTALL.html --- old/tig-2.3.0/INSTALL.html 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/INSTALL.html 2017-12-18 22:59:21.000000000 +0100 @@ -1,9 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> -<meta name="generator" content="AsciiDoc 8.6.9" /> +<meta name="generator" content="AsciiDoc 8.6.10" /> <title>Installation instructions</title> <style type="text/css"> /* Shared CSS for AsciiDoc xhtml11 and html5 backends */ @@ -741,8 +742,8 @@ <div class="paragraph"><p>Download a tarball from <a href="https://github.com/jonas/tig/releases">https://github.com/jonas/tig/releases</a> or clone the Tig repository <a href="http://github.com/jonas/tig">git://github.com/jonas/tig.git</a>.</p></div> <div class="paragraph"><p>The latest version is: -<a href="https://github.com/jonas/tig/releases/download/tig-2.3.0/tig-2.3.0.tar.gz">tig-2.3.0</a> -<a href="https://github.com/jonas/tig/releases/download/tig-2.3.0/tig-2.3.0.tar.gz.md5">(md5)</a></p></div> +<a href="https://github.com/jonas/tig/releases/download/tig-2.3.2/tig-2.3.2.tar.gz">tig-2.3.2</a> +<a href="https://github.com/jonas/tig/releases/download/tig-2.3.2/tig-2.3.2.tar.gz.md5">(md5)</a></p></div> <div class="paragraph"><p><strong>Note:</strong> Do not use the tar.gz file for version 2.0 because it will fail to compile due to issue <a href="https://github.com/jonas/tig/pull/283">#283</a> and <a href="https://github.com/jonas/tig/issues/337">#337</a></p></div> @@ -833,6 +834,16 @@ </div> </div> <div class="sect1"> +<h2 id="_installation_using_nix">Installation using Nix</h2> +<div class="sectionbody"> +<div class="paragraph"><p>You can use <a href="https://nixos.org/nix/">Nix</a> to install Tig on NixOS, or any Linux/OSX distribution with Nix installed:</p></div> +<div class="literalblock"> +<div class="content"> +<pre><code>$ nix-env -i tig</code></pre> +</div></div> +</div> +</div> +<div class="sect1"> <h2 id="_installation_on_windows">Installation on Windows</h2> <div class="sectionbody"> <div class="paragraph"><p>To run on Windows, you will need <a href="https://www.cygwin.com/">cygwin</a>. @@ -996,7 +1007,8 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Last updated 2017-09-29 11:15:06 EDT +Last updated + 2017-12-18 16:59:00 EST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/Makefile new/tig-2.3.2/Makefile --- old/tig-2.3.0/Makefile 2017-09-29 17:15:29.000000000 +0200 +++ new/tig-2.3.2/Makefile 2017-12-18 22:59:26.000000000 +0100 @@ -2,7 +2,7 @@ # The last tagged version. Can be overridden either by the version from # git or from the value of the DIST_VERSION environment variable. -VERSION = 2.3.0 +VERSION = 2.3.2 all: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/NEWS.adoc new/tig-2.3.2/NEWS.adoc --- old/tig-2.3.0/NEWS.adoc 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/NEWS.adoc 2017-12-18 22:59:21.000000000 +0100 @@ -1,6 +1,30 @@ Release notes ============= +tig-2.3.2 +--------- + +Bug fixes: + + - Fix busy loop detection to handle large repos. (GH #164) + +tig-2.3.1 +--------- + +Improvements: + + - Restore TTY attributes. (GH #725) + - Handle `\n` like `\r`. (GH #758) + +Bug fixes: + + - Add workaround that detects busy loops when Tig loses the TTY. This may + happen if Tig does not receive the HUP signal (e.g. when started with + `nohup`). (GH #164) + - Fix compatibility with ncurses-5.4 which caused copy-pasting to not work + in the prompt. (GH #767) + - tig(1): document correct environment variable. (GH #752) + tig-2.3.0 --------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/NEWS.html new/tig-2.3.2/NEWS.html --- old/tig-2.3.0/NEWS.html 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/NEWS.html 2017-12-18 22:59:21.000000000 +0100 @@ -1,9 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> -<meta name="generator" content="AsciiDoc 8.6.9" /> +<meta name="generator" content="AsciiDoc 8.6.10" /> <title>Release notes</title> <style type="text/css"> /* Shared CSS for AsciiDoc xhtml11 and html5 backends */ @@ -737,6 +738,58 @@ </div> <div id="content"> <div class="sect1"> +<h2 id="_tig_2_3_2">tig-2.3.2</h2> +<div class="sectionbody"> +<div class="paragraph"><p>Bug fixes:</p></div> +<div class="ulist"><ul> +<li> +<p> +Fix busy loop detection to handle large repos. (GH #164) +</p> +</li> +</ul></div> +</div> +</div> +<div class="sect1"> +<h2 id="_tig_2_3_1">tig-2.3.1</h2> +<div class="sectionbody"> +<div class="paragraph"><p>Improvements:</p></div> +<div class="ulist"><ul> +<li> +<p> +Restore TTY attributes. (GH #725) +</p> +</li> +<li> +<p> +Handle <code>\n</code> like <code>\r</code>. (GH #758) +</p> +</li> +</ul></div> +<div class="paragraph"><p>Bug fixes:</p></div> +<div class="ulist"><ul> +<li> +<p> +Add workaround that detects busy loops when Tig loses the TTY. This may + happen if Tig does not receive the HUP signal (e.g. when started with + <code>nohup</code>). (GH #164) +</p> +</li> +<li> +<p> +Fix compatibility with ncurses-5.4 which caused copy-pasting to not work + in the prompt. (GH #767) +</p> +</li> +<li> +<p> +tig(1): document correct environment variable. (GH #752) +</p> +</li> +</ul></div> +</div> +</div> +<div class="sect1"> <h2 id="_tig_2_3_0">tig-2.3.0</h2> <div class="sectionbody"> <div class="paragraph"><p>Incompatibilities:</p></div> @@ -3821,7 +3874,8 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Last updated 2017-09-29 11:15:06 EDT +Last updated + 2017-12-18 16:59:00 EST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/aclocal.m4 new/tig-2.3.2/aclocal.m4 --- old/tig-2.3.0/aclocal.m4 2017-09-29 17:15:29.000000000 +0200 +++ new/tig-2.3.2/aclocal.m4 2017-12-18 22:59:26.000000000 +0100 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.15 -*- Autoconf -*- +# generated automatically by aclocal 1.15.1 -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -12,9 +12,9 @@ # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -dnl serial 11 (pkg-config-0.29.1) -dnl +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 12 (pkg-config-0.29.2) + dnl Copyright © 2004 Scott James Remnant <[email protected]>. dnl Copyright © 2012-2015 Dan Nicholson <[email protected]> dnl @@ -55,7 +55,7 @@ dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], -[m4_define([PKG_MACROS_VERSION], [0.29.1]) +[m4_define([PKG_MACROS_VERSION], [0.29.2]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ @@ -156,7 +156,7 @@ AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no -AC_MSG_CHECKING([for $1]) +AC_MSG_CHECKING([for $2]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) @@ -166,11 +166,11 @@ See the pkg-config man page for more details.]) if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) + AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else + else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs @@ -187,7 +187,7 @@ _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) + AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full @@ -290,7 +290,7 @@ # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -321,7 +321,7 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/doc/manual.html new/tig-2.3.2/doc/manual.html --- old/tig-2.3.0/doc/manual.html 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/doc/manual.html 2017-12-18 22:59:21.000000000 +0100 @@ -1,9 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> -<meta name="generator" content="AsciiDoc 8.6.9" /> +<meta name="generator" content="AsciiDoc 8.6.10" /> <title>The Tig Manual</title> <style type="text/css"> /* Shared CSS for AsciiDoc xhtml11 and html5 backends */ @@ -2064,7 +2065,8 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Last updated 2017-09-29 11:15:06 EDT +Last updated + 2017-12-13 22:16:50 EST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/doc/tig.1 new/tig-2.3.2/doc/tig.1 --- old/tig-2.3.0/doc/tig.1 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/doc/tig.1 2017-12-18 22:59:21.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: tig .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.0 <http://docbook.sf.net/> -.\" Date: 09/29/2017 +.\" Date: 12/18/2017 .\" Manual: Tig Manual -.\" Source: Tig 2.3.0 +.\" Source: Tig 2.3.2 .\" Language: English .\" -.TH "TIG" "1" "09/29/2017" "Tig 2\&.3\&.0" "Tig Manual" +.TH "TIG" "1" "12/18/2017" "Tig 2\&.3\&.2" "Tig Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -428,7 +428,7 @@ $XDG_DATA_HOME/tig/ exists, store history to $XDG_DATA_HOME/tig/history\&. If -$XDG_CONFIG_HOME +$XDG_DATA_HOME is empty or undefined, store history to ~/\&.local/share/tig/history if the directory diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/doc/tig.1.adoc new/tig-2.3.2/doc/tig.1.adoc --- old/tig-2.3.0/doc/tig.1.adoc 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/doc/tig.1.adoc 2017-12-18 22:59:21.000000000 +0100 @@ -249,7 +249,7 @@ search history. The location of the history file is determined in the following way. If `$XDG_DATA_HOME` is set and `$XDG_DATA_HOME/tig/` exists, store history to `$XDG_DATA_HOME/tig/history`. If - `$XDG_CONFIG_HOME` is empty or undefined, store history to + `$XDG_DATA_HOME` is empty or undefined, store history to `~/.local/share/tig/history` if the directory `~/.local/share/tig/` exists, and fall back to `~/.tig_history` if it does not exist. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/doc/tig.1.html new/tig-2.3.2/doc/tig.1.html --- old/tig-2.3.0/doc/tig.1.html 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/doc/tig.1.html 2017-12-18 22:59:21.000000000 +0100 @@ -1,9 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> -<meta name="generator" content="AsciiDoc 8.6.9" /> +<meta name="generator" content="AsciiDoc 8.6.10" /> <title>tig(1)</title> <style type="text/css"> /* Shared CSS for AsciiDoc xhtml11 and html5 backends */ @@ -1124,7 +1125,7 @@ search history. The location of the history file is determined in the following way. If <code>$XDG_DATA_HOME</code> is set and <code>$XDG_DATA_HOME/tig/</code> exists, store history to <code>$XDG_DATA_HOME/tig/history</code>. If - <code>$XDG_CONFIG_HOME</code> is empty or undefined, store history to + <code>$XDG_DATA_HOME</code> is empty or undefined, store history to <code>~/.local/share/tig/history</code> if the directory <code>~/.local/share/tig/</code> exists, and fall back to <code>~/.tig_history</code> if it does not exist. </p> @@ -1162,7 +1163,8 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Last updated 2017-09-29 11:15:06 EDT +Last updated + 2017-12-14 21:14:51 EST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/doc/tigmanual.7 new/tig-2.3.2/doc/tigmanual.7 --- old/tig-2.3.0/doc/tigmanual.7 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/doc/tigmanual.7 2017-12-18 22:59:21.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: tigmanual .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.0 <http://docbook.sf.net/> -.\" Date: 09/29/2017 +.\" Date: 12/18/2017 .\" Manual: Tig Manual -.\" Source: Tig 2.3.0 +.\" Source: Tig 2.3.2 .\" Language: English .\" -.TH "TIGMANUAL" "7" "09/29/2017" "Tig 2\&.3\&.0" "Tig Manual" +.TH "TIGMANUAL" "7" "12/18/2017" "Tig 2\&.3\&.2" "Tig Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/doc/tigrc.5 new/tig-2.3.2/doc/tigrc.5 --- old/tig-2.3.0/doc/tigrc.5 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/doc/tigrc.5 2017-12-18 22:59:21.000000000 +0100 @@ -2,12 +2,12 @@ .\" Title: tigrc .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.0 <http://docbook.sf.net/> -.\" Date: 09/29/2017 +.\" Date: 12/18/2017 .\" Manual: Tig Manual -.\" Source: Tig 2.3.0 +.\" Source: Tig 2.3.2 .\" Language: English .\" -.TH "TIGRC" "5" "09/29/2017" "Tig 2\&.3\&.0" "Tig Manual" +.TH "TIGRC" "5" "12/18/2017" "Tig 2\&.3\&.2" "Tig Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/doc/tigrc.5.html new/tig-2.3.2/doc/tigrc.5.html --- old/tig-2.3.0/doc/tigrc.5.html 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/doc/tigrc.5.html 2017-12-18 22:59:21.000000000 +0100 @@ -1,9 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> -<meta name="generator" content="AsciiDoc 8.6.9" /> +<meta name="generator" content="AsciiDoc 8.6.10" /> <title>tigrc(5)</title> <style type="text/css"> /* Shared CSS for AsciiDoc xhtml11 and html5 backends */ @@ -2780,7 +2781,8 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Last updated 2017-09-29 11:15:06 EDT +Last updated + 2017-12-13 22:20:42 EST </div> </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/include/tig/tig.h new/tig-2.3.2/include/tig/tig.h --- old/tig-2.3.0/include/tig/tig.h 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/include/tig/tig.h 2017-12-18 22:59:21.000000000 +0100 @@ -53,6 +53,7 @@ #include <sys/file.h> #include <time.h> #include <fcntl.h> +#include <termios.h> #include <regex.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/src/display.c new/tig-2.3.2/src/display.c --- old/tig-2.3.0/src/display.c 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/src/display.c 2017-12-18 22:59:21.000000000 +0100 @@ -30,7 +30,12 @@ static WINDOW *display_title[2]; static WINDOW *display_sep; -static FILE *opt_tty; +struct display_tty { + FILE *file; + int fd; + struct termios *attr; +}; +static struct display_tty opt_tty = { NULL, -1, NULL }; static struct io script_io = { -1 }; @@ -78,14 +83,16 @@ clear(); refresh(); endwin(); /* restore original tty modes */ + tcsetattr(opt_tty.fd, TCSAFLUSH, opt_tty.attr); ok = io_run_fg(argv, dir); if (confirm || !ok) { if (!ok && *notice) fprintf(stderr, "%s", notice); fprintf(stderr, "Press Enter to continue"); - getc(opt_tty); - fseek(opt_tty, 0, SEEK_END); + getc(opt_tty.file); } + fseek(opt_tty.file, 0, SEEK_END); + tcsetattr(opt_tty.fd, TCSAFLUSH, opt_tty.attr); set_terminal_modes(); } @@ -554,6 +561,12 @@ endwin(); } cursed = false; + + if (opt_tty.attr) { + tcsetattr(opt_tty.fd, TCSAFLUSH, opt_tty.attr); + free(opt_tty.attr); + opt_tty.attr = NULL; + } } static void @@ -566,6 +579,22 @@ leaveok(stdscr, false); } +static void +init_tty(void) +{ + /* open */ + opt_tty.file = fopen("/dev/tty", "r+"); + if (!opt_tty.file) + die("Failed to open tty for input"); + opt_tty.fd = fileno(opt_tty.file); + + /* attributes */ + opt_tty.attr = calloc(1, sizeof(struct termios)); + if (!opt_tty.attr) + die("Failed allocation for tty attributes"); + tcgetattr(opt_tty.fd, opt_tty.attr); +} + void init_display(void) { @@ -573,21 +602,24 @@ const char *term; int x, y; + init_tty(); + die_callback = done_display; - /* XXX: Restore tty modes and let the OS cleanup the rest! */ if (atexit(done_display)) die("Failed to register done_display"); /* Initialize the curses library */ - { + if (!no_display && isatty(STDIN_FILENO)) { + /* Needed for ncurses 5.4 compatibility. */ + cursed = !!initscr(); + } else { /* Leave stdin and stdout alone when acting as a pager. */ FILE *out_tty; - opt_tty = fopen("/dev/tty", "r+"); - out_tty = no_display ? fopen("/dev/null", "w+") : opt_tty; - if (!opt_tty || !out_tty) - die("Failed to open /dev/tty"); - cursed = !!newterm(NULL, out_tty, opt_tty); + out_tty = no_display ? fopen("/dev/null", "w+") : opt_tty.file; + if (!out_tty) + die("Failed to open tty for output"); + cursed = !!newterm(NULL, out_tty, opt_tty.file); } if (!cursed) @@ -693,7 +725,61 @@ return key.data.bytes[bytes_pos++]; } - return getc(opt_tty); + return getc(opt_tty.file); +} + +static bool +update_views(void) +{ + struct view *view; + int i; + bool is_loading = false; + + foreach_view (view, i) { + update_view(view); + if (view_is_displayed(view) && view->has_scrolled && + use_scroll_redrawwin) + redrawwin(view->win); + view->has_scrolled = false; + if (view->pipe) + is_loading = true; + } + + return is_loading; +} + +/* + * Under normal circumstanecs this will do nothing, however, if the TTY + * is "corrupted" such as when running `nohup tig` and closing the + * terminal, then this will detect if the event loop starts doing a busy + * loop. + * + * This is a hack, and ideally it would be better to detect if the TTY + * is no longer in a good state, howver, testing suggest that the TTY fd + * is valid and ncurses does not seem to expose a way to check validity. + */ +static void +detect_busy_loop(int loops_per_check, int max_loops_per_second) +{ + static size_t busy_loops = 0; + static time_t busy_loop_time = 0; + + busy_loops++; + + if ((busy_loops % loops_per_check) == 0) { + time_t now = time(NULL); + time_t diff = now - busy_loop_time; + + if (diff > 0) { + size_t loops_per_second = busy_loops / diff; + + if (loops_per_second > max_loops_per_second) + die("Busy loop detected"); + + busy_loops = 0; + busy_loop_time = now; + } + } } int @@ -711,8 +797,10 @@ int delay = -1; if (opt_refresh_mode == REFRESH_MODE_PERIODIC) { - delay = watch_periodic(opt_refresh_interval); bool refs_refreshed = false; + + delay = watch_periodic(opt_refresh_interval); + foreach_displayed_view (view, i) { if (view_can_refresh(view) && watch_dirty(&view->watch)) { @@ -725,15 +813,8 @@ } } - foreach_view (view, i) { - update_view(view); - if (view_is_displayed(view) && view->has_scrolled && - use_scroll_redrawwin) - redrawwin(view->win); - view->has_scrolled = false; - if (view->pipe) - delay = 0; - } + if (update_views()) + delay = 0; /* Update the cursor position. */ if (prompt_position) { @@ -763,6 +844,9 @@ /* wgetch() with nodelay() enabled returns ERR when * there's no input. */ if (key_value == ERR) { + // Only check busy loop if no views are updating. + if (delay != 0) + detect_busy_loop(1000, 5000); } else if (key_value == KEY_RESIZE) { int height, width; @@ -784,6 +868,9 @@ input_mode = false; if (key_value == erasechar()) key_value = KEY_BACKSPACE; + /* Handle \n just like \r */ + else if (key_value == '\n') + key_value = KEY_RETURN; /* * Ctrl-<key> values are represented using a 0x1F diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/test/README.adoc new/tig-2.3.2/test/README.adoc --- old/tig-2.3.0/test/README.adoc 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/test/README.adoc 2017-12-18 22:59:21.000000000 +0100 @@ -35,6 +35,23 @@ program is specified it is auto-detected. Remember to recompile using `make clean all-debug` to expose all symbols. +filter=<file-glob>:<case-glob>:: + + Only run test files or cases matching a shell-style glob filter. A + colon separates the file glob from the case glob. No colon, or + trailing colon, is equivalent to trailing `:*` (all cases). Leading + colon is equivalent to leading `*:` (all files). The file portion + is matched against a path fragment from the project root. + Example: +-------------------------------------------------------------------------------- + $ TEST_OPTS='filter=*:*default' make test/tigrc/width-test +-------------------------------------------------------------------------------- + :: + This option is a convenience for development against specific tests. + Test files and test cases are filtered, but not assertions. Thus some + assertions are expected to fail in the presence of a filter. Testing + output originating from `make` is also not filtered. + trace:: Show trace information. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/test/main/refresh-periodic-test new/tig-2.3.2/test/main/refresh-periodic-test --- old/tig-2.3.0/test/main/refresh-periodic-test 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/test/main/refresh-periodic-test 2017-12-18 22:59:21.000000000 +0100 @@ -36,6 +36,8 @@ export GIT_AUTHOR_DATE="$(expr "$author_date" + "$author_date_delta")" export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE" +test_timeout 30 + test_tig assert_equals 'main-with-unstaged.screen' <<EOF diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/test/tools/libtest.sh new/tig-2.3.2/test/tools/libtest.sh --- old/tig-2.3.0/test/tools/libtest.sh 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/test/tools/libtest.sh 2017-12-18 22:59:21.000000000 +0100 @@ -17,8 +17,9 @@ set -eu if [ -n "${BASH_VERSION:-}" ]; then set -o pipefail - IFS=$'\n\t' fi +IFS=' + ' test="$(basename -- "$0")" source_dir="$(cd "$(dirname -- "$0")" >/dev/null && pwd)" @@ -28,6 +29,7 @@ tmp_dir="$base_dir/tmp" output_dir="$tmp_dir/$prefix_dir/$test" work_dir="work dir" +tty_attrs="$(stty -g </dev/tty)" # The locale must specify UTF-8 for Ncurses to output correctly. Since C.UTF-8 # does not exist on Mac OS X, we end up with en_US as the only sane choice. @@ -127,6 +129,13 @@ exit 1 } +tty_reset() +{ + if [ -n "$tty_attrs" ]; then + ( trap '' TTOU; trap '' TTIN; stty "$tty_attrs" </dev/tty ) || true; + fi +} + file() { path="$1"; shift @@ -191,6 +200,33 @@ die "Failed to detect a supported debugger" } +format_filter() +{ + test -z "$filter" && return + + case "$filter" in + :*) filter="*$filter";; + esac + case "$filter" in + *:) filter="$filter*";; + esac + if [ "$filter" = "*:*" ]; then + filter='' + fi +} + +filter_file_ok() +{ + test -z "$filter" && return 0 + + matcher="$0" + _filter_filename_part="${filter%:*}" + case "$matcher" in + $_filter_filename_part) return 0;; + *) return 1;; + esac +} + # # Parse TEST_OPTS # @@ -205,6 +241,7 @@ trace= todos= valgrind= +filter= timeout=10 vlg_timeout_bonus=60 @@ -223,12 +260,15 @@ trace) trace=yes ;; todo|todos) todos=yes ;; valgrind) valgrind="$HOME/valgrind.log" ;; + filter=*) filter="$(expr "$arg" : 'filter=\(.*\)')" && format_filter;; *) die "unknown TEST_OPTS element '$arg'" ;; esac done IFS="$ORIG_IFS" ORIG_IFS= +filter_file_ok || exit 0 # silently exit caller who sourced this file + # # Test runners and assertion checking. # @@ -251,7 +291,7 @@ file "expected/$file" if [ -e "$file" ]; then - git diff --no-index $diff_color_arg $whitespace_arg -- "expected/$file" "$file" > "$file.diff" || true + ( IFS=' '; git diff --no-index $diff_color_arg $whitespace_arg -- "expected/$file" "$file" > "$file.diff" || true ) if [ -s "$file.diff" ]; then printf '[FAIL] %s != expected/%s\n' "$file" "$file" >> .test-result if [ -n "$*" ]; then @@ -362,7 +402,7 @@ fi | sed "s/^/$indent| /" } -trap 'show_test_results' EXIT +trap "tty_reset; show_test_results" EXIT test_skip() { @@ -487,7 +527,17 @@ test "$pid" -gt 0 || return test "$pid" != "$$" || return trap '' "$signal" - sleep "$timeout" && kill -0 "$pid" >/dev/null 2>&1 && kill -"$signal" "$pid" >/dev/null 2>&1 || true & + ( + trap '' "$signal" + count=0 + granularity=1 + while [ "$count" -lt "$timeout" ]; do + count="$((count + granularity))" + sleep "$granularity" + kill -0 "$pid" || break + done + kill -0 "$pid" && kill -"$signal" "$pid" || true + ) >/dev/null 2>&1 & } valgrind_exec() @@ -534,6 +584,7 @@ ( # subshell handles cleanup of cwd, variables, redirections, set +e cd "$work_dir" || die "chdir failed" + tty_reset if [ -n "$debugger" ]; then printf "*** Running tests in '%s/%s'\n" "$HOME" "$work_dir" if [ -s "$HOME/${prefix}stdin" ]; then @@ -565,6 +616,7 @@ wait "$tig_pid" fi status_code="$?" + tty_reset if [ "$status_code" -eq "$(( 256 + signal))" ] || [ "$status_code" -eq "$(( 128 + signal))" ]; then printf '[FAIL] Test timed out after %s seconds\n' "$timeout" >> "$HOME/.test-result" elif [ "$status_code" != "$expected_status_code" ]; then @@ -628,6 +680,20 @@ fi test_setup while read -r name <&3; do + if [ -n "$filter" ]; then + matcher="$name" + _filter_case_part="${filter#*:}" + if [ "$filter" != "$_filter_case_part" ]; then + case "$matcher" in + $_filter_case_part) true;; + *) continue;; + esac + fi + fi + if [ "${V:-}" = '@' ]; then + # align with output from make, based on $V which is inherited from make + printf ' CASE %s\n' "$0:$name" + fi if [ -s "$name-todo" ] && [ -z "$todos" ]; then printf '%s[skipped] ' "$indent" test_todo_message "$(cat < "$name-todo")" @@ -654,7 +720,7 @@ if [ -s "$name-timeout" ]; then timeout="$(cat < "$name-timeout")" fi - IFS=' ' + IFS=' ' test_tig $(if [ -e "$name-args" ]; then cat < "$name-args"; fi) ) if [ -e "$name-after" ]; then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/tig.spec new/tig-2.3.2/tig.spec --- old/tig-2.3.0/tig.spec 2017-09-29 17:15:29.000000000 +0200 +++ new/tig-2.3.2/tig.spec 2017-12-18 22:59:26.000000000 +0100 @@ -3,7 +3,7 @@ Summary: Tig: text-mode interface for git Name: tig -Version: 2.3.0 +Version: 2.3.2 Release: 0%{?dist} License: GPL Group: Development/Tools diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/tools/aspell.dict new/tig-2.3.2/tools/aspell.dict --- old/tig-2.3.0/tools/aspell.dict 2017-09-29 17:15:26.000000000 +0200 +++ new/tig-2.3.2/tools/aspell.dict 2017-12-18 22:59:21.000000000 +0100 @@ -1,4 +1,4 @@ -personal_ws-1.1 en 286 +personal_ws-1.1 en 294 CJK del goto @@ -58,6 +58,7 @@ LessThan env lrwxrwxrwx +iTerm backend Esc doctype @@ -94,6 +95,7 @@ cacheinfo enum PgDown +wcwidth libexecdir bool diffstat @@ -145,6 +147,7 @@ autobuild reflog diffargs +Midline erasechar lds bg @@ -231,6 +234,7 @@ startup Yi docext +LDFLAGS ShiftHome renderer strftime @@ -249,13 +253,16 @@ fgcolor backtraces ScrFwd +nohup localtime filename AIX pbcopy lncursesw Geany +concat waitpid +NixOS wgetch OSX Pre @@ -269,6 +276,7 @@ struct untracked commit's +inputrc sed autoreconf ScrBack diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tig-2.3.0/tools/travis.sh new/tig-2.3.2/tools/travis.sh --- old/tig-2.3.0/tools/travis.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/tig-2.3.2/tools/travis.sh 2017-12-18 22:59:21.000000000 +0100 @@ -0,0 +1,32 @@ +#!/bin/bash + +build_config () { + cp contrib/config.make . + make all-debug + make update-docs && git diff --exit-code + make test + make test TEST_OPTS=valgrind + if [ $CC = clang ]; then make test-address-sanitizer; fi + make DESTDIR=/tmp/bare-destdir install install-doc + make DESTDIR=/tmp/bare-destdir uninstall + test ! -d /tmp/bare-destdir + make prefix=/tmp/bare-prefix install install-doc + make prefix=/tmp/bare-prefix uninstall + test ! -d /tmp/bare-prefix + make distclean +} + +build_autoconf () { + make dist + ./configure --prefix=/tmp/conf-prefix + make V=1 TEST_SHELL=bash all test install install-doc + make uninstall + test ! -d /tmp/conf-prefix + make clean +} + +if [[ $TRAVIS_TIG = config ]]; then + build_config +elif [[ $TRAVIS_TIG = autoconf ]]; then + build_autoconf +fi
