将文件的最新日期与 Git 版本进行比较

将文件的最新日期与 Git 版本进行比较

我有许多 TeX 文件用于获取它们的 PDF 版本,并且我在每个文件中添加了日期,如下所示最近更新时间数据。

\usepackage[yyyymmdd]{datetime}
updated \today

但这很棘手,因为每次我编译它们时,这个日期都会根据我编译的日期而改变。因此,因为我使用 Git 跟踪我的更改,所以我想用\today文件提交的最后日期更改命令;文件可以在最后一次更改中提交或不提交。

我在 Windows 上使用 TeXLive 发行版,并且有一个make.bat用于自动编译文件的文件:

@echo off
for %%G in ("*.tex") DO (call :singlefile "%%G")
goto :eof

:singlefile
echo compiling %1
latexmk -xelatex -bibtex- -silent -auxdir=output -outdir=output %1
goto :eof

我的 Git 版本:1.9.4.msysgit.0

答案1

检查了包的文档后gitinfo2,我得到了这个文件/目录结构:

  • 主目录
    • 文件.tex
    • 其他.tex
    • gitexinfo.sty(复制自gitinfo2
    • gitinfo2.sty(复制自gitinfo2
    • 制作脚本

然后我更新了我的make.bat文件以获取gitHeadInfo.gin文件。通过此更改,我避免使用 git hooks;我只需将其重新格式化为批处理 Windows 样式:

@echo off

set GitInfoFormat=\usepackage[%%^
        shash^={%%h},^
        lhash^={%%H},^
        authname^={%%an},^
        authemail^={%%ae},^
        authsdate^={%%ad},^
        authidate^={%%ai},^
        authudate^={%%at},^
        commname^={%%an},^
        commemail^={%%ae},^
        commsdate^={%%ad},^
        commidate^={%%ai},^
        commudate^={%%at},^
        refnames^={%%d},^
        firsttagdescribe^={$FIRSTTAG},^
        reltag^={$RELTAG}^
    ]{gitexinfo}

git --no-pager log -1 --date=short --pretty=format:"%GitInfoFormat%" HEAD > .git/gitHeadInfo.gin

for %%G in ("*.tex") DO (call :singlefile "%%G")
goto :eof

:singlefile
echo compiling %1
latexmk -xelatex -bibtex- -silent -auxdir=output -outdir=output %1
goto :eof

目前,$FIRSTTAG$RELTAG不适用于此,但我目前不需要它们。而且我认为我可以使用提交日期。

在此环境下,工作流程将是:

  1. 做出改变。
  2. 用 测试结果make.bat
  3. 提交更改。
  4. 用 编译make.bat

谢谢。

答案2

这是与一起运行的替代解决方案gitinfo2。因此我真的很喜欢gitinfo2;所提出的钩子机制从未让我满意。

Lie Phersho,我最终制作了 Makefile 和 shell 脚本,但它们无法被我的 LaTeX 编辑器正确处理,并且无法在所有平台上运行。

最后,我最终为 编写了一种插件latexmklatexmk这是一款出色的工具,可以很好地处理 LaTeX 的多次编译运行以及参考书目。最后但并非最不重要的是,latexmk它可以与大多数 LaTeX 编辑器配合使用。

gitinfo2-latexmk此插件名为GitHub

免责声明:我是该插件的作者。

设置非常简单:

  • 下载插入 gitinfo2.pm(Perl 模块)
  • .latexmkrc在您的文件中添加一行

一旦完成这两个小步骤,就不再需要样板了。每次您或您的 LaTeX 编辑器运行 时latexmk,git 信息就已为包准备好了gitinfo2

相关内容