我正在讨论版本控制中的代码,并想指定要包含哪个版本的代码。
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"}
已制定出有用的宏这里