我在日常研究中撰写简短的 LaTeX 文档时,对使用 VCS 来跟踪更改很感兴趣。本质上,我将 LaTeX 用作开发想法的白板,然后我在与研究顾问的每周会议上展示文档。
我对基本的 DVCS 操作有一些经验,但我无法确定适合我的环境的良好工作实践。我读过的大多数在线资料都只涉及长期的编程项目。有人对我的用例有什么好的工作实践建议吗?
一些具体问题:
我应该多久提交一次?当我开发一个想法时,并不总是清楚各个工作单元在哪里。例如,与编程不同,很难区分 API 和 UI,也不容易在功能发生变化时提交。
我是否应该使用类似版本化的 Mercurial 补丁队列来跟踪某个想法的演变,并在某个想法明确地保留下来时使用标准提交?
我经常会将多个文件放在一个存储库中,但它们或多或少是独立的。例如,这可能是解决同一问题的两种不同方法。我该如何处理这种情况?分支?多个补丁队列?子存储库?完全不同的存储库?
答案1
首先,如果你想用 LaTeX 作为白板来开发想法,你可能不想直接使用它。你可能最好使用 Org-mode 来起草你的论文。 你可以在 Org-mode 中嵌入 LaTeX这可能比直接使用 LaTeX 更有效。使用 Org-mode 进行起草的详细信息并不难学,特别是如果你已经使用过 Emacs。由于 Org-mode 将文件存储为纯文本,因此可以使用版本控制来跟踪它们。
我使用 git 来跟踪我处理的一些文档,我主要将其用作安全网。知道我所做的每个更改都可以恢复,这很棒,因为我可以对文档进行重大更改而不必担心丢失任何东西。
当私下使用版本控制时,即您是唯一提交的人,可以将其视为使用系统来命名文档的更改组。因此,要有效地使用它,您应该对文档的某一类型或特定部分进行更改,并在提交消息中相应地描述更改,例如,在对引言进行几处更改后提交,对结论的更改进行另一次提交,而不是对所有内容进行一次提交。但是,您不应该对版本控制过于拘泥,它不应该接管您编写文本的主要工作。与做出最合适的提交相比,高效工作和撰写好文本更为重要。
我的典型工作流程是,只有在我拥有包含大量内容的文档后,我才会创建一个存储库。然后我通过创建一个 dev 分支来从主分支中分支出来。我将所有新更改提交到 dev 分支,当我阅读了整个文档或进入文档更稳定的特定阶段时(例如,当我将其交给我的主管时),我将 dev 中的更改合并到主分支中。然后,对于任何新更改,我都会再次分支到 deb 分支中。我还使用 git 的标签功能来标记特定阶段,例如我发送给某人的版本,这样如果我需要,可以更轻松地找到这些阶段。
为了查看更改,我使用不同的工具。我都使用 giggle、tig 和git log
查看存储库的历史记录。为了比较版本,我主要使用 meld。
每个存储库使用一种类型的项目。将不属于同一类的东西分组会造成混乱。分支有利于制作文档的不同版本,例如将项目拆分为文章和演示文稿。
最后,以下是促使我开始使用版本控制的原因:http://www.charlietanksley.net/philtex/using-a-version-control-system/
答案2
由于 VCS 主要针对源代码,因此文件中的行的概念具有独特含义。在文本上下文中,每行应为一个句子。因此,每个句子保留一行。这将使 diff 检查更加有用。