Mos*_*ess 5 version-control mercurial latex document version
这不是一个编程问题,但我认为它比TeX组更适合这里
我想使用版本控制保持文本文件的变化轨迹(这是用来创建LaTeX输出.(因为我不是程序员,我没有与版本控制系统,更深入的体验.)我想使用Mercurial的那,我正在研究MacOS X 10.6.
这些文件是关于作业应用程序的,因此每个公司大多有3个文件:
我有几个关于实际问题的问题:
abc*_*bcd 15
我没有任何关于使用的说法Hg,但我想我会分享一些令人烦恼的问题,我git用于我的乳胶文件(我认为hg会表现相同).
VCS最初可能是为版本代码而设计的,通常每行只有一个句子.但是,使用乳胶和其他文本文档时,编写完整段文本而不将每行分成单独的句子是很自然的.因此,段落中单词的任何更改都会改变段落中所有其他后续单词的位置,当您执行a时diff,它会显示整个段落已被更改.当你有很多的文字,你去做一个版本,然后它很烦人的一切都被高亮显示!这是一个小例子:
\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}
Run Code Online (Sandbox Code Playgroud)
在进行初始提交并进行小的更改后,以下是输出diff:

我不知道我做了什么改变!解决方法是使用可选项--color-words,它将仅突出显示已更改的单词.我通常将diff默认设置为使用此选项.你也许可以找出mercurial是否有类似的东西.

虽然git将整个段落记录为更改,但它只突出显示已更改的单词,这对我来说已经足够了.
替代解决方案需要对您编写乳胶文件的方式进行少量更改.考虑这个例子,从上面修改过.
\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}
Run Code Online (Sandbox Code Playgroud)
这里每个句子都有自己的一行.如果您编译两个乳胶示例,则输出将没有差异.这是因为乳胶会在一段时间后自动放置空格,并忽略单个换行符.现在,当你在一行内进行更改并对其进行区分时,git将仅突出显示该行,而不是整个段落.这是我慢慢开始做的事情,虽然起初不能连续阅读段落很烦人.
首先,我会推荐两个关于 Mercurial 的免费在线资源:hginit和Mercurial: The Definitive Guide 一书。
现在,回答你的问题。
我将从第三个开始。是的,可以将名称附加到修订版本,它们称为标签。
要将现有版本提交到一个存储库中的线性历史记录中,请执行以下操作:
mkdir myNewRepo
cd myNewRepo
hg init
Run Code Online (Sandbox Code Playgroud)
现在您有了一个新的存储库。对于每个公司目录,重复以下步骤,以便将文件复制到存储库中,让 hg 知道它们,提交它们并用名称标记新版本。
cp ../oldVersionA/* .
hg add letter.tex resume.tex diploma.pdf
hg commit -m "Job application to A Inc."
hg tag companyA
Run Code Online (Sandbox Code Playgroud)
请注意,您只需将每个文件路径添加到存储库一次。