#git #version-control #text
#git #контроль версий #текст
Вопрос:
Кажется, что кто-то, должно быть, уже сделал это, но я не могу найти конечный продукт, который я ищу.
Использование системы контроля версий для текста является трудоемким. Вам нужны символы новой строки в конце каждого предложения и даже в середине длинных предложений. Глядя на исходный код git, кажется, что, изменив несколько процедур, которые проверяют 'n'
, должно быть возможно, чтобы git (или любая другая система контроля версий) соответствовала 'n'
шаблону '\.s'
. Однако это задача, которую нужно выполнять тщательно, иначе я вижу, что все очень плохо.
Кто-нибудь знает кого-нибудь, кто уже сделал это? Или какие-либо другие альтернативы?
Спасибо!
Комментарии:
1. Я бы посоветовал вам использовать MediaWiki для этого. Он делает этот вид сервиса (я имею в виду управление версиями prose) очаровательным. Это, конечно, PHP-приложение, но оно того стоит.
2. git работает для prose. git не требует коротких строк или дополнительных разрывов строк там, где их не было бы естественным образом.
3. Вас беспокоит отображение чистых различий или эффективное сжатие? Git должен быть в порядке с последним. Он также может выполнять различия в словах, что решит многие ваши проблемы, и он даже может передавать различия во внешний инструмент diff, если вы хотите.
Ответ №1:
Любая система контроля версий должна быть способна обрабатывать prose. Вопрос в том, насколько эффективно он может это сделать.
git diff
Команда использует что-то вроде diff -u
для отображения различий между двумя версиями файла. Если файл состоит из текста с очень длинными строками (т. Е. С большим количеством символов между 'n'
символами), то могут возникнуть некоторые трудности с осмысленным отображением различий; он может отображать две строки из 5000 символов с изменением только одного символа.
Но это не обязательно означает, что именно так git
хранятся файлы. Я не очень хорошо знаком с форматом внутреннего хранилища git, но, насколько я понимаю, он достаточно хорошо работает с двоичными файлами, которые могут содержать много мегабайт данных без 'n'
символов.
Обратите внимание, что некоторые старые системы управления версиями (SCCS, RCS), вероятно, хранят различия между версиями построчно. Но даже для таких систем в худшем случае вы будете хранить полную копию каждой версии плюс некоторые накладные расходы. Система все еще должна быть в состоянии работать должным образом.
Обратите внимание, что это git diff --word-diff
должно хотя бы частично решить проблему сравнения версий.
Комментарии:
1. Просто как примечание об очень полезном
git diff --word-diff
— эта функция была добавлена в версии v1.7.2, но в более ранних версиях вы можете использоватьgit diff --color-words
.2. Спасибо за все ответы. Я нашел комментарий Джефроми особенно полезным, и в сочетании с ответом Кита, я думаю, я понимаю, чего хочу. Мне все равно, как git выполняет различие и хранилище, я хочу, чтобы он был умным при отображении различий. Если исходный текст не имеет жесткой упаковки (в исходном тексте нет разрывов строк), то я хочу, чтобы каждое предложение (разделенное точкой) рассматривалось как отдельная единица для отображения различий.
3. Вау! Спасибо за совет, а также @MarkLongair это значительно упрощает мою работу с prose. Я просто годами мирился с этим дерьмом, не понимая, что есть решение.