使用 listinputlisting 包含特定的(git)提交

使用 listinputlisting 包含特定的(git)提交

我正在讨论版本控制中的代码,并想指定要包含哪个版本的代码。

gitlatex我做了一些研究,发现了像和这样的包gitinfo,但虽然有用,但它们只适用于文档本身,当然还有listings它本身。

我不希望在文档目录中保留文件的副本,而是将它们保存在 git 控制的目录中。

答案1

可以使用 PDFLaTeXs / shellescape 功能来包含文件|(感谢@锡拉库萨感谢你向我指出\write18)。

{|"script"}通过使用文件参数 来读取命令输出源码

并且可以通过使用强制与类似软件包兼容来"替换它们\string"ngerman源码

git archive --remote=ssh://git@server/repo.git VERSION path/to/file可以使用(此处 VERSION 可以是 TAG 或 commithash 或者只是 master)检出(远程 git 存储库中的)具有指定提交的文件 源码

为了清理 ssh 连接的输出,我们通过附加 . 将 stderr 传送到垃圾箱2>/dev/null

当生成 tar 存档时git archive,我们必须通过tar从 stdin 读取来删除 tar---extract--to-stdout| tar --extract --file - --to-stdout 源码

TL:DR

对于远程文件

\lstinputlisting{|\string"git archive --remote=ssh://git@server/repo.git VERSION path/to/file 2>/dev/null | tar --extract --file - --to-stdout\string"}

对于本地文件

\lstinputlisting{|\string"git archive --remote=/path/to/.git VERSION path/to/file 2>/dev/null | tar --extract --file - --to-stdout\string"}

已制定出有用的宏这里

相关内容