# precise enough control over formats and colors.
#
# tig = log --pretty=oneline --graph --all --decorate --abbrev-commit
- tig = ! TIG | less
+ tig = ! TIG
# Create backup of uncommitted and untracked changes.
ssb = "! git stash save --include-untracked \
my @cmd = ('git', 'log', '--all', '--graph', "--format=$format");
open my $fh, '-|', @cmd or die $!;
+my $pager = $ENV{PAGER};
+# Try to find an usable pager without searching $PATH.
+if (not defined $pager) {
+ foreach my $path (qw(/usr/bin/less /bin/less /usr/bin/more /bin/more)) {
+ next if not -x $path;
+
+ $pager = $path;
+ last;
+ }
+}
+# Use a pager if STDOUT is a terminal.
+if (-t STDOUT and defined $pager) {
+ open STDOUT, '|-', $pager or die $!;
+}
+
while (my $line = <$fh>) {
# History graph line.
if ($line =~ m{^([|/\\_ ]+)$}) {
}
close $fh or die $!;
+
+# Necessary for the redirection to a pager or the pager terminates after our
+# script finishes without displaying all data.
+if (defined $pager) {
+ close STDOUT or die $!;
+}