使用 SVN 对一些基础文档(工作申请)进行多种修改的工作流程

使用 SVN 对一些基础文档(工作申请)进行多种修改的工作流程

一段时间以来,我一直使用它pdfLaTeX来撰写求职申请,它通常包含 3 个 pdf 文档,所有文档都是用以下方式创建的LaTeX

  1. 动机信
  2. 简历和更多关于我的项目的信息
  3. 文凭、证书等

我现在注意到,使用不同版本的版本控制来记录差异或记录更改的内容会很好。

我已经svn-multi在我的论文中使用了版本控制包,但这只是一个“线性”过程,其中我保存了一个“快照”并且没有并行的不同版本。


=> 那么在以下条件下,SVN 处理这些文档的适当工作流程是什么:

  • 在 .tex 源文件中应该明确指出哪个文档/版本被用作实际文件的“模板”,但这应该不是在 pdf 中可见
    (以避免潜在雇主看到“啊,这是申请编号 323a...”)
  • 我将在我的 svn 存储库之外的“某处”为每个应用程序创建一个目录,
    -> 我认为这将由现有版本完成export- 对吗?
    (该目录还将包含有关公司、工作等信息的其他文档,这些信息不会由 svn 管理)
  • 如果文档完成了,通过‘更新’将它们保存在存储库中是否正确?
  • 我如何创建不同的“主要版本”
    (例如,一个版本专注于 IT 业务中的工作,更强调我的计算机技能,另一个版本专注于更“技术性”的工作,而这些计算机技能不会详细显示)
  • 如果我在每个应用程序的自定义目录中将 的名称更改LetterOfMotivation.tex为 ,这会给 SVN 带来问题LetterOfMotivation_CompanyXY.tex吗?
    我想当我这样做然后将其发送回存储库时,SVN会感到困惑并且不会将新文档识别为 的更改版本LetterOfMotivation.tex

抱歉,这听起来像是愚蠢的问题,但到目前为止,我还没有“真正”使用 svn 的经验。:-(

答案1

有很多问题!

大多数问题已经在 TeX-SE 上得到解答,

  1. 我不认为有 TeX 解决方案可以解决这个问题,但你可以编写自己的提交后 SVN 钩子来修改所有源文件,并在每个文件的开头添加版本字符串、提交日期和其他内容作为注释。请参阅关于如何创建存储库挂钩。诚然,这不适合胆小的人,您需要编写一两个脚本。

    另一种解决方案是将 SVN 信息保存为 PDF 元数据,然后将其发送给雇主时删除。编写元数据很容易 - 请参阅这个问题,例如。你可能需要类似pdftk(权威的 PDF 操作工具)来完成这项工作,同样使用一个小脚本。

  2. 是的,svn export如果您不想在导出的树中包含 SVN 元数据,那么这就是方法(当我将东西发送给其他人,或者想要进行不会返回到同一分支/存储库的更改时,我会这样做)。如果您愿意,您可以随时提交更改,但有关先前修订的所有信息都会在导出的树中丢失。

  3. 不!您发出svn commit将更改写入存储库的请求。svn update将更新您的本地树存储库,这将清除您所做的所有更改。对于 SVN 当前未跟踪的新文件和目录,您必须svn add先执行。

  4. 这是在存储库中维护不同分支的问题,使用 SVN 会得不偿失——除非你不介意将它们合并回去,在这种情况下没问题。SVN 手册有更多信息关于分支和合并。如果你非常关心分支,SVN 在这方面就很糟糕了——Mercurial 或其他分布式版本控制系统可以以更少的麻烦进行合并。

  5. 这是通过 完成的svn rename。不要使用操作系统提供的常规文件重命名,否则 SVN 会删除第一个版本,然后添加另一个版本,而这并不是您想要的。

    但可能有更好的方法来处理这个问题:使用 SVN 标签。标签只是特定修订版本的更具描述性的标签。例如,您的程序版本 1.0 取自修订版本 32167,而 1.1 取自修订版本 33341。您无需记住修订版本号,而是可以使用标签来准确检查用于生成特定版本的代码。您可以根据自己的情况执行相同的操作 - 为发送给公司(例如)的每个修订版本添加一个标签,Company XYZ-a然后使用常规 SVN 机制来检索您想要使用的特定版本。

现在,我正在查看这些答案,我越来越确信 SVN 不是适合您的正确版本控制系统。如果您计划进行广泛的分支和合并,并同时维护大量不同的版本,Mercurial 可能git是更好的选择。这里是 Joel Spolsky 编写的出色的 Mercurial 教程,它将以简单的术语解释您需要了解的有关 Mercurial 的所有信息。

相关内容