diff options
author | Karl Berry <karl@freefriends.org> | 2009-11-22 19:02:28 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-11-22 19:02:28 +0000 |
commit | f416cde919529b4cc1dbde7a502981b7665cb0cf (patch) | |
tree | bdf6c00d65fabbfd3cd0dcd8914946a696a1e91a /Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx | |
parent | 5c1ac0551ac7f6c96e8b09c1ba7b1f2ecb2e864d (diff) |
svn-multi 2.2 (20oct09)
git-svn-id: svn://tug.org/texlive/trunk@16125 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx | 145 |
1 files changed, 99 insertions, 46 deletions
diff --git a/Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx b/Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx index bfbd61432aa..192804000a8 100644 --- a/Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx +++ b/Master/texmf-dist/source/latex/svn-multi/svn-multi.dtx @@ -24,27 +24,30 @@ % \fi % \iffalse %<*package|driver> -% $Id: svn-multi.dtx 845 2009-04-21 12:03:08Z martin $ +% $Id: svn-multi.dtx 1448 2009-10-19 21:28:41Z martin $ % -\def\svnmulti@version {v2.1a} -\def\svnmulti@rev $#1: #2 ${\def\svnmulti@rev{#2}} -\def\svnmulti@date $#1: #2-#3-#4 #5 ${\def\svnmulti@date{#2/#3/#4}} -\svnmulti@rev $Rev: 845 $\relax -\svnmulti@date $Date: 2009-04-21 13:03:08 +0100 (Tue, 21 Apr 2009) $\relax - +\def\svnmulti@version{v2.2} +\RequirePackage{svn-prov} %</package|driver> %<*driver> -\ProvidesFile{svn-multi.dtx} - [\svnmulti@date\space\svnmulti@version\space SVN Keywords for multi-file LaTeX documents] - -\def\svnmulti@date $#1: #2-#3-#4 #5 $ {% - \def\svnmulti@today{{\year#2\month#3\day#4\today}}% - \def\svnmulti@date{#2/#3/#4}% -} -\svnmulti@date $Date: 2009-04-21 13:03:08 +0100 (Tue, 21 Apr 2009) $ +\ProvidesFileSVN{$Id: svn-multi.dtx 1448 2009-10-19 21:28:41Z martin $} + [\svnmulti@version\space SVN Keywords for multi-file LaTeX documents] +\GetFileInfoSVN* +\let\svnmulti@date\filedate +\let\svnmulti@rev\filerev \documentclass{ltxdoc} +\def\svnmulti@today#1/#2/#3\relax{% + \begingroup + \year#1\relax + \month#2\relax + \day#3\relax + \xdef\svnmulti@today{\today} + \endgroup +} +\expandafter\svnmulti@today\svnmulti@date\relax + \usepackage{svn-multi}[\svnmulti@date] \usepackage{booktabs} \usepackage{ifpdf} @@ -277,6 +280,7 @@ %\OnlyDescription \widowpenalty=500 \clubpenalty=500 +\listfiles \begin{document} \DocInput{svn-multi.dtx}% \PrintChanges @@ -287,7 +291,7 @@ %<*package> % \fi % -% \CheckSum{2652} +% \CheckSum{2728} % % {\makeatother % \CharacterTable @@ -330,8 +334,8 @@ % support, auto-include of images, files as subgroups and table of revisions.} % \changes{v2.1}{2009/03/27}{Added automatic extraction of keywords from % Subversion 'entries' file: 'autokw' option} -% \changes{v2.1a}{2009/04/21}{Bugfix for macros which external if switches which -% might not be defined by all classes} +% \changes{v2.2}{2009/10/19}{Added \css{ifsvnmodified} and +% \css{ifsvnfilemodified} macros. Some bug fixes.} % % ^^A \GetFileInfo{svn-multi.dtx} % @@ -856,6 +860,22 @@ % macros. You can \eg say |\svnkwdef{Rev}{123}| and then typeset it with % |\svnkw{Revision}| or |\svnkw{LastChangedRev}| if you like. % +% \subsubsection*{New in version 2.2. Will change in future versions:} +% \DescribeMacro{ifsvnfilemodified}{\marg{case:~modified}\marg{case:~not +% modified}} +% \DescribeMacro*{ifsvnmodified}{\marg{case:~modified}\marg{case:~not modified}} +% This two macro can be used to check if either the current or any file was +% modified after it was last checked into the repository. At the moment (v2.2) a +% file is marked `modified' if there is either a `|*|' or `|M|' after the +% revision number, \eg `|$||Rev: 123M $|'. Such an marker is automatically added +% for exported files (`|svn export|') if there where locally modified, but can +% also be added manually. +% +% Future versions of this package might mark files as modified by use of the +% \op{autokw} option which can read this information out of the working +% directory Subversion entries. +% +% \newpage % \subsection{Accessing Date Values}\label{sec:date} % \begin{tabular}{@{}l@{\hspace{-2\macrosep}}l@{\hspace{-2\macrosep}}l@{}}\\ % \DescribeMacro*{svnyear}{}& @@ -1001,7 +1021,6 @@ % Please note that you can't use \pkg{hyperref}'s |\nolinkurl| because it won't % expand \cs{svnkw}. % -% % \subsection{Table of Revisions}\label{sec:table} % Version 2.0 introduces this new feature which allows a overview table to be % typeset which holds the version control information of all files of the @@ -1385,8 +1404,9 @@ % \subsubsection*{Package Identification} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{svn-multi} - [\svnmulti@date\space\svnmulti@version\space SVN Keywords for multi-file LaTeX documents] +\ProvidesPackageSVN + {$Id: svn-multi.dtx 1448 2009-10-19 21:28:41Z martin $} + [\svnmulti@version\space SVN Keywords for multi-file LaTeX documents] % \end{macrocode} % \subsubsection*{Options} @@ -1587,22 +1607,22 @@ % \begin{macro}{\svn@ifvalidrev}[1]{macro name} % Checks if the given macro (by name) is a valid revision, \ie defined and -% greater than zero. +% not equal to the init value. % \begin{macrocode} \def\svn@ifvalidrev#1{% \begingroup \@ifundefined{#1}% - {\def\svn@temp{-1}}% + {\let\svn@temp\svn@revinit}% {\expandafter\edef \expandafter\svn@temp\expandafter{\csname #1\endcsname}}% - \ifnum\svn@temp>-1\relax + \ifnum\svn@temp=\svn@revinit\relax \endgroup \expandafter - \@firstoftwo + \@secondoftwo \else \endgroup \expandafter - \@secondoftwo + \@firstoftwo \fi } % \end{macrocode} @@ -1666,7 +1686,7 @@ % \subsection{Definition of init values} % Initialisation of at least the revision to a numeric value is necessary to not % break the |\ifnum| tests later in this package. The revision is initialised to -% -1, but will be set to 0 if an unexpanded |$||Rev:$| keyword is read. This way +% -2, but will be set to 0 if an unexpanded |$||Rev:$| keyword is read. This way % it can be tested if a file had any keyword macros or not.\par % Note that there a two different macros for the document global keywords:\par % The user level |\svn|\meta{kw} macros hold the global value and are only valid @@ -1684,7 +1704,10 @@ % |\svn@g|\meta{current group}|@|\meta{kw}. % \begin{macrocode} % Init values -\def\svnrev{-1} \def\@svn@rev{-1} +\def\svn@revinit{-2} +\let\svnrev\svn@revinit \let\@svn@rev\svn@revinit +\let\ifsvnmodified\@secondoftwo +\def\@svn@modified{@secondoftwo}% \def\svndate{} \def\@svn@date{} \def\svnauthor{} \def\@svn@author{} \def\svnyear{0000} \def\@svn@year{0000} @@ -1703,7 +1726,8 @@ \let\@svng@@files\relax \def\svn@initfile{% - \gdef\svnfilerev{-1}% + \global\let\svnfilerev\svn@revinit + \global\let\ifsvnfilemodified\@secondoftwo \gdef\svnfiledate{}% \gdef\svnfileauthor{}% \gdef\svnfileyear{0000}% @@ -1719,6 +1743,8 @@ \gdef\svnfiledir{}% } \svn@initfile + +\newif\ifsvn@modified % \end{macrocode} % \subsection{Auto-Keywords} @@ -2115,6 +2141,11 @@ % \begin{macrocode} \def\@svn@updateid#1#2#3#4{% \xdef\svnfilerev{#1}% + \ifsvn@modified + \global\let\ifsvnfilemodified\@firstoftwo + \else + \global\let\ifsvnfilemodified\@secondoftwo + \fi \xdef\svnfiledate{#2}% \xdef\svnfileauthor{#3}% \xdef\svnfileurl{#4}% @@ -2127,6 +2158,7 @@ \ifx\svnfilerev\empty\else \ifnum\@svn@rev<\svnfilerev \xdef\@svn@rev{\svnfilerev}% + \xdef\@svn@modified{\ifsvnfilemodified{@firstoftwo}{@secondoftwo}}% \xdef\@svn@date{\svnfiledate}% \xdef\@svn@author{\svnfileauthor}% \xdef\@svn@year{\svnfileyear}% @@ -2167,10 +2199,10 @@ % We clear the keyword value first to reduce the risk though bad user input. % \begin{macrocode} \newcommand{\svnidlong}{% - \svnkwdef{HeadURL}{}% - \svnkwdef{LastChangedDate}{}% - \svnkwdef{LastChangedRevision}{0}% - \svnkwdef{LastChangedBy}{}% + \svnkwdef{URL}{}% + \svnkwdef{Date}{}% + \svnkwdef{Revision}{0}% + \svnkwdef{Author}{}% % \end{macrocode} % The catcodes are changed by \cs{svn@catcodes} to allow \TeX-special characters % inside the keywords. The braces |{ }| are changed to allow comments between @@ -2248,11 +2280,11 @@ % \end{macrocode} % Now the update macros for date and id are called. % \begin{macrocode} - \ifx\svnkwLastChangedDate\empty\else - \@svn@scanlongdate{\svnkwLastChangedDate}% + \ifx\svnkwDate\empty\else + \@svn@scanlongdate{\svnkwDate}% \fi - \@svn@updateid{\svnkw{LastChangedRevision}}{\svnkw{LastChangedDate}}% - {\svnkw{LastChangedBy}}{\svnkw{HeadURL}}% + \@svn@updateid{\svnkw{Revision}}{\svnkw{Date}}% + {\svnkw{Author}}{\svnkw{URL}}% \ignorespaces }% % \end{macrocode} @@ -2356,12 +2388,29 @@ % % The keywords |Author| and |Date| are just calling \cs{svnkwdef@} with a fixed % first argument. For the revision the value is checked if empty and then a 0 -% is substituted. +% is substituted. Also a temp counter is used to strip any trailing characters +% like `M' which indicate an exported and modified file. % \begin{macrocode} \def\svnkwdef@Rev#1{% \svn@ifempty{#1}% {\svnkwdef@{Rev}{0}}% - {\svnkwdef@{Rev}{#1}}% + {% + \afterassignment\svnkwdef@Rev@ + \@tempcnta=#1\relax + }% +} +\def\svnkwdef@Rev@#1\relax{% + \svnkwdef@{Rev}{\the\@tempcnta}% + \def\svn@temp{#1}% + \if M\svn@temp\relax + \global\svn@modifiedtrue + \else + \if *\svn@temp\relax + \global\svn@modifiedtrue + \else + \global\svn@modifiedfalse + \fi + \fi } \def\svnkwdef@Author#1{\svnkwdef@{Author}{#1}} \def\svnkwdef@Date#1{\svnkwdef@{Date}{#1}} @@ -2373,14 +2422,14 @@ \let\svnkwdef@Revision=\svnkwdef@Rev \let\svnkwdef@LastChangedRevision=\svnkwdef@Rev \let\svnkwdef@LastChangedBy=\svnkwdef@Author -\let\svnkwdef@LastChangedAt=\svnkwdef@Date +\let\svnkwdef@LastChangedDate=\svnkwdef@Date % \end{macrocode} % and then for reading. % \begin{macrocode} \def\svnkwRevision{\svnkwRev} \def\svnkwLastChangedRevision{\svnkwRev} \def\svnkwLastChangedBy{\svnkwAuthor} -\def\svnkwLastChangedAt{\svnkwDate} +\def\svnkwLastChangedDate{\svnkwDate} \def\svnkwURL{\svnkwHeadURL} % \end{macrocode} % So \eg |\svnkw{LastChangedRevision}| is always be the @@ -2860,6 +2909,7 @@ Try a different version, e.g. v2.1.1 from 2008/02/27}{}% {\svnfilefname}% {\svn@g}% {\svn@pg}% + {\ifsvnfilemodified{@firstoftwo}{@secondoftwo}}% }\svn@filestack}% } @@ -2867,7 +2917,7 @@ Try a different version, e.g. v2.1.1 from 2008/02/27}{}% \svn@restorefilekws@#1\empty \empty \empty \empty \empty \empty \empty \empty \empty - \empty \empty \empty \empty + \empty \empty \empty \empty \empty \svn@ifempty{#2}% {\gdef\svn@filestack{{}}}% {\gdef\svn@filestack{#2}}% @@ -2885,13 +2935,15 @@ Try a different version, e.g. v2.1.1 from 2008/02/27}{}% \svn@restorefilekws@@ } -\def\svn@restorefilekws@@#1#2#3#4#5#6{% +\def\svn@restorefilekws@@#1#2#3#4#5#6#7{% \gdef\svnfiletimezonehour{#1}% \gdef\svnfiletimezoneminute{#2}% \gdef\svnfileurl{#3}% \gdef\svnfilefname{#4}% \gdef\svn@g{#5}% \gdef\svn@pg{#6}% + \expandafter\global\expandafter\let + \expandafter\ifsvnfilemodified\csname#7\endcsname% } \def\svn@popfilestack{% @@ -3200,7 +3252,7 @@ Try a different version, e.g. v2.1.1 from 2008/02/27}{}% % Initialises group. % \begin{macrocode} \def\svn@initgroup#1{% - \svn@gkwset{#1}{rev}{-1}% + \svn@gkwset{#1}{rev}{\svn@revinit}% \svn@gkwset{#1}{date}{}% \svn@gkwset{#1}{author}{}% \svn@gkwset{#1}{year}{0000}% @@ -3306,7 +3358,7 @@ Try a different version, e.g. v2.1.1 from 2008/02/27}{}% % file keyword information is written. % \begin{macrocode} \def\svn@subgroup#1{% - \ifnum\svnfilerev>-1\relax + \ifnum\svnfilerev=\svn@revinit\else \expandafter\ifx\csname svn@g@#1\endcsname\relax% \expandafter\gdef\csname svn@g@#1\endcsname{1}% \svn@updategroup{#1}% @@ -4115,6 +4167,7 @@ patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}% \immediate\write\svn@write{^^J% \@percentchar\space Global values:^^J% \noexpand\def\noexpand\svnrev{\@svn@rev}^^J% + \noexpand\let\noexpand\ifsvnmodified\@backslashchar\@svn@modified^^J% \noexpand\def\noexpand\svndate{\@svn@date}^^J% \noexpand\def\noexpand\svnauthor{\@svn@author}^^J% \noexpand\def\noexpand\svnyear{\@svn@year}^^J% @@ -4305,7 +4358,7 @@ patch generated macros '\string\pgf@image@<name>!' from the 'pgf' package!}% % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{svnkw} - [2009/03/27 v2.1 Backward compatibility wrapper for svn-multi] + [2009/03/27 v2.1 Backward compatibility wrapper for svn-multi] \PackageWarning{svnkw}{The package 'svnkw' got renamed to 'svn-multi' and is now only a backward compatibility wrapper which loads 'svn-multi'. Please adjust your document preamble to use the new name.} |