diff options
author | Karl Berry <karl@freefriends.org> | 2013-06-27 16:44:39 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-06-27 16:44:39 +0000 |
commit | d1e85bfb2d9a06c0d47bdb12cc9d3e53f4f4b7a2 (patch) | |
tree | 09d2f136eac81eb32bff92064569c1c4caf623c5 | |
parent | 5d0a78fa69eddaec28febee79e47b450d57ada3f (diff) |
new script latex-git-log (16jun13)
git-svn-id: svn://tug.org/texlive/trunk@30983 c570f23f-e606-0410-a88d-b1316a301751
37 files changed, 1284 insertions, 62 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/Makefile.am b/Build/source/texk/texlive/linked_scripts/Makefile.am index 0a289551ac1..91fb4168680 100644 --- a/Build/source/texk/texlive/linked_scripts/Makefile.am +++ b/Build/source/texk/texlive/linked_scripts/Makefile.am @@ -106,6 +106,7 @@ texmf_other_scripts = \ jfontmaps/kanji-fontmap-creator.pl \ jfontmaps/kanji-config-updmap.pl \ jfontmaps/kanji-config-updmap-sys.sh \ + latex-git-log/latex-git-log \ latex2man/latex2man \ latexdiff/latexdiff.pl \ latexdiff/latexdiff-vc.pl \ diff --git a/Build/source/texk/texlive/linked_scripts/Makefile.in b/Build/source/texk/texlive/linked_scripts/Makefile.in index 79e181bd1b1..8d350554355 100644 --- a/Build/source/texk/texlive/linked_scripts/Makefile.in +++ b/Build/source/texk/texlive/linked_scripts/Makefile.in @@ -311,6 +311,7 @@ texmf_other_scripts = \ jfontmaps/kanji-fontmap-creator.pl \ jfontmaps/kanji-config-updmap.pl \ jfontmaps/kanji-config-updmap-sys.sh \ + latex-git-log/latex-git-log \ latex2man/latex2man \ latexdiff/latexdiff.pl \ latexdiff/latexdiff-vc.pl \ diff --git a/Build/source/texk/texlive/linked_scripts/glossaries/makeglossaries b/Build/source/texk/texlive/linked_scripts/glossaries/makeglossaries index 07ce68bd8d1..811848b5437 100755 --- a/Build/source/texk/texlive/linked_scripts/glossaries/makeglossaries +++ b/Build/source/texk/texlive/linked_scripts/glossaries/makeglossaries @@ -2,7 +2,7 @@ # File : makeglossaries # Author : Nicola Talbot -# Version : 2.06 (2013/04/21) +# Version : 2.07 (2013/06/17) # Description: simple Perl script that calls makeindex or xindy. # Intended for use with "glossaries.sty" (saves having to remember # all the various switches) @@ -27,9 +27,12 @@ # glossary-super.sty, glossaries.perl. # Also makeglossaries and makeglossaries. -my $version="2.06 (2013-04-21)"; +my $version="2.07 (2013-06-17)"; # History: +# v2.07 (2013-06-17): +# * added check for success on chdir if -d used +# * added dialect map # v2.06 (2013-04-21): # * added "din5007" as default if language is set to "german" # v2.05 (2012-11-12): @@ -102,8 +105,43 @@ unless ($#ARGV == 0) # v2.02: added: print "makeglossaries version $version\n" unless ($opt_q); +# v2.07: added babel dialect -> xindy language map: +my %languagemap = +( + 'american' => 'english', + 'austrian' => 'german', + 'british' => 'english', + 'francais' => 'french', + 'frenchb' => 'french', + 'germanb' => 'german', + 'lsorbian' => 'lower-sorbian', + 'magyar' => 'hungarian', + 'naustrian' => 'german', + 'ngermanb' => 'german', + 'norsk' => 'norwegian', + 'portuges' => 'portuguese', + 'russianb' => 'russian', + 'slovene' => 'slovenian', + 'UKenglish' => 'english', + 'USenglish' => 'english', + 'ukraineb' => 'ukrainian', + 'usorbian' => 'upper-sorbian' +); + +# v2.07 added check for success and for -q # v2.05 added: -chdir $opt_d if ($opt_d); + +if ($opt_d) +{ + if (chdir $opt_d) + { + print "Changed to '$opt_d'\n" unless ($opt_q); + } + else + { + die "Unable to chdir to '$opt_d' $!\n"; + } +} # v2.02: added: my $xdynotist = 1; @@ -666,61 +704,12 @@ sub xindy{ $module = $ist; $module=~s/\.xdy\Z//; - unless (defined($language)) + if ($language) { - $language = ''; - } + # map babel names to xindy names - # map babel names to xindy names - if ($language eq "frenchb") - { - $language = "french"; - } - elsif ($language=~/^n?germanb?$/) - { - $language = "german"; + $language = $languagemap{$language} if ($languagemap{$language}); - # v2.06 added: - if ($codepage and not $codepage=~/(din|duden)/) - { - $codepage = "din5007-$codepage"; - } - } - elsif ($language eq "magyar") - { - $language = "hungarian"; - } - elsif ($language eq "lsorbian") - { - $language = "lower-sorbian"; - } - elsif ($language eq "norsk") - { - $language = "norwegian"; - } - elsif ($language eq "portuges") - { - $language = "portuguese"; - } - elsif ($language eq "russianb") - { - $language = "russian"; - } - elsif ($language eq "slovene") - { - $language = "slovenian"; - } - elsif ($language eq "ukraineb") - { - $language = "ukrainian"; - } - elsif ($language eq "usorbian") - { - $language = "upper-sorbian"; - } - - if ($language) - { $langparam = "-L $language"; } else diff --git a/Build/source/texk/texlive/linked_scripts/latex-git-log/latex-git-log b/Build/source/texk/texlive/linked_scripts/latex-git-log/latex-git-log new file mode 100755 index 00000000000..e074d05a5ce --- /dev/null +++ b/Build/source/texk/texlive/linked_scripts/latex-git-log/latex-git-log @@ -0,0 +1,362 @@ +#!/usr/bin/env perl +# @author Robin Schneider <ypid23@aol.de> +# @licence GPLv3+ <http://www.gnu.org/licenses/gpl.html> + +# Modules and pragmas {{{ +use strict; +use warnings; +use autodie; +use feature qw(say); +use utf8; +use open qw(:std :utf8); +binmode STDOUT, ':encoding(UTF-8)'; +use IPC::System::Simple qw(capturex); +use Getopt::Long; +use Pod::Usage; + +# Get the path where this script is located {{{ +my $dirpath; + +BEGIN { + use File::Basename qw(fileparse); + use Cwd qw(abs_path); + $dirpath = ( fileparse( abs_path($0) ) )[1]; +} +# }}} +use Locale::Maketext::Simple ( + Path => $dirpath . 'po/', + Decode => 1, +); +# }}} + +# Optional parameters {{{ +my $print_author = 0; +my $commit_count = 1; +my $width = 0; +my $lang = undef; +my $version = 0; +my $help = 0; +my $man = 0; +my ( $git_user, $git_repo, $git_commit_address ); +GetOptions( + 'author' => \$print_author, + 'startcommit=s' => \$commit_count, + 'width=s' => \$width, + 'git-c-add=s' => \$git_commit_address, + 'user=s' => \$git_user, + 'repo=s' => \$git_repo, + 'lang=s' => \$lang, + 'version' => \$version, + 'help|?' => \$help, + 'man' => \$man, +); +pod2usage(1) if $help; +pod2usage( -verbose => 2, -exitstatus => 0, ) if $man; +pod2usage( -verbose => 99, -sections => 'Version' ) if $version; +my $git_remote = ( split /\n/xms, capturex(qw(git remote -v)) )[0]; + +loc_lang($lang) if ( defined $lang ); +if ( not defined $git_user + and not defined $git_repo + and defined $git_remote + and $git_remote =~ m#\s.*?:(?<user>\w+?)/(?<repo>.*?)\.git\ \(fetch\)\Z#xms ) +{ + $git_user = $+{user}; + $git_repo = $+{repo}; +} +say '%% This file was generated by the script latex-git-log'; +my $git_command_commit_msg = '%s'; +if ( defined $git_user and defined $git_repo ) { + unless ( defined $git_commit_address ) { + $git_commit_address = "https://github.com/$+{user}/$+{repo}/commit"; + } + $git_command_commit_msg = '%H & %s'; + say '%% Base git commit URL: ' . $git_commit_address; +} +if ($width) { + $width = "p{${width}cm}"; +} +else { + $width = 'l'; +} +# }}} + +# LaTeX template {{{ +say '\begin{tabular}{lp{12cm}} + \label{tabular:legend:git-log} + \textbf{' . loc('acronym') . '} & \textbf{' . loc('meaning') . '} \\\\ + V & \texttt{' . loc('version') . '} \\\\ + ' . loc('tag') . ' & ' . loc('\texttt{git tag}') . ' \\\\ + ' . loc('MF') . ' & ' . loc('Number of \texttt{modified files}.') . ' \\\\ + ' . loc('AL') . ' & ' . loc('Number of \texttt{added lines}.') . ' \\\\ + ' . loc('DL') . ' & ' . loc('Number of \texttt{deleted lines}.') . ' \\\\ +\end{tabular} + +\bigskip + +\iflanguage{ngerman}{\shorthandoff{"}}{}'; + +if ($print_author) { + say "\\begin{longtable}{|rllllrrr|}"; +} +else { + say "\\begin{longtable}{|rll${width}rrr|}"; +} +say '\hline \multicolumn{1}{|c}{\textbf{' . loc('V') . '}} & \multicolumn{1}{c}{\textbf{' . loc('tag') . '}}'; +say '& \multicolumn{1}{c}{\textbf{' . loc('author') . '}}' if $print_author; +say '& \multicolumn{1}{c}{\textbf{' . loc('date') . '}} +& \multicolumn{1}{c}{\textbf{' . loc('commit message') . '}} & \multicolumn{1}{c}{\textbf{' . loc('MF') . '}} +& \multicolumn{1}{c}{\textbf{' . loc('AL') . '}} & \multicolumn{1}{c|}{\textbf{' . loc('DL') . '}} \\\\ \hline +\endhead +'; +if ($print_author) { + say '\hline \multicolumn{8}{|r|}{\longtableendfoot} \\\\ \hline'; +} +else { + say '\hline \multicolumn{7}{|r|}{\longtableendfoot} \\\\ \hline'; +} +say '\endfoot + +\hline% \hline +\endlastfoot +'; +# }}} + +# Get version history from git log {{{ +# git log --pretty=format:'%ai' +# git log --date=short --pretty=format:'%ad' +my @lines; +my @git_command = qw(git log --date=short --shortstat); +if ($print_author) { + push( @git_command, qq(--pretty=format:%H & %an NoTinAuthorFiled& %ad & $git_command_commit_msg) ); +} +else { + push( @git_command, qq(--pretty=format:%H %ad & $git_command_commit_msg) ); +} +@lines = reverse capturex(@git_command); +# }}} + +# Get tags {{{ +my @tags_commits = capturex( 'git', 'for-each-ref', '--format=%(refname:short) %(objectname)', 'refs/tags' ); +my %commit_tags; # The key will be a SHA1 commit hash and the value a comma separated list of all tags. +for (@tags_commits) { + my ( $tag, $c_hash ) = split /\s/xms, $_; + chomp($c_hash); + if ( defined $commit_tags{$c_hash} ) { + $commit_tags{$c_hash} .= ", $tag"; + } + else { + $commit_tags{$c_hash} = $tag; + } +} +# }}} + +# Helper function {{{ +sub latex_escape { + # Source: http://ommammatips.blogspot.de/2011/01/perl-function-for-latex-escape.html + my $paragraph = shift; + + # Replace a \ with $\backslash$ + # This is made more complicated because the dollars will be escaped + # by the subsequent replacement. Easiest to add \backslash + # now and then add the dollars + $paragraph =~ s/\\/\\backslash/g; + + # Must be done after escape of \ since this command adds latex escapes + # Replace characters that can be escaped + $paragraph =~ s/([\$\#&%_{}])/\\$1/g; + + # Replace ^ characters with \^{} so that $^F works okay + $paragraph =~ s/(\^)/\\$1\{\}/g; + + # Replace tilde (~) with \texttt{\~{}} + # $paragraph =~ s/~/\\texttt\{\\~\{\}\}/g; + $paragraph =~ s/~/\\~\{\}/g; + + # Now add the dollars around each \backslash + $paragraph =~ s/(\\backslash)/\$$1\$/g; + return $paragraph; +} ## end sub latex_escape +# }}} + +# Loop over all commits {{{ +my $which_line = 0; +my @changes; +for (@lines) { + next if /\A\Z/xms; + chomp; + if ($which_line) { + s/\A([0-9a-f]{40})\s//xms or die "Did not match the commit hash\n"; + my $tags = exists $commit_tags{$1} ? $commit_tags{$1} : q(); + my $date_author = ''; + my $c_msg; + if ($print_author) { + /(?:& )(.*?)NoTinAuthorFiled(& .*? &) (.*)/; + $date_author = latex_escape($1) . $2; + $c_msg = $3; + } + else { + /(.*? &) (.*)/; + $date_author = $1; + $c_msg = $2; + } + if ( defined $git_user and defined $git_repo ) { + $c_msg =~ /(.*?) & (.*)/; + $c_msg = sprintf '\\href{%s/%s}{%s}', $git_commit_address, $1, latex_escape($2); + } + else { + $c_msg = latex_escape($c_msg); + } + say "\\hline $commit_count & $tags & $date_author $c_msg & " . join( ' & ', @changes ) . ' \\\\'; + $commit_count++; + } ## end if ($which_line) + else { + @changes = ( 0, 0, 0 ); + /(\d+) files? changed/ and $changes[0] = $1; + /(\d+) insertions?/ and $changes[1] = $1; + /(\d+) deletions?/ and $changes[2] = $1; + } + $which_line ^= 1; ## toggle bit +} ## end for (@lines) +say '\end{longtable}'; +# }}} + +__END__ +# Documentation {{{ + +=head1 NAME + +latex-git-log - Generates the version history of a git project as LaTeX source code. + +=head1 SYNOPSIS + +latex-git-log [options] + +Options: + + --author set this if you want the author included + --startcommit set the start value of count commit + --width set the width in cm of the commit message field in the LaTeX table + --git-c-add set an base URL to link to a commit + --user set a github user to derive the base URL + --repo set a github repository to derive the base URL + --lang language of the legend and all strings in the output + --version, -v print version of this script + --help brief help message + --man full documentation + +=head1 OPTIONS + +=over 8 + +=item B<--width> + +Set the width in cm of the commit message field in the LaTeX table. If this +parameter is not set then the table is not vertically limited. That means that +if you have a very long commit message then the table will probably not fit on +the page and you will get a "Overfull" error message from TeX. + +In this case you should specify the width of the column containing the commit messages. +I normally use something like --width=14 for DIN A4 in landscape. + +=item B<--git-c-add> + +Set an base URL to link to a commit. +This script will automatically try to use the base URL for github. + +=item B<--lang> + +Set the language of the legend and all strings in the output. Be default the +language of your system is used but you can overwrite this with this parameter. + +Currently this script only supports English and German. If you need a translation +to another language then you can either create a .po file or I can register +this project on one of those websites for online translation. + +=back + +=head1 Example + +You can use it like this: + + latex-git-log --width=6 --lang=en > example-output.tex + +=head1 DEPENDENCIES + +=head2 Of this script + +This module requires these other modules and libraries: + + IPC::System::Simple + Locale::Maketext::Simple + +Everything else should already be installed. + +=head2 To compile the output + +The table is using the B<longtable> package and the links to a web resource for +each commit use the \href macro from B<hyperref>. So these two packages have to +be loaded. + +Furthermore you need to defined the macro B<\longtableendfoot> which will be +expanded on the bottom of every page if the table will be continued on the next +page. You can defined it to a localized message to inform the reader that this +table is not complete and will be continued. + +=head1 DESCRIPTION + +B<This program> will output the entire version history as table written in +LaTeX if it is executed within a git repository. + +It is intended that you redirect the standard output of this script to a file +which can then be included from your main TeX document. + +Because the table can be very large you might want to put the thing on a +landscape page. + +=head1 Version + +0.9 + +=head1 AUTHOR + +Robin Schneider <ypid23@aol.de> + +=head1 Development + +Source code repository: https://github.com/ypid/typesetting/tree/master/scripts/latex-git-log + +Please report bugs and feature requests at https://github.com/ypid/typesetting/issues + +=head1 LICENSE AND COPYRIGHT + +Copyright (C) 2012-2013 by Robin Schneider + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +Dieses Programm ist Freie Software: Sie können es unter den Bedingungen +der GNU General Public License, wie von der Free Software Foundation, +Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren +veröffentlichten Version, weiterverbreiten und/oder modifizieren. + +Dieses Programm wird in der Hoffnung, dass es nützlich sein wird, aber +OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite +Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. +Siehe die GNU General Public License für weitere Details. + +Sie sollten eine Kopie der GNU General Public License zusammen mit diesem +Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>. + +=cut +# }}} diff --git a/Master/bin/alpha-linux/latex-git-log b/Master/bin/alpha-linux/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/alpha-linux/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/amd64-freebsd/latex-git-log b/Master/bin/amd64-freebsd/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/amd64-freebsd/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/amd64-kfreebsd/latex-git-log b/Master/bin/amd64-kfreebsd/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/amd64-kfreebsd/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/amd64-netbsd/latex-git-log b/Master/bin/amd64-netbsd/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/amd64-netbsd/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/armel-linux/latex-git-log b/Master/bin/armel-linux/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/armel-linux/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/armhf-linux/latex-git-log b/Master/bin/armhf-linux/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/armhf-linux/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/i386-cygwin/latex-git-log b/Master/bin/i386-cygwin/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/i386-cygwin/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/i386-freebsd/latex-git-log b/Master/bin/i386-freebsd/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/i386-freebsd/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/i386-kfreebsd/latex-git-log b/Master/bin/i386-kfreebsd/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/i386-kfreebsd/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/i386-linux/latex-git-log b/Master/bin/i386-linux/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/i386-linux/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/i386-netbsd/latex-git-log b/Master/bin/i386-netbsd/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/i386-netbsd/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/i386-solaris/latex-git-log b/Master/bin/i386-solaris/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/i386-solaris/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/mips-irix/latex-git-log b/Master/bin/mips-irix/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/mips-irix/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/mipsel-linux/latex-git-log b/Master/bin/mipsel-linux/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/mipsel-linux/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/latex-git-log b/Master/bin/powerpc-linux/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/powerpc-linux/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/sparc-solaris/latex-git-log b/Master/bin/sparc-solaris/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/sparc-solaris/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/universal-darwin/latex-git-log b/Master/bin/universal-darwin/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/universal-darwin/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/win32/latex-git-log.exe b/Master/bin/win32/latex-git-log.exe Binary files differnew file mode 100755 index 00000000000..5777d90a17a --- /dev/null +++ b/Master/bin/win32/latex-git-log.exe diff --git a/Master/bin/x86_64-darwin/latex-git-log b/Master/bin/x86_64-darwin/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/x86_64-darwin/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/x86_64-linux/latex-git-log b/Master/bin/x86_64-linux/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/x86_64-linux/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/bin/x86_64-solaris/latex-git-log b/Master/bin/x86_64-solaris/latex-git-log new file mode 120000 index 00000000000..1350d8dd5ad --- /dev/null +++ b/Master/bin/x86_64-solaris/latex-git-log @@ -0,0 +1 @@ +../../texmf-dist/scripts/latex-git-log/latex-git-log
\ No newline at end of file diff --git a/Master/texmf-dist/doc/man/man1/latex-git-log.1 b/Master/texmf-dist/doc/man/man1/latex-git-log.1 new file mode 100644 index 00000000000..6d41c0caf92 --- /dev/null +++ b/Master/texmf-dist/doc/man/man1/latex-git-log.1 @@ -0,0 +1,253 @@ +.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.20) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "LATEX-GIT-LOG 1" +.TH LATEX-GIT-LOG 1 "2013-06-16" "latex-git-log" "Robin Schneider" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +latex\-git\-log \- Generates the version history of a git project as LaTeX source code. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +latex-git-log [options] +.PP +Options: +.PP +.Vb 10 +\& \-\-author set this if you want the author included +\& \-\-startcommit set the start value of count commit +\& \-\-width set the width in cm of the commit message field in the LaTeX table +\& \-\-git\-c\-add set an base URL to link to a commit +\& \-\-user set a github user to derive the base URL +\& \-\-repo set a github repository to derive the base URL +\& \-\-lang language of the legend and all strings in the output +\& \-\-version, \-v print version of this script +\& \-\-help brief help message +\& \-\-man full documentation +.Ve +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-\-width\fR" 8 +.IX Item "--width" +Set the width in cm of the commit message field in the LaTeX table. If this +parameter is not set then the table is not vertically limited. That means that +if you have a very long commit message then the table will probably not fit on +the page and you will get a \*(L"Overfull\*(R" error message from TeX. +.Sp +In this case you should specify the width of the column containing the commit messages. +I normally use something like \-\-width=14 for \s-1DIN\s0 A4 in landscape. +.IP "\fB\-\-git\-c\-add\fR" 8 +.IX Item "--git-c-add" +Set an base \s-1URL\s0 to link to a commit. +This script will automatically try to use the base \s-1URL\s0 for github. +.IP "\fB\-\-lang\fR" 8 +.IX Item "--lang" +Set the language of the legend and all strings in the output. Be default the +language of your system is used but you can overwrite this with this parameter. +.Sp +Currently this script only supports English and German. If you need a translation +to another language then you can either create a .po file or I can register +this project on one of those websites for online translation. +.SH "Example" +.IX Header "Example" +You can use it like this: +.PP +.Vb 1 +\& latex\-git\-log \-\-width=6 \-\-lang=en > example\-output.tex +.Ve +.SH "DEPENDENCIES" +.IX Header "DEPENDENCIES" +.SS "Of this script" +.IX Subsection "Of this script" +This module requires these other modules and libraries: +.PP +.Vb 2 +\& IPC::System::Simple +\& Locale::Maketext::Simple +.Ve +.PP +Everything else should already be installed. +.SS "To compile the output" +.IX Subsection "To compile the output" +The table is using the \fBlongtable\fR package and the links to a web resource for +each commit use the \ehref macro from \fBhyperref\fR. So these two packages have to +be loaded. +.PP +Furthermore you need to defined the macro \fB\elongtableendfoot\fR which will be +expanded on the bottom of every page if the table will be continued on the next +page. You can defined it to a localized message to inform the reader that this +table is not complete and will be continued. +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBThis program\fR will output the entire version history as table written in +LaTeX if it is executed within a git repository. +.PP +It is intended that you redirect the standard output of this script to a file +which can then be included from your main TeX document. +.PP +Because the table can be very large you might want to put the thing on a +landscape page. +.SH "Version" +.IX Header "Version" +0.9 +.SH "AUTHOR" +.IX Header "AUTHOR" +Robin Schneider <ypid23@aol.de> +.SH "Development" +.IX Header "Development" +Source code repository: https://github.com/ypid/typesetting/tree/master/scripts/latex\-git\-log +.PP +Please report bugs and feature requests at https://github.com/ypid/typesetting/issues +.SH "LICENSE AND COPYRIGHT" +.IX Header "LICENSE AND COPYRIGHT" +Copyright (C) 2012\-2013 by Robin Schneider +.PP +This program is free software: you can redistribute it and/or modify +it under the terms of the \s-1GNU\s0 General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. +.PP +This program is distributed in the hope that it will be useful, +but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of +\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the +\&\s-1GNU\s0 General Public License for more details. +.PP +You should have received a copy of the \s-1GNU\s0 General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +.PP +Dieses Programm ist Freie Software: Sie kA\*~Xnnen es unter den Bedingungen +der \s-1GNU\s0 General Public License, wie von der Free Software Foundation, +Version 3 der Lizenz oder (nach Ihrer Option) jeder spA\*~Xteren +verA\*~Xffentlichten Version, weiterverbreiten und/oder modifizieren. +.PP +Dieses Programm wird in der Hoffnung, dass es nA\*~Xtzlich sein wird, aber +\&\s-1OHNE\s0 \s-1JEDE\s0 GEWA\*~XHRLEISTUNG, bereitgestellt; sogar ohne die implizite +GewA\*~Xhrleistung der MARKTFA\*~XHIGKEIT oder \s-1EIGNUNG\s0 FA\*~XR \s-1EINEN\s0 \s-1BESTIMMTEN\s0 \s-1ZWECK\s0. +Siehe die \s-1GNU\s0 General Public License fA\*~Xr weitere Details. +.PP +Sie sollten eine Kopie der \s-1GNU\s0 General Public License zusammen mit diesem +Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>. diff --git a/Master/texmf-dist/doc/man/man1/latex-git-log.man1.pdf b/Master/texmf-dist/doc/man/man1/latex-git-log.man1.pdf Binary files differnew file mode 100644 index 00000000000..5e621621ecb --- /dev/null +++ b/Master/texmf-dist/doc/man/man1/latex-git-log.man1.pdf diff --git a/Master/texmf-dist/doc/support/latex-git-log/README b/Master/texmf-dist/doc/support/latex-git-log/README new file mode 100644 index 00000000000..aaaae180109 --- /dev/null +++ b/Master/texmf-dist/doc/support/latex-git-log/README @@ -0,0 +1,75 @@ +# latex-git-log +This program will output the entire version history as table written in LaTeX +if it is executed within a git repository. + +It is intended that you redirect the standard output of this script to a file +which can then be included from your main TeX document. + +Because the table can be very large you might want to put the thing on a +landscape page. + +## Dependencies +### Of this script +This module requires these other modules and libraries: + + IPC::System::Simple + Locale::Maketext::Simple + +Everything else should already be installed. + +### To compile the output +The table is using the *longtable* package and the links to a web resource for +each commit use the `\href` macro from *hyperref*. So these two packages have +to be loaded. + +Furthermore you need to defined the macro `\longtableendfoot` which will be +expanded on the bottom of every page if the table will be continued on the next +page. You can defined it to a localized message to inform the reader that this +table is not complete and will be continued. + +## License and development +Copyright (C) by Robin Schneider <ypid23@aol.de> <br /> +Source code repository: https://github.com/ypid/typesetting/tree/master/scripts/latex-git-log <br /> +Please report bugs and feature requests at https://github.com/ypid/typesetting/issues <br /> + +## Usage + + latex-git-log [options] + + Options: + + --author set this if you want the author included + --startcommit set the start value of count commit + --width set the width in cm of the commit message field in the LaTeX table + --git-c-add set an base URL to link to a commit + --user set a github user to derive the base URL + --repo set a github repository to derive the base URL + --lang language of the legend and all strings in the output + --version, -v print version of this script + --help brief help message + --man full documentation + +### Description of some options + + --width Set the width in cm of the commit message field in the LaTeX + table. If this parameter is not set then the table is not + vertically limited. That means that if you have a very long + commit message then the table will probably not fit on the page + and you will get a "Overfull" error message from TeX. + + In this case you should specify the width of the column + containing the commit messages. I normally use something like + --width=14 for DIN A4 in landscape. + + --git-c-add + Set an base URL to link to a commit. This script will + automatically try to use the base URL for github. + + --lang Set the language of the legend and all strings in the output. Be + default the language of your system is used but you can + overwrite this with this parameter. + + Currently this script only supports English and German. If you + need a translation to another language then you can either + create a .po file or I can register this project on one of those + websites for online translation. diff --git a/Master/texmf-dist/doc/support/latex-git-log/example-output.tex b/Master/texmf-dist/doc/support/latex-git-log/example-output.tex new file mode 100644 index 00000000000..da2c199b5c5 --- /dev/null +++ b/Master/texmf-dist/doc/support/latex-git-log/example-output.tex @@ -0,0 +1,70 @@ +%% This file was generated by the script latex-git-log +%% Base git commit URL: https://github.com/ypid/typesetting/commit +\begin{tabular}{lp{12cm}} + \label{tabular:legend:git-log} + \textbf{acronym} & \textbf{meaning} \\ + V & \texttt{version} \\ + tag & \texttt{git tag} \\ + MF & Number of \texttt{modified files}. \\ + AL & Number of \texttt{added lines}. \\ + DL & Number of \texttt{deleted lines}. \\ +\end{tabular} + +\bigskip + +\iflanguage{ngerman}{\shorthandoff{"}}{} +\begin{longtable}{|rllp{13cm}rrr|} +\hline \multicolumn{1}{|c}{\textbf{V}} & \multicolumn{1}{c}{\textbf{tag}} +& \multicolumn{1}{c}{\textbf{date}} +& \multicolumn{1}{c}{\textbf{commit message}} & \multicolumn{1}{c}{\textbf{MF}} +& \multicolumn{1}{c}{\textbf{AL}} & \multicolumn{1}{c|}{\textbf{DL}} \\ \hline +\endhead + +\hline \multicolumn{7}{|r|}{\longtableendfoot} \\ \hline +\endfoot + +\hline% \hline +\endlastfoot + +\hline 1 & & 2012-08-18 & \href{https://github.com/ypid/typesetting/commit/3ff663fcfbc56662426740cf6bab2a840e320db6}{added template.dtx from http://texhacks.blogspot.de/2011/01/simpler-dtx-template.html} & 2 & 127 & 0 \\ +\hline 2 & & 2012-08-19 & \href{https://github.com/ypid/typesetting/commit/e9fc9a2847fe14067bb3ec8d4e4298ff8806f11f}{made my first changes on the docstrip template} & 2 & 40 & 48 \\ +\hline 3 & & 2012-08-19 & \href{https://github.com/ypid/typesetting/commit/cbc7bbcdda54f7b43f2039531d2a4f58c35f8964}{optimized} & 1 & 5 & 4 \\ +\hline 4 & & 2012-08-22 & \href{https://github.com/ypid/typesetting/commit/55d994c391c509897dd56a6a755c51a1e62bd4d4}{optimized} & 2 & 119 & 115 \\ +\hline 5 & & 2012-08-23 & \href{https://github.com/ypid/typesetting/commit/933466b223d70adeda6a865b4b13b4cdfa245070}{added my primary template} & 6 & 252 & 6 \\ +\hline 6 & & 2012-08-23 & \href{https://github.com/ypid/typesetting/commit/5995d70f82b680d3a529aa592558dcdde6f407b7}{added PDFs} & 2 & 0 & 0 \\ +\hline 7 & & 2012-08-23 & \href{https://github.com/ypid/typesetting/commit/7e1efb265b43fb9aad3fa94b22408951076016f3}{added README (Credits)} & 1 & 1 & 0 \\ +\hline 8 & & 2012-08-26 & \href{https://github.com/ypid/typesetting/commit/619a7f6db915bc1e05d0c9ee374aaff53195b257}{converted template.dtx and template.ins to a template for sty2dtx} & 7 & 49 & 62 \\ +\hline 9 & & 2012-08-27 & \href{https://github.com/ypid/typesetting/commit/06f948149a3b0bd2c81062078add19af6bb1ac5d}{optimized} & 6 & 48 & 22 \\ +\hline 10 & & 2012-08-27 & \href{https://github.com/ypid/typesetting/commit/09316b528dc90f45fa4ef6cf9cf5886c4e25c5bb}{added scripts} & 6 & 222 & 0 \\ +\hline 11 & & 2012-08-27 & \href{https://github.com/ypid/typesetting/commit/4c434dcd45aa4a73112b1393d096776eaa938b83}{added README for scripts} & 1 & 10 & 0 \\ +\hline 12 & & 2012-08-27 & \href{https://github.com/ypid/typesetting/commit/794a3db5bd4f0165a347f0628c78f32350731b2a}{optimized scripts} & 4 & 9 & 6 \\ +\hline 13 & & 2012-08-28 & \href{https://github.com/ypid/typesetting/commit/7c80a541828c3e7896c7f55c8b56d745b84a5414}{added MyPackages} & 22 & 1162 & 2 \\ +\hline 14 & & 2012-08-28 & \href{https://github.com/ypid/typesetting/commit/b408bc9fa5f91ff5a7687fc4903d520ab09a288d}{added my Makefile} & 5 & 106 & 0 \\ +\hline 15 & & 2012-08-28 & \href{https://github.com/ypid/typesetting/commit/d86bd28e3f0d0e14d7eb239eb6ad9afab2da47c0}{added more scripts} & 4 & 1465 & 0 \\ +\hline 16 & & 2012-08-28 & \href{https://github.com/ypid/typesetting/commit/ab0554ce8d44852a76b7ad0246e04268b8347acb}{optimized} & 5 & 4 & 1459 \\ +\hline 17 & & 2012-08-31 & \href{https://github.com/ypid/typesetting/commit/75a5b9d653b2798a9cb8f10535f50abf98e94cd2}{optimized} & 7 & 52 & 31 \\ +\hline 18 & & 2012-09-09 & \href{https://github.com/ypid/typesetting/commit/2a99a061ae89f5bd6bd6ace4aac66ad9a768b0fc}{optimized} & 4 & 23 & 10 \\ +\hline 19 & & 2012-09-16 & \href{https://github.com/ypid/typesetting/commit/c2463e8229fbc506a70b4efb157679ecf3aae795}{optimized} & 6 & 10 & 7 \\ +\hline 20 & & 2012-09-23 & \href{https://github.com/ypid/typesetting/commit/1b6cb46337c516e3042d94956e7bf4f097822a47}{added more packages} & 9 & 491 & 12 \\ +\hline 21 & & 2012-09-23 & \href{https://github.com/ypid/typesetting/commit/92a41f208a275b6fcdfe9c442be8c135ec0d1c92}{added school templates} & 25 & 502 & 25 \\ +\hline 22 & & 2012-09-30 & \href{https://github.com/ypid/typesetting/commit/32e21641dff2ffd9fecfe33b93def53d6a305963}{added more templates} & 20 & 537 & 4 \\ +\hline 23 & & 2012-11-03 & \href{https://github.com/ypid/typesetting/commit/2309fa9dd41d0acaf74d6de66976f7ae6f1e7c6b}{rewrote LaTeX-git-log as perl script} & 2 & 63 & 61 \\ +\hline 24 & & 2012-11-03 & \href{https://github.com/ypid/typesetting/commit/773e5b801cfd2ad9a2af8c9d379dd0e2f9afd3cf}{optimized} & 2 & 5 & 4 \\ +\hline 25 & & 2012-11-28 & \href{https://github.com/ypid/typesetting/commit/4ffc0488959ada2a97ba50d5a7db1390afce4a26}{added more templates and optimized} & 12 & 141 & 3 \\ +\hline 26 & & 2013-04-04 & \href{https://github.com/ypid/typesetting/commit/dc3b091e5e8d68daa1c4b73ab96e7bc201a6ed08}{Updated templates.} & 17 & 92 & 55 \\ +\hline 27 & & 2013-04-04 & \href{https://github.com/ypid/typesetting/commit/457664094f33618c62348fe5a9798cc98117bcad}{Added macro for showing the github URL and optimized.} & 8 & 26 & 38 \\ +\hline 28 & & 2013-04-04 & \href{https://github.com/ypid/typesetting/commit/71547c919a2b36548e65320be8ce0d318b473523}{Optimized} & 3 & 36 & 0 \\ +\hline 29 & & 2013-04-20 & \href{https://github.com/ypid/typesetting/commit/3681cf7bc6d18878ca03af4009bdfc9e8835dbcd}{Optimized.} & 5 & 40 & 12 \\ +\hline 30 & & 2013-04-20 & \href{https://github.com/ypid/typesetting/commit/c0ef81a414620007d6f39fa95e59888045fa5cf0}{Optimized.} & 12 & 67 & 22 \\ +\hline 31 & & 2013-04-21 & \href{https://github.com/ypid/typesetting/commit/782b0e0e51773b02cf909600444da892c890b926}{Optimized.} & 4 & 30 & 13 \\ +\hline 32 & & 2013-05-22 & \href{https://github.com/ypid/typesetting/commit/f3048459117aa782b32324bd08ce77bfde325a62}{Optimized (mainly LaTeX-git-wdiff).} & 9 & 229 & 78 \\ +\hline 33 & & 2013-06-15 & \href{https://github.com/ypid/typesetting/commit/c5c45122518ad0e6cf9712dc248b26fd3eea4cf0}{Optimized.} & 3 & 15 & 12 \\ +\hline 34 & v1.0 & 2013-06-15 & \href{https://github.com/ypid/typesetting/commit/af3d63d88a8e37c45c4dc7c8b54ee55091f7ea80}{Made latex-git-log ready for CTAN.} & 6 & 482 & 199 \\ +\hline 35 & & 2013-06-15 & \href{https://github.com/ypid/typesetting/commit/489927feca92be10ddb5bde1b8fb11dae6b37bbb}{Optimized latex-git-log.} & 6 & 12 & 15 \\ +\hline 36 & & 2013-06-16 & \href{https://github.com/ypid/typesetting/commit/6d0ff0a6ae2baba715704f7dea23ebb0ac9ddc02}{Optimized.} & 3 & 106 & 79 \\ +\hline 37 & & 2013-06-16 & \href{https://github.com/ypid/typesetting/commit/ff9d61b343971ca964ca5e2708253abe3dad4dab}{Fixed layout.} & 1 & 9 & 5 \\ +\hline 38 & & 2013-06-16 & \href{https://github.com/ypid/typesetting/commit/2c128bf3eb4d734a11f3e7ebfdc93c01eafbd6f4}{Taking care about special charters in the commit message.} & 2 & 48 & 10 \\ +\hline 39 & & 2013-06-16 & \href{https://github.com/ypid/typesetting/commit/7b1683a671fe687ca58f895564341ee4c82a7f7d}{Fixed problem with escaped $\backslash$href.} & 1 & 10 & 3 \\ +\hline 40 & & 2013-06-16 & \href{https://github.com/ypid/typesetting/commit/6b25666f78ff276bbe161a0a7b659ad0c836aa22}{Made the script prettier with perltidy.} & 1 & 33 & 25 \\ +\hline 41 & & 2013-06-16 & \href{https://github.com/ypid/typesetting/commit/38698ff91b2253abddacd135e332d9ace5127122}{Also escape the author field.} & 3 & 10 & 10 \\ +\end{longtable} diff --git a/Master/texmf-dist/doc/support/latex-git-log/example.pdf b/Master/texmf-dist/doc/support/latex-git-log/example.pdf Binary files differnew file mode 100644 index 00000000000..54c9c6093e9 --- /dev/null +++ b/Master/texmf-dist/doc/support/latex-git-log/example.pdf diff --git a/Master/texmf-dist/doc/support/latex-git-log/example.tex b/Master/texmf-dist/doc/support/latex-git-log/example.tex new file mode 100644 index 00000000000..fec2a0e31ff --- /dev/null +++ b/Master/texmf-dist/doc/support/latex-git-log/example.tex @@ -0,0 +1,17 @@ +\documentclass[12pt,a4paper,english,landscape]{scrartcl} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{babel} +\usepackage{longtable,hyperref} +\newcommand{\longtableendfoot}{Please continue at the next page} + +\begin{document} +\input{example-output} + +The example-output.tex was generated with this command: +\begin{verbatim} + latex-git-log --width=13 --lang=en > example-output.tex +\end{verbatim} + +\end{document} diff --git a/Master/texmf-dist/doc/support/latex-git-log/po/de.po b/Master/texmf-dist/doc/support/latex-git-log/po/de.po new file mode 100644 index 00000000000..c5ecd8937aa --- /dev/null +++ b/Master/texmf-dist/doc/support/latex-git-log/po/de.po @@ -0,0 +1,57 @@ +msgid "" +msgstr "" +"Project-Id-Version: latex-git-log\n" +"Report-Msgid-Bugs-To: ypid23@aol.de\n" +"POT-Creation-Date: 2013-06-15 18:43+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Robin Scheider <ypid23@aol.de>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: DE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +msgid "acronym" +msgstr "Abkürzung" + +msgid "meaning" +msgstr "Bedeutung" + +msgid "version" +msgstr "Version" + +msgid "V" +msgid "V" + +msgid "tag" +msgstr "Tag" + +msgid "MF" +msgstr "DV" + +msgid "AL" +msgstr "ZH" + +msgid "DL" +msgstr "ZG" + +msgid "\\texttt{git tag}" +msgstr "\\texttt{Markierung} einer Menge von Dateien, aus denen sich zu einem beliebigen Zeitpunkt eine bestimmte Version wiederherstellen lässt" + +msgid "Number of \\texttt{modified files}." +msgstr "Wie viele \\texttt{Dateien} innerhalb dieser Version \\texttt{verändert} wurden" + +msgid "Number of \\texttt{added lines}." +msgstr "Wie viele \\texttt{Zeilen} innerhalb dieser Version neu \\texttt{hinzugekommen} sind" + +msgid "Number of \\texttt{deleted lines}." +msgstr "Wie viele \\texttt{Zeilen} innerhalb dieser Version \\texttt{gelöscht} wurden" + +msgid "author" +msgstr "Autor" + +msgid "date" +msgstr "Datum" + +msgid "commit message" +msgstr "Versionsbericht" diff --git a/Master/texmf-dist/scripts/latex-git-log/latex-git-log b/Master/texmf-dist/scripts/latex-git-log/latex-git-log new file mode 100755 index 00000000000..e074d05a5ce --- /dev/null +++ b/Master/texmf-dist/scripts/latex-git-log/latex-git-log @@ -0,0 +1,362 @@ +#!/usr/bin/env perl +# @author Robin Schneider <ypid23@aol.de> +# @licence GPLv3+ <http://www.gnu.org/licenses/gpl.html> + +# Modules and pragmas {{{ +use strict; +use warnings; +use autodie; +use feature qw(say); +use utf8; +use open qw(:std :utf8); +binmode STDOUT, ':encoding(UTF-8)'; +use IPC::System::Simple qw(capturex); +use Getopt::Long; +use Pod::Usage; + +# Get the path where this script is located {{{ +my $dirpath; + +BEGIN { + use File::Basename qw(fileparse); + use Cwd qw(abs_path); + $dirpath = ( fileparse( abs_path($0) ) )[1]; +} +# }}} +use Locale::Maketext::Simple ( + Path => $dirpath . 'po/', + Decode => 1, +); +# }}} + +# Optional parameters {{{ +my $print_author = 0; +my $commit_count = 1; +my $width = 0; +my $lang = undef; +my $version = 0; +my $help = 0; +my $man = 0; +my ( $git_user, $git_repo, $git_commit_address ); +GetOptions( + 'author' => \$print_author, + 'startcommit=s' => \$commit_count, + 'width=s' => \$width, + 'git-c-add=s' => \$git_commit_address, + 'user=s' => \$git_user, + 'repo=s' => \$git_repo, + 'lang=s' => \$lang, + 'version' => \$version, + 'help|?' => \$help, + 'man' => \$man, +); +pod2usage(1) if $help; +pod2usage( -verbose => 2, -exitstatus => 0, ) if $man; +pod2usage( -verbose => 99, -sections => 'Version' ) if $version; +my $git_remote = ( split /\n/xms, capturex(qw(git remote -v)) )[0]; + +loc_lang($lang) if ( defined $lang ); +if ( not defined $git_user + and not defined $git_repo + and defined $git_remote + and $git_remote =~ m#\s.*?:(?<user>\w+?)/(?<repo>.*?)\.git\ \(fetch\)\Z#xms ) +{ + $git_user = $+{user}; + $git_repo = $+{repo}; +} +say '%% This file was generated by the script latex-git-log'; +my $git_command_commit_msg = '%s'; +if ( defined $git_user and defined $git_repo ) { + unless ( defined $git_commit_address ) { + $git_commit_address = "https://github.com/$+{user}/$+{repo}/commit"; + } + $git_command_commit_msg = '%H & %s'; + say '%% Base git commit URL: ' . $git_commit_address; +} +if ($width) { + $width = "p{${width}cm}"; +} +else { + $width = 'l'; +} +# }}} + +# LaTeX template {{{ +say '\begin{tabular}{lp{12cm}} + \label{tabular:legend:git-log} + \textbf{' . loc('acronym') . '} & \textbf{' . loc('meaning') . '} \\\\ + V & \texttt{' . loc('version') . '} \\\\ + ' . loc('tag') . ' & ' . loc('\texttt{git tag}') . ' \\\\ + ' . loc('MF') . ' & ' . loc('Number of \texttt{modified files}.') . ' \\\\ + ' . loc('AL') . ' & ' . loc('Number of \texttt{added lines}.') . ' \\\\ + ' . loc('DL') . ' & ' . loc('Number of \texttt{deleted lines}.') . ' \\\\ +\end{tabular} + +\bigskip + +\iflanguage{ngerman}{\shorthandoff{"}}{}'; + +if ($print_author) { + say "\\begin{longtable}{|rllllrrr|}"; +} +else { + say "\\begin{longtable}{|rll${width}rrr|}"; +} +say '\hline \multicolumn{1}{|c}{\textbf{' . loc('V') . '}} & \multicolumn{1}{c}{\textbf{' . loc('tag') . '}}'; +say '& \multicolumn{1}{c}{\textbf{' . loc('author') . '}}' if $print_author; +say '& \multicolumn{1}{c}{\textbf{' . loc('date') . '}} +& \multicolumn{1}{c}{\textbf{' . loc('commit message') . '}} & \multicolumn{1}{c}{\textbf{' . loc('MF') . '}} +& \multicolumn{1}{c}{\textbf{' . loc('AL') . '}} & \multicolumn{1}{c|}{\textbf{' . loc('DL') . '}} \\\\ \hline +\endhead +'; +if ($print_author) { + say '\hline \multicolumn{8}{|r|}{\longtableendfoot} \\\\ \hline'; +} +else { + say '\hline \multicolumn{7}{|r|}{\longtableendfoot} \\\\ \hline'; +} +say '\endfoot + +\hline% \hline +\endlastfoot +'; +# }}} + +# Get version history from git log {{{ +# git log --pretty=format:'%ai' +# git log --date=short --pretty=format:'%ad' +my @lines; +my @git_command = qw(git log --date=short --shortstat); +if ($print_author) { + push( @git_command, qq(--pretty=format:%H & %an NoTinAuthorFiled& %ad & $git_command_commit_msg) ); +} +else { + push( @git_command, qq(--pretty=format:%H %ad & $git_command_commit_msg) ); +} +@lines = reverse capturex(@git_command); +# }}} + +# Get tags {{{ +my @tags_commits = capturex( 'git', 'for-each-ref', '--format=%(refname:short) %(objectname)', 'refs/tags' ); +my %commit_tags; # The key will be a SHA1 commit hash and the value a comma separated list of all tags. +for (@tags_commits) { + my ( $tag, $c_hash ) = split /\s/xms, $_; + chomp($c_hash); + if ( defined $commit_tags{$c_hash} ) { + $commit_tags{$c_hash} .= ", $tag"; + } + else { + $commit_tags{$c_hash} = $tag; + } +} +# }}} + +# Helper function {{{ +sub latex_escape { + # Source: http://ommammatips.blogspot.de/2011/01/perl-function-for-latex-escape.html + my $paragraph = shift; + + # Replace a \ with $\backslash$ + # This is made more complicated because the dollars will be escaped + # by the subsequent replacement. Easiest to add \backslash + # now and then add the dollars + $paragraph =~ s/\\/\\backslash/g; + + # Must be done after escape of \ since this command adds latex escapes + # Replace characters that can be escaped + $paragraph =~ s/([\$\#&%_{}])/\\$1/g; + + # Replace ^ characters with \^{} so that $^F works okay + $paragraph =~ s/(\^)/\\$1\{\}/g; + + # Replace tilde (~) with \texttt{\~{}} + # $paragraph =~ s/~/\\texttt\{\\~\{\}\}/g; + $paragraph =~ s/~/\\~\{\}/g; + + # Now add the dollars around each \backslash + $paragraph =~ s/(\\backslash)/\$$1\$/g; + return $paragraph; +} ## end sub latex_escape +# }}} + +# Loop over all commits {{{ +my $which_line = 0; +my @changes; +for (@lines) { + next if /\A\Z/xms; + chomp; + if ($which_line) { + s/\A([0-9a-f]{40})\s//xms or die "Did not match the commit hash\n"; + my $tags = exists $commit_tags{$1} ? $commit_tags{$1} : q(); + my $date_author = ''; + my $c_msg; + if ($print_author) { + /(?:& )(.*?)NoTinAuthorFiled(& .*? &) (.*)/; + $date_author = latex_escape($1) . $2; + $c_msg = $3; + } + else { + /(.*? &) (.*)/; + $date_author = $1; + $c_msg = $2; + } + if ( defined $git_user and defined $git_repo ) { + $c_msg =~ /(.*?) & (.*)/; + $c_msg = sprintf '\\href{%s/%s}{%s}', $git_commit_address, $1, latex_escape($2); + } + else { + $c_msg = latex_escape($c_msg); + } + say "\\hline $commit_count & $tags & $date_author $c_msg & " . join( ' & ', @changes ) . ' \\\\'; + $commit_count++; + } ## end if ($which_line) + else { + @changes = ( 0, 0, 0 ); + /(\d+) files? changed/ and $changes[0] = $1; + /(\d+) insertions?/ and $changes[1] = $1; + /(\d+) deletions?/ and $changes[2] = $1; + } + $which_line ^= 1; ## toggle bit +} ## end for (@lines) +say '\end{longtable}'; +# }}} + +__END__ +# Documentation {{{ + +=head1 NAME + +latex-git-log - Generates the version history of a git project as LaTeX source code. + +=head1 SYNOPSIS + +latex-git-log [options] + +Options: + + --author set this if you want the author included + --startcommit set the start value of count commit + --width set the width in cm of the commit message field in the LaTeX table + --git-c-add set an base URL to link to a commit + --user set a github user to derive the base URL + --repo set a github repository to derive the base URL + --lang language of the legend and all strings in the output + --version, -v print version of this script + --help brief help message + --man full documentation + +=head1 OPTIONS + +=over 8 + +=item B<--width> + +Set the width in cm of the commit message field in the LaTeX table. If this +parameter is not set then the table is not vertically limited. That means that +if you have a very long commit message then the table will probably not fit on +the page and you will get a "Overfull" error message from TeX. + +In this case you should specify the width of the column containing the commit messages. +I normally use something like --width=14 for DIN A4 in landscape. + +=item B<--git-c-add> + +Set an base URL to link to a commit. +This script will automatically try to use the base URL for github. + +=item B<--lang> + +Set the language of the legend and all strings in the output. Be default the +language of your system is used but you can overwrite this with this parameter. + +Currently this script only supports English and German. If you need a translation +to another language then you can either create a .po file or I can register +this project on one of those websites for online translation. + +=back + +=head1 Example + +You can use it like this: + + latex-git-log --width=6 --lang=en > example-output.tex + +=head1 DEPENDENCIES + +=head2 Of this script + +This module requires these other modules and libraries: + + IPC::System::Simple + Locale::Maketext::Simple + +Everything else should already be installed. + +=head2 To compile the output + +The table is using the B<longtable> package and the links to a web resource for +each commit use the \href macro from B<hyperref>. So these two packages have to +be loaded. + +Furthermore you need to defined the macro B<\longtableendfoot> which will be +expanded on the bottom of every page if the table will be continued on the next +page. You can defined it to a localized message to inform the reader that this +table is not complete and will be continued. + +=head1 DESCRIPTION + +B<This program> will output the entire version history as table written in +LaTeX if it is executed within a git repository. + +It is intended that you redirect the standard output of this script to a file +which can then be included from your main TeX document. + +Because the table can be very large you might want to put the thing on a +landscape page. + +=head1 Version + +0.9 + +=head1 AUTHOR + +Robin Schneider <ypid23@aol.de> + +=head1 Development + +Source code repository: https://github.com/ypid/typesetting/tree/master/scripts/latex-git-log + +Please report bugs and feature requests at https://github.com/ypid/typesetting/issues + +=head1 LICENSE AND COPYRIGHT + +Copyright (C) 2012-2013 by Robin Schneider + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +Dieses Programm ist Freie Software: Sie können es unter den Bedingungen +der GNU General Public License, wie von der Free Software Foundation, +Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren +veröffentlichten Version, weiterverbreiten und/oder modifizieren. + +Dieses Programm wird in der Hoffnung, dass es nützlich sein wird, aber +OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite +Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. +Siehe die GNU General Public License für weitere Details. + +Sie sollten eine Kopie der GNU General Public License zusammen mit diesem +Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>. + +=cut +# }}} diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 40cfce713c5..a0fe0de8750 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -253,9 +253,9 @@ my @TLP_working = qw( l3kernel l3packages l3experimental labbook labelcas labels langcode lapdf lastpage latex latex-bib-ex latex-brochure latex-course latex-doc-ptr latex-fonts - latex-graphics-companion latex-web-companion latex-notes-zh-cn + latex-git-log latex-graphics-companion latex-notes-zh-cn latex-referenz latex-tabellen - latex-tds latex-veryshortguide + latex-tds latex-veryshortguide latex-web-companion latex2e-help-texinfo latex2e-help-texinfo-spanish latex2man latex4wp latex4wp-it latexcheat latexcheat-esmx latexcheat-ptbr diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 5079fa1c483..0cea75b6c86 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -1095,6 +1095,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'fontools' => '&PREHOOK_fontools', 'ibygrk' => '&PREHOOK_ibygrk', 'ktv-texdata' => '&PREHOOK_ktv_texdata', + 'latex-git-log' => '&PREHOOK_latex_git_log', 'latexdiff' => '&PREHOOK_latexdiff', 'mathspic' => '&PREHOOK_mathspic', 'movie15' => '&PREHOOK_flatten1', @@ -2377,6 +2378,7 @@ $standardxmt='\.xmt'; 'fragmaster' => 'fragmaster\.pl$', 'fontools' => '(afm2afm|autoinst|ot2kpx)$', 'installfont' => 'installfont-tl', + 'latex-git-log' => 'latex-git-log$', 'latex2man' => 'latex2man$', 'latexdiff' => 'latex(diff|diff-vc|revise)\.pl$', 'latexmk' => '\.pl$', @@ -2445,6 +2447,7 @@ $standardxmt='\.xmt'; 'epstopdf' => 'r?epstopdf.1|epstopdf.man1.pdf', # don't keep pdf 'findhyph' => 'findhyph.1', 'fontools' => '\.1$', + 'latex-git-log' => '\.1$', 'latexdiff' => '\.1$', 'latexmk' => 'latexmk.1', 'mkjobtexmf' => 'mkjobtexmf.man', @@ -4648,15 +4651,25 @@ sub PREHOOK_flatten1 { sub PREHOOK_fontools { print "PREHOOK_$package - make .1 with pod2man\n"; &xchdir ("bin"); - for my $script (qw(afm2afm autoinst ot2kpx)) { - my $pod2man = 'pod2man --center="Marc Penninga" --release="fontools" ' - . '--section=1'; - &SYSTEM ("$pod2man $script - >$script.1"); - } + &prehook_pod2man ("Marc Penninga", qw(afm2afm autoinst ot2kpx)); &xchdir (".."); &SYSTEM ("$RM -rf doc"); # remove distributed pdf's } +sub PREHOOK_latex_git_log { + print "PREHOOK_$package - make .1 with pod2man\n"; + &prehook_pod2man ("Robin Schneider", $package); +} + +sub prehook_pod2man { + my ($author,@scripts) = @_; + for my $script (@scripts) { + my $pod2man = qq(pod2man --center="$author" --release="$package") + . ' --section=1'; + &SYSTEM ("$pod2man $script - >$script.1"); + } +} + sub PREHOOK_ibygrk { print "PREHOOK_$package - handle ibycus4.map\n"; # ibygrk has two instances of the same file ibycus4.map; it is diff --git a/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc index 3ba96a54837..1d15764a6b4 100644 --- a/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc @@ -35,6 +35,7 @@ depend fragmaster depend hyphenex depend installfont depend lacheck +depend latex-git-log depend latex2man depend latexdiff depend latexfileversion diff --git a/Master/tlpkg/tlpsrc/latex-git-log.tlpsrc b/Master/tlpkg/tlpsrc/latex-git-log.tlpsrc new file mode 100644 index 00000000000..dca338c719c --- /dev/null +++ b/Master/tlpkg/tlpsrc/latex-git-log.tlpsrc @@ -0,0 +1 @@ +binpattern f bin/${ARCH}/${PKGNAME} |