答案这个问题说服我开始使用某种版本控制系统。问题是,我应该使用哪一个?首先,这主要是为了我自己,而不是为了合作。
git,SVN,mercurial……等等的优缺点是什么?
我希望能够在草稿的页眉或页脚中显示版本号。理想情况下,我希望有一个系统允许我编译文档,以便以某种方式在 pdf 输出中突出显示所选文件版本之间的差异(一种类似“跟踪更改”的行为)。并且我希望与我选择的编辑器 emacs 完美集成。
请回答每个版本控制系统的优缺点
(我已经对此进行了 CW,但正在讨论是否应该撤消它......)
答案1
首先,几乎每个常见的 VCS 都由 Emacs 扩展支持,因此这不是一个主要问题。
据我所知,唯一可以将内容输出到草稿中的 VCS 是 SVN。为此,您必须安装几个 LaTeX 包,如下所述:http://www.tug.org/pracjourn/2007-3/kalderon-svnmulti/ 这些允许您将 SVN 版本号和其他详细信息放入草稿中。没有理由说其他 VCS 无法做到这一点,但到目前为止还没有人为它们发布任何 LaTeX 包。
我不知道有任何 LaTeX 软件包允许您在 pdf 本身中跟踪更改,但它们都允许您通过各种 diff 命令对 .tex 文件执行此操作。同样,在 pdf 文件中获取它需要编写 LaTeX 软件包。
除了这些问题之外,您需要决定的主要事情是使用集中式(例如 CVS、SVN)还是分布式(例如 git、Mercurial)系统。分布式系统有许多优点,而且据我所知,与 LaTeX 一起使用没有任何缺点。首先,您无需设置服务器即可使用它们,只需在自己的机器上处理单一作者项目即可。它们还将项目的整个历史记录存储在您的本地机器上,因此即使您处于离线状态,您也始终可以访问它(我的一位合著者对此非常挑剔)。
就我个人而言,我使用 Mercurial 而不是 git,原因如下:
- Git 无疑比 Mercurial 更强大,但额外的功能主要与软件开发人员有关,并且您极不可能需要它来处理 LaTeX 文档。
- Mercurial 具有更好的用户界面,与 git 不同,大多数命令都会按照您的预期执行,您无需使用大量标志和命令行选项即可让它执行您想要的操作。(警告!Git 与 Mercurial 之争是圣战的一个例子。这是作者的个人观点,您可以自由地表示不同意,但如果您不同意,那么可能是因为您从未与不熟悉 *nix 命令行的人合作过。)
- Mercurial 有出色的文档,尤其是 Mercurial:权威指南,可在线免费获取。我找不到任何与 git 一样好的东西。
- Mercurial 让您可以轻松地在最落后的共享托管服务提供商上建立存储库服务器,而这些提供商每月只需 5 美元。提供 git 存储库的标准方式需要持久进程,这意味着您可能需要支付更多的托管费用。当然,如果您运行自己的服务器或让内部 IT 人员为您完成这项工作,那么这就毫无意义了。
总而言之,与 git 相比,Mercurial 不会让那些一开始就勉强同意使用 VCS 的合作者感到害怕。