如何对多个项目中使用的 TeX 相关文件进行版本控制?

如何对多个项目中使用的 TeX 相关文件进行版本控制?

我已经是 TeX 的狂热用户一段时间了。我的大部分讲义和作业都是用 LaTeX 写的。这就是为什么我通常一次要处理大约六个 LaTeX 项目。随着时间的推移,我积累了大量自己的命令和环境,我将它们存储在一个文件中makros.tex。我还有一个大型.bib文件来存储文献。

由于我只想拥有该文件的中心副本,因此在过去的几个月里我使用了以下方法:

  • 将集中文件makros.tex等存储lit.bib在名为includes
  • 创建指向该文件夹的符号链接,并将此链接放入我的项目文件夹中
  • \include{includes/makros.tex}在我的项目中使用等。

现在我的问题来了:几周前我开始在我的 C++ 项目中使用 git,并且成为了它的忠实粉丝。因此,我现在也想在我的 TeX 项目中使用 git。但问题是,git 不能很好地处理符号链接。因此文件夹includes实际上并未上传。

你们是如何处理每个项目使用的文件的?我对实现以下功能的文件结构 / 工作流程非常感兴趣:

  • 这些文件仅makros.tex存储lit.bib在一个位置,即includes/我计算机的一个文件夹中。
  • 我可以将它们包含到每个项目中。
  • 当我将我的项目推送到 GitHub 或 Bitbucket 时,文件夹includes/也会被推送,这样,当朋友下载我的 repo 时,他可以编译我的笔记,而无需我将文件夹发送给他includes/

如果这很重要:我使用 Mac OS X 作为主要操作系统,使用 Ubuntu 作为辅助操作系统。

答案1

您可以使用git 子模块. 将共享代码放在一个目录中,并像往常一样创建一个 git 存储库。然后您可以将此存储库作为子模块添加到其他项目中:

git submodule add <URL> <name>

当您克隆存储库时,您可以使用开关--recursive自动拉入子模块:

git clone --recursive <URL>

使用子模块可确保代码不重复,并且可以轻松地将代码包含在其他项目中。此外,子模块是 git 的一个功能,对 GitHub 或 Bitbucket 来说不会造成任何问题。

git 子模块-手册页

相关内容