
[英]How would you use a Distributed Version Control System like Mercurial or Bazaar to manage large binary files?
[英]How to use Mercurial for version control of text documents?
这不完全是一个编程问题,但我认为它比TeX 组更适合这里
我想使用版本控制来跟踪文本文件的更改(用于创建LaTeX
output。(由于我不是程序员,我对版本控制系统还没有更深入的经验。)我想使用Mercurial
为此,我正在使用 MacOS X 10.6。
这些文件是关于工作申请的,所以每个公司主要有 3 个文件:
我有几个关于实际问题的问题:
关于使用Hg
我没有什么要说的,但我想我会分享一些我在使用git
处理我的 latex 文件时遇到的一些烦人的问题(我认为 hg 的行为会相同)。
VCS 最初可能是为版本控制代码而设计的,通常每行只有一个句子。 但是,对于 Z25F7E525B5C0641E1EB1FB3BDEBEB15B5Z 等文本文档,很自然地写了一整段文本,而不会将每一行分成一个单独的句子。 因此,段落中单词的任何更改都会改变段落中所有其他后续单词的位置,并且当您执行diff
时,它表明整个段落都已更改。 当您有很多文本并且您 go 进行修订然后突出显示所有内容时,它会变得很烦人:这是一个小例子:
\documentclass{article}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque blandit lacus aliquet eros tempus non tristique nisl consectetur. Sed orci odio, viverra quis rutrum eu, eleifend eget risus. Nam elementum tempus auctor. Nunc tincidunt dui et mauris varius faucibus ultrices nulla iaculis.
\end{document}
在进行初始提交并进行小改动后,这里是diff
的 output :
我不知道我做了什么改变! 一种解决方法是使用可选的--color-words
,它将仅突出显示已更改的单词。 我通常将我的diff
设置为默认使用此选项。 您也许可以找出 mercurial 是否有类似的东西。
虽然 git 记录了整个段落被更改,但它只突出显示已更改的单词,这对我来说已经足够了。
另一种解决方案需要对编写 latex 文件的方式进行小幅更改。 考虑这个例子,从上面的一个修改。
\documentclass{article}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Pellentesque blandit lacus aliquet eros tempus non tristique nisl consectetur.
Sed orci odio, viverra quis rutrum eu, eleifend eget risus.
Nam elementum tempus auctor.
Nunc tincidunt dui et mauris varius faucibus ultrices nulla iaculis.
\end{document}
在这里,每个句子都有自己的一行。 如果同时编译 Z25F7E525B5C0641E1EB1FB3BDEBEB15B5Z 示例,则 output 将没有区别。 这是因为 Z25F7E525B5C0641E1EB1FB3BDEBEB15B5Z 在句号后自动放置一个空格,并忽略单个换行符。 现在,当您在一行中进行更改并对其进行比较时,git 将仅突出显示该行而不是整个段落。 这是我慢慢开始做的事情,虽然起初不能连续阅读一段很烦人。
首先,我会推荐两个关于 Mercurial 的免费在线资源: hginit和书Mercurial:权威指南。
现在,回答你的问题。
我将从第三个开始。 是的,可以将名称附加到修订版上,它们被称为标签。
要将现有版本提交到一个存储库中的线性历史记录中,请执行以下操作:
mkdir myNewRepo
cd myNewRepo
hg init
现在您有了一个新的存储库。 对于每个公司目录,重复以下步骤,以便将文件复制到存储库中,让 hg 知道它们,提交它们并用名称标记新修订。
cp ../oldVersionA/* .
hg add letter.tex resume.tex diploma.pdf
hg commit -m "Job application to A Inc."
hg tag companyA
请注意,您只需将每个文件路径添加到存储库一次。
我最喜欢的 Mercurial 教程由 Joel Spolsky 提供
您可以尝试使用适用于 Mac OS 的 GUI 工具,例如Murky或MacHg 。
这些将帮助您入门。
由于您只想跟踪修改的线性历史,因此在控制台中使用 Mercurial 对您来说可能很麻烦。 GUI 工具通常隐藏晦涩难懂的选项,只显示可用操作的更简单子集。
更新:Mercurial 也有一个存储库和一个工作目录。 不同之处在于 Mercurial 的存储库全部存储在本地。 没有“中央服务器”部分。 所有历史记录、标签、分支都存储在项目的 .hg 目录中。 工作目录只是给定版本的快照。 例如,您的存储库历史记录有 99 次提交。 可以将工作目录代码更新为对应于 50 次提交或 98 次提交。 因此,您可以通过指定提交号(或哈希)来“快进”或“倒回”工作目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.