问题

问题

问题

我使用 LaTeX 做两件事:数学论文和写小说(因为现在谁不是业余小说家?)。根据我使用 Vimdiff(diff 作为后端)的经验,将不同的编辑集合合并在一起非常痛苦。我曾经花在合并某一章的编辑上的时间比写它的时间还多。Diff 在实际识别未更改内容方面做得很糟糕。它想删除一个段落,然后在大量其他段落中以略有不同的方式将其重新添加回来。

我发现经常发生的情况是,Diff 会错误地将一些行/段落标记为已更改,而实际上它们没有更改。这就是我的问题的根源——在误报中挣扎。Diff 建议删除完好的行,然后重新添加它们。它还有更多内容,但这就是它的要点。

但是,这是双向合并。三向合并可以缓解这种情况吗?

具体用例

  • 我写一章
  • 在该章节末尾创建一个分支,然后编辑它。
  • 我写另一章是为了给自己时间忘记我对上一章应该是什么样子的先入为主的观念(更容易杀死亲爱的并识别何时缺少细节)
  • 然后我转到上一章(未编辑),然后再次编辑它。
  • 我将这组编辑合并到第一组编辑中(这很伤人)。

所以我想在“写作”分支中写一章。这样我就可以轻松查看我的故事,无需任何编辑。这对查找回归很有用。

提交后,我将其分支到“第一个编辑分支”。我保持原始手稿不变,然后编辑 .tex 文件进行更改。

在提交第一个编辑分支后,我再次签出写作分支。这次我又写了一章。假设我刚刚编辑完第 4 章,我将开始写第 5 章。

提交写作分支后,我再次将其分支到第二个写作分支,并执行与之前相同的操作。

然后,我在写作分支中再写一章,然后再进行更多编辑。这一次,我没有分支写作分支,而是将第二组编辑和第一组编辑合并在一起。这些编辑应该有所不同,因为我在不同的时间查看它们。这对我很有用。

这是我关心的一点:合并。

问题

Git 处理得怎么样?我使用了很多注释,这似乎是 diff 混淆的主要原因。值得一提的是,latex-diff 似乎没有这些问题,大概是因为它是专门为 LaTeX 设计的。

需要说明的是,我没有任何使用 LaTeX 和 Git 的实际经验。在陷入我认为可能变得非常混乱的事情之前,我想更好地了解 Git 是否能按我想要的方式工作,或者我是否应该只是期待。

编辑/补充

我并不是说 diff 没用或者本身很糟糕,只是说它不适合做这项工作。这也不是问题的一部分。问题在于 Git。而不是 Diff。

根据我的经验,Latex-diff 效果很好。是否可以将其用作后端?或者类似的东西?它逐字逐句地进行。

这并不是要生成一个有差异的 latex 文档以供查看,就像 latex-diff 或 latex-diff-vc(vc 代表版本控制)的情况一样。我可能会寻求一种使用 latex-diff 代替 diff3(我读到 Git 使用的)的解决方案。

不管怎样,我基本上已经在使用这个工作流程了,但没有使用分支的帮助。我希望使用分支可以帮助我抑制注释文本作为版本控制的手段。

附注:这有助于改善合并:https://stackoverflow.com/questions/5587626/git-merging-within-a-line特别是achoo5000的那句一句一句的。

答案1

从您的工作流程描述来看,您有一个章节的原始版本和两个编辑版本。我在与学术合作者写作时经常遇到这个问题。我写了一份原始草稿并将其发送给两位合著者。我收到了他们经常相互冲突的建议,需要决定何时要保留(我的文本或他们的部分文本)。无论如何,这种合并总是一场噩梦。考虑以下情况:版本 B 更改了句子的开头,版本 C 更改了句子的结尾,并且两个更改都完成了相同的任务。

原版(版本 A)

“合并糟透了!”

版本 B

尼禄·格里斯尖叫道“合并糟透了!”

版本 C

“合并糟透了!”Nero Gris 尖叫道。

即使你每行只写一个句子,行级(甚至单词级)的差异也会表明添加了文本。由你来决定你更喜欢哪个版本。图形表示可能看起来像

黑灰尖叫“合并糟透了!”尼禄·格里斯尖叫道。

在我看来,这没什么帮助。我更喜欢将 B 与 A 合并以创建 A',然后将 C 与 A' 合并以创建新版本 D。

但是,合并与版本控制是两个不同的问题。一旦你搞清楚了如何将三个版本合并在一起,将它们提交到 GIT(或任何你感兴趣的 VCS)就是小菜一碟。

相关内容