Мне нечего сказать об использовании Hg
, но я решил поделиться некоторыми раздражающими проблемами, связанными с использованием git
для моих латексных файлов (я предполагаю, что hg будет вести себя так же).
VCS, вероятно, изначально были разработаны для управления версиями кода, и обычно у вас есть одно предложение на строку.Однако для латексных и других текстовых документов естественно написать полный абзац текста, не разбивая каждую строку на отдельное предложение.Таким образом, любое изменение слова в абзаце сдвигает позиции всех других следующих слов в абзаце, и когда вы делаете 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}
После создания первоначального коммита и внесения небольшого изменения выведите: 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}
Здесь каждое предложение получает свою собственную строку.Если вы скомпилируете оба латексных примера, в выходных данных не будет никакой разницы.Это потому, что латекс автоматически ставит пробел после точки и игнорирует разрыв строки.Теперь, когда вы сделаете изменение в строке и измените его, git выделит только эту строку, а не весь абзац.Это то, что я постепенно начал делать, хотя поначалу было неприятно, что я не мог читать абзац непрерывно.