Простое управление версиями для текстовых документов (Linux)

Я хотел бы указать простую систему управления версиями FOSS для простых текстовых документов.

Для более сложных (академических) текстов я с удовольствием использую LibreOffice. Но все чаще я нахожу удобным писать более простые документы (отчеты, презентации, лекции, конспекты, что угодно) в Markdown, обычно используя ReText .

Теперь моя цель — управлять версиями этих документов. Сценарий может быть таким: набросок презентации --> "законченная" версия, представленная на Событии А --> теперь переработанная --> представленная на Событии Б --> теперь появляется возможность С, для которой версия События А является лучшей. --> вытащено и выбрано для события C.

Итак, мои требования:

  • контроль версий (необходимо, очевидно!)
  • Ubuntu/Mint дружественный (PPA было бы здорово)
  • простая пометка/комментирование/маркировка «коммитов»
  • простой просмотр тегов/меток
  • простой поиск тегов/меток
  • простое «восстановление» предыдущих версий
  • возможность делать диффы
  • возможность синхронизации с разными машинами
  • простая структура каталогов/иерархия для документов

Одним из очевидных решений, о котором я знаю, было бы использование Git для управления контролем версий (и ряд других публикаций в Интернете). Я не совсем против и несколько лет случайно использовал Github как из Windows, так и из Linux (Ubuntu, Mint). Но ключевое слово там « небрежно » — и это похоже на сценарий «кувалда к ореху».

(Я также видел вопрос о « Диспетчере документов для безбумажного офиса », но, похоже, это выходит далеко за рамки моих потребностей.)

Вполне могут быть и другие варианты, и наверняка будут инструменты, о которых я никогда не слышал. Благодарен за любую помощь с этим.

Здесь есть все элементы хорошего вопроса. Тем не менее, я нахожу это немного проблематичным, потому что для меня ответ таков: да, вам нужна распределенная система управления версиями, и подойдет любая из распространенных. Выберите любой из Bazaar, Git, Mercurial или даже менее распространенный. Я не вижу отличительного фактора.
Да, я думаю, именно поэтому я не решался публиковать сообщения (сидел над этим несколько дней). Для меня ключевым вопросом является то, как эти задачи выполняются. Возможно, это связано с вопросами @Caleb о простых графических интерфейсах для git. Итак, я полагаю, что «дифференцирующим фактором» является простота использования, «простота» комментирования коммита, извлечения конкретной версии, просмотра «различий» между данными версиями и т. д. Принесет ли это нам какое-то значение?
"простота использования" - сложное требование, потому что вопрос о том, соответствует ли продукт этому требованию, в основном является мнением. Я думаю, вам нужно доказать, что обычная система управления версиями не справится с этой задачей, прежде чем просить что-то еще.
Что не так с RCS/CVS?
@DVK - если бы я знал, что такое «RCS / CVS», я был бы в лучшем положении, чтобы ответить на этот вопрос. ;) (И да, я слышал о "Google"!)
@IraBaxter - «вам нужно доказать, что обычная система управления версиями не справится с этой задачей» - почему? Разве это не делает некоторые предположения о моем личном наборе навыков или склонностях? Если в «спецификации запроса» есть что-то, что я обозначил как проблему, сообщите об этом. Но я не уверен, почему я должен демонстрировать, что «традиционная система управления версиями не справится с этой задачей»: в своем посте я ясно даю понять, что на самом деле она может , но мне все же интересно узнать, что еще варианты доступны. Это должно быть проблематично? (Реальный вопрос - не риторический!)
@David: Потому что в противном случае ответом на этот вопрос будет просто список стандартных систем контроля версий, и в этот момент ваш вопрос должен звучать так: «Какие существуют системы контроля версий (для хранения документов любого типа)?». На этот вопрос, возможно, стоит ответить в такой форме, но было бы бессмысленно отвечать на частные случаи, охватываемые общим случаем.
@Davïd, я думаю, вам следует уточнить, что вы подразумеваете под «простотой использования»; Например: я считаю командную оболочку unix полностью интуитивно понятной и простой в использовании. Я бы немедленно порекомендовал git для этой работы, потому что интерфейс командной строки очень практичен. Я совершенно уверен, что ваше мнение будет другим, но у меня нет возможности понять, что для вас «легко», потому что вы этого не писали. Несколько советов: GUI или CLI? Локальный или сетевой? Если с графическим интерфейсом: выражайте то, что вам нравится (разместите примеры на «простом» графическом интерфейсе).
Два вопроса, которые я задал об интерфейсах для новичков, не должны вас пугать! Они предназначены для людей, которые даже не могут открыть терминал, понятия не имеют, что такое уценка или разметка, и на самом деле им не так нужны функции контроля версий, как им приходится использовать функцию push в качестве замены для загрузки через FTP. .

Ответы (4)

Да, вы должны использовать git*.

Теперь позвольте мне объяснить, почему. Учитывая текущий (довольно туманный) набор критериев в вашем вопросе, ответ кажется довольно очевидным. Если бы вы знали больше, вы бы даже не задавали этот вопрос. Вы уже дошли до края обрыва, теперь вам нужно только уговорить совершить прыжок.

* Или Fossil, Mercurial, Darcs, Bazaar или другие DVCS, в зависимости от предпочитаемого вами внешнего интерфейса, который будет объяснен.

Текущая сцена и немного истории:

В основном существует три вида систем контроля версий: распределенные , неуклюжие и неуправляемые . Позвольте мне расширить эту техническую терминологию и то, как каждая из них возникла и применима к вашей ситуации.

  • неуклюжий

    Примечательные записи*: CVS, Subversion.

    Прежде чем системы DVCS покорили мир, существовали системы VCS. Их можно охарактеризовать центральным хранилищем/сервером и звездообразной структурой пользовательских рабочих областей/клиентов. Это был незаменимый ценный инструмент для того, чтобы держать команду программистов на одной волне и даже адаптироваться для других целей. Один программист может работать с несколькими системами и экспериментировать с ветвями и тегами. Они спасли много дней. Но они были неуклюжими по своей природе. Они усложняют некоторые простые задачи . Во-первых, это были накладные расходы на их настройку, необходимость в сервере и специальных протоколах для их подключения. Затем была боль от того, что ты сделал что-то не так. Достаточно сказать, что они выполнят работу для вашего варианта использования, но приведут к компромиссам, усложняющим жизнь.

  • выбитый

    Примечательная запись: RCS.

    Потому что, когда «полномасштабная» система, включающая серверы, клиенты, аутентификацию и все такое прочее, было слишком сложно проглотить, можно было использовать урезанную систему, которая жила в своем собственном маленьком пузыре. RCS сделала это, отказавшись от идеи репозитория и просто изменяя версии по одному файлу за раз. У вас была file.txtи рядом с ней file.txt,vбыла история версий. Вы можете легко создать его экземпляр для каждого файла и использовать несколько простых инструментов для работы с различиями, откатом времени и т. д.

    Теперь, прежде чем вы скажете: «Ага, это как раз то, что я искал!», прочтите, пожалуйста, потому что это уже не самый простой и не рекомендуемый способ сделать это. Легкий вход был достигнут ценой низкого операционного потолка , который наверняка рано или поздно стеснит ваш стиль.

  • распределенный

    В какой-то момент группа умных программистов решила, что с них достаточно боли, и сказала: «Мы собираемся есть торт и тоже есть». Удивительно, но им это удалось, и появились распределенные системы контроля версий. Эти системы сочетают в себе лучшее из обоих миров — полная история версий хранится в вашей локальной системе рядом с исходными файлами, а также возможность делиться своей историей и взаимодействовать с историей других удаленных репозиториев. Оказывается, в этом нет серьезных технических недостатков.

    Самым существенным барьером для некоторых магазинов оказалась гибкость. Поскольку системы не налагают произвольных ограничений на то, как вы работаете, иногда бывает болезненно мигрировать с системы, которая навязывает вам определенный рабочий процесс. Вдруг вам придется немного подумать о том, как вы хотите, чтобы ваша система работала. Многие вещи, которые раньше были обязательными (центральный узел, в котором всегда есть последние новости всех), стали обычным делом, и их можно было использовать только при желании, но вы должны сесть и сказать: «Вот как мы собираемся использовать этот инструмент».

Итак, давайте сядем и скажем, как бы вы использовали этот инструмент.

Для целей этого ответа я собираюсь придерживаться git, потому что это одна из наиболее широко распространенных систем. Его легко установить практически в любой системе (на случай, если он еще не установлен), и имеется широкий спектр доступной документации, охватывающей практически любой вариант использования. Он также расширяем и распознается многими сторонними системами и т. д. При этом он не обязательно лучше, чем его ближайший конкурент, Bazaar или Mercurial.

  • Если вы живете в экосистеме Ubuntu, вы можете взглянуть на Bazaar, потому что Canonical использует его для всего, и он хорошо интегрируется с вашей средой. Их служба панели запуска похожа на Github, но адаптирована для разработки программного обеспечения Ubuntu. Если вы планируете играть в этой экосистеме, подумайте bzrоб обучении вместо git, чтобы один инструмент работал как для вашего личного мира, так и для экосистемы, в которой вы участвуете. Если вы не работаете над проектами, координируемыми на панели запуска, я бы предложил использовать git.

  • Если кто-то из ваших коллег хорошо разбирается в Mercurial, вы можете попробовать его использовать. Это очень мощная DVCS с некоторыми преимуществами по сравнению с Git. Часто утверждается, что он быстрее для некоторых операций из-за более оптимизированного потока данных. Все инструменты упакованы в один двоичный файл, а не собраны вместе из кучи отдельных (и иногда избыточных) инструментов, таких как Git. Его можно расширять с помощью привязок Python, и можно создавать внешние системы, которые очень тесно с ним интегрируются. Эта парадигма достаточно похожа на Git, поэтому, изучив ее, вы также сможете ошибаться в репозитории git. В конце концов, однако, git сейчас является самым популярным игроком в этой области, и его использование даст вам более быстрый доступ к помощи, когда она вам понадобится.

* Приношу свои извинения всем системам VCS без названия. CVSNT, CA, CC, Perforce, Plastic, PVCS, Star, SVK, Vault, Vesta, VSS и многие другие. Ваши имена никогда не будут забыты , это уже просто память.

Как gitподходит для вашего варианта использования:

Вы упомянули, что немного использовали Github. Это здорово, но нужно помнить, что Github — это не git . Это распространенное неправильное представление о том, что они предлагают бесплатный способ войти в систему, разместив для вас ваши репозитории. На самом деле то, что они предлагают, представляет собой слой, построенный поверх git, который является частью социальных сетей и частью управления проектами. Это отличная вещь для сообщества открытого исходного кода. Вместо того, чтобы пытаться быть альтернативной системой и бороться с рынком, они блестяще использовали хороший инструмент и создали рынок, предоставляя услуги с добавленной стоимостью для корпораций и одновременно служа обществу. Но Github — это не git.

На самом деле Git можно использовать гораздо проще.

Подобно RCS, git хранит информацию о версии локально рядом с вашим контентом. Заметное отличие заключается в том, что это делается для каждого каталога, а не для каждого файла.

  • РКС:

      file1.txt
      file1.txt,v
      file2.txt
      file2.txt,v
    

    Файл ,vдля каждого файла содержит текущий список истории файла, сохраняя дельту между каждой последующей версией.

  • мерзавец:

       directory
       + file1.txt
       + file2.txt
       + .git
         + glob1
         + glob2
    

    Материалы в папке .git на самом деле имеют причудливые имена и довольно сложны, но вам не нужно об этом знать. Концептуально все, что он делает, это сохраняет различия между версиями вещей в вашем каталоге. По сути, каждый глобус представляет собой изображение того, как выглядел ваш каталог во время каждой фиксации. Много сложной математики снижает накладные расходы, так что сохраняются только дельта-данные.

Теперь это может показаться сложным, но вам действительно не нужно знать ничего из этого. Набор инструментов отслеживает все причудливые вещи для вас. Основное использование так же просто, как и RCS, но дает вам возможность расти в будущем.

Начало работы будет примерно таким:

# Change to the directory that has files you want to version.
cd ~/pathto/yourtextfiles

# Initialize git to keep track of that folder
git init

Сделанный. Сервера не нужны. Только вы и ваши файлы с контролем версий. За исключением того, что у вас пока нет файлов под наблюдением, поэтому git на самом деле ничего не наблюдает. Git не жадный в том смысле, что он не отслеживает все в папке, а только то, что вы ему сообщаете. Итак, следующий шаг — указать, какие файлы вы хотите отслеживать.

# Add some files to the system, assuming these already exist the your dir
git add file1.txt file2.txt

# Commit the changes you just made
git commit -m "initial add"

Обратите внимание, что в отличие от большинства систем, это двухэтапный процесс. Прежде чем вы зафиксируете что-то и поместите в репозиторий как новую версию, вы должны «подготовить» их. Не каждое изменение, которое вы вносите в свой рабочий каталог, автоматически считается чем-то, что вы хотите сохранить при каждом коммите. Возможно, вы изменили два файла, но хотите отметить только один.

# Edit a bunch of files
vim file1.txt
vim file2.txt
vim file3.txt

# Only mark one of them as going it your next commit
git add file2.txt

# Commit it to history
git commit -m "fixed typo"

Обратите внимание, что изменения в файле file1.txt еще не сохраняются в репозиторий, а файл3.txt пока вообще не отслеживается. Вы можете увидеть, что в ранее отслеженном файле есть неустановленные изменения, запустив git statusи что это за изменения, запустив git diff. Этот статус точки говорит вам, что вы внесли изменения в файл 1.txt и что в вашем каталоге есть неотслеживаемый файл 3.txt. Diff покажет вам изменения, которые вы внесли в файл file1.txt с момента последней подготовки и фиксации.

Один «подводный камень», о котором вы должны быть предупреждены о том, чтобы начать, чтобы он не укусил вас в будущем, заключается в том, что — потому что концепция репозитория git — это целый каталог, и изменения в файлах рассматриваются как образ этого каталога в момент времени — вам следует подумать о том, чтобы иметь отдельные репозитории для разрозненных проектов. Вместо того, чтобы создавать единый репозиторий из «Моих документов», вы должны создавать отдельные репозитории из каталогов, содержащих какое-то значимое подмножество ваших документов, будь то по теме, по формату, по проекту или что-то еще. Это упростит дальнейшую работу, когда вы захотите работать со «всеми документами, связанными с x», с другого компьютера без необходимости иметь каждый документ, который вы когда-либо создавали на этом компьютере. Гит не позволяетвы должны проверить поддерево репозитория *, это все или ничего, поэтому ошибитесь в сторону создания множества гранулированных репозиториев для тесно связанных наборов данных, по одному на каталог.

На самом деле это все, что нужно для базового использования. Оттуда почти все, что вы можете себе представить, возможно, но в этот момент вы будете задавать вопрос об использовании, а не о рекомендации программного обеспечения.

* Subversion, например, позволяла это, и я к этому привык. Это укусило меня на раннем этапе, когда я предполагал, что git позволит что-то подобное. У меня были ВСЕ мои личные файлы в одном большом репозитории svn, и я наивно предполагал, что git станет его заменой. Урок усвоен, и мои файлы лучше классифицированы.

Но командные строки пугают!

Конечно, существует множество интерфейсных графических интерфейсов, которые позволяют вам не пользоваться командной строкой и визуально представлять, что происходит с вашими файлами. Многие из них имеют сходство с IDE и могут служить точкой входа в систему управления документами, используя их для запуска вашего любимого редактора* или даже для использования встроенного редактора. Поскольку вы спросили о серверной части о том, как должны храниться ваши файлы, я дал рекомендацию использовать gitв качестве диспетчера версий, но если вы имеете в виду, как это должно выглядеть и работать с точки зрения внешнего интерфейса, вы должны спросить это как отдельный вопрос.

* Конечно gvim, хорошо подходит для этого варианта использования ;-)

В заключение:

Заходи, вода в порядке!

Один! Два! Три! Перейти git init .

Видишь, это было не так сложно.

+1. Особенно понравилось тонкое чувство юмора и обширная всесторонность. Отличная работа!
Примечание автора: в настоящее время он неполный, давайте назовем его черновиком ответа. Мне все еще нужно решить проблемы «простого выполнения ___» из исходного вопроса, и это, вероятно, будет включать в себя демонстрацию того, почему git будет обрабатывать эти случаи лучше, чем другие серверные части, указание на другую документацию для командной строки и предложение графического интерфейса это заставляет эти функции указывать и щелкать, но у меня не хватило времени.
Действительно, он все еще короткий , но я думаю, что ответ достаточно хорошо проясняет суть и решает проблемы ОП. Однако сравнение с другими инструментами является хорошим дополнением. Тем не менее, OP должен решить, примет ли он git, и последний определенно поможет с решением.
@Caleb: «Если бы вы знали больше, вы бы даже не задавали этот вопрос». Но я не знаю! И я сделал! А теперь читаю - спасибо, что уделили этому время. Это может оказаться очень полезным.
@David ... вот почему я подумал, что вопрос готов получить ответ, а не закрыт в ожидании разъяснений :)
Я не хочу слишком сильно отклоняться от темы, но я не согласен с вашей оценкой CVS и RCS. С IME CVS легче начать работу, чем с RCS, и это менее тупиковый путь. Но я бы не рекомендовал его никому, начиная с сегодняшнего дня: DCVS — это то, что нужно. Мне нравится этот ответ, но вы указываете на скользкую часть: выбор DCVS. Я также разочарован тем, что вы не упомянули SCCS в своей сноске.
@ Жиль Я действительно не хотел открывать банку с червями, то есть CVS. У него есть некоторые преимущества даже перед такими выскочками, как Subversion, а в некоторых вещах он проще, чем RCS. Я решил изложить RCS только потому, что мог разумно чрезмерно упростить его, чтобы контрастировать с тем, как gitработает на концептуальном уровне, что, как мне казалось, было важным контрастом для тех, кто только начинает. И да, я играл в вышибалу , чтобы использовать DVCS. Второй ответ или новый раздел здесь, посвященный тому, какой из них соответствует этому случаю, может быть уместным, но я недостаточно хорошо знаю Mercurial, чтобы отдать ему должное. SCSS был раньше меня!
git на самом деле не так страшен, как кажется. Баззар, с другой стороны... ну во всяком случае.
Недостатком SVN, допускающего изменения в одном подкаталоге, было то, что когда кто-то разветвлял часть дерева кода, которая не включала все зависимости этого кода, мы никогда не могли воссоздать его сборку-кандидата на выпуск.

Я бы посоветовал в этом случае использовать https://draftin.com/ , см. здесь краткий обзор конкретных функций, которые вы, возможно, захотите использовать.

Прежде чем дать подробный ответ на ваш вопрос, я хочу указать на один недостаток этого программного обеспечения, что оно предназначено для использования в Интернете. Можно использовать черновик без подключения к Интернету (см. здесь ), но он все еще нуждается в доработке — синхронизация, которая является важной функцией черновика, по-прежнему должна запускаться вручную перед выходом в автономный режим.

  1. Контроль версий: ДА , обязательно. Это основная функция черновика, и она великолепна, поскольку не мешает вам, когда вы не хотите ее видеть, но она всегда будет вам полезна, когда вы или кто-либо, с кем вы делитесь своим текстом, запутались. вместе с документом. (По умолчанию чужие правки не включаются в ваши версии документа, вы должны принять их заранее.)

  2. Совместимость с Ubuntu/Mint: ДА , в конце концов, это веб-сайт. Любой приличный браузер справится с задачей, я тестировал автономную функцию только на хроме, у которого есть PPA для Ubuntu.

  3. Простота пометки/комментирования/маркировки: НЕТ . Дело в том, что черновик должен справиться с этим за вас, позволяя вам отмечать основные и второстепенные версии ваших документов и четко указывать, кто внес правки. В этом отношении черновик не будет для вас лучшим инструментом.

  4. Простой просмотр тегов/ярлыков, поиск: не уверен . Ну, по крайней мере, если черновые наборы тегов для вас вас устраивают.

  5. Простое «восстановление» предыдущих версий: ДА . Вы можете не только восстанавливать предыдущие версии, но также можете сохранить полезные биты в обеих версиях и редактировать текущую версию, просматривая различия с любой другой версией (версиями).

  6. возможность делать diffs: YES . Иногда ошибаются (самый досадный случай — при переписывании абзаца: драфтин считает, что я заменяю каждое предложение новым, смешивая старое и новое в разнице, тогда как я предпочел бы, чтобы новый абзац был отделен от предыдущего). старый, но цветовые коды делают его менее ужасным.) Однако дифференциалы работают нормально.

  7. возможность синхронизации с разными машинами: ДА , из-за характера веб-страницы. Однако автономный режим странный и требует ручной синхронизации.

  8. простая структура каталогов/иерархия для документов: ДА, но даже слишком просто. Вы можете помещать документы в папку, но мне еще предстоит найти способ вложения папок, что является большим недостатком.

Подводя итог, черновик навязывает пользователям свой путь, и это круто, если вам это нравится (мне это нравится). Это, безусловно, заслуживает того, чтобы попробовать в вашем случае, но его очень низкая гибкость (хотя он предоставляет API, если вы занимаетесь кодированием) может ограничить его возможности.

Полезный ответ (и у вас, вероятно, достаточно представителей, чтобы отредактировать свой ответ со ссылками, если хотите). Особенно ценно то, что вы указываете на "недостатки" (например, №8), хотя они и не являются "фатальными". Одна мысль, которую я не мог найти: есть ли затраты? Кажется, это подразумевается Конфиденциальностью и Условиями использования, но не могу найти никакой другой информации.
Я использую его бесплатно, без каких-либо ограничений. При открытии веб-страницы отображается небольшое сообщение (каждый раз), чтобы я вспомнил, что могу поддержать разработчика, и указал два способа оплаты; 1. Месячная/годовая подписка. 2. Разовая покупка Подарка для себя или друга. Подарки представляют собой обзоры писателей, призванные помочь вам в конкретном письме.

Используйте « Ископаемое »

Превосходная работа @Caleb о сверхзадачах (выше) по-прежнему имеет смысл и убедительна для чтения спустя годы после того, как он опубликовал ее.

Однако, работая семь лет над созданием любимой системы, я нашел ее в Fossil . Это упоминалось один или два раза в SoftwareRecs, но, как правило, остается незамеченным (IMO).

Для этого пользователя Fossil отвечает на все преимущества, которые задокументировал Калеб в отношении системы на основе Git, и добавляет пару преимуществ для моего мозга/рабочих «привычек» . И это прекрасно отвечает моему первоначальному варианту использования/критериям (конечно):

  • Даконтроль версий (необходимо, очевидно!)
  • ДаUbuntu/Mint дружественный (PPA было бы здорово) | но PPA не нужен!
  • Дапростая пометка/комментирование/маркировка «коммитов»
  • Дапростой просмотр тегов/меток
  • Дапростой поиск тегов/меток
  • Дапростое «восстановление» предыдущих версий
  • Давозможность делать диффы
  • Давозможность синхронизации с разными машинами
  • Дапростая структура каталогов/иерархия для документов

Дополнительные преимущества

По сути, для меня есть два преимущества (но это не впечатлит опытных пользователей Git):

  1. Fossil легко размещается самостоятельно . Это также может быть верно для Git , но мне кажется, что Fossil может быть более простым самообслуживанием, чем Git. <shrug/>Хотя это не один из моих основных критериев из моего первоначального поста, я предпочитаю этот подход (т.е. не полагаюсь на сторонние сервисы).
  2. Хотя процессы очень похожи на Git , подход Fossil (опять же) кажется мне немного более упорядоченным (или простым), так что некоторые беспокойства, которые я испытывал при использовании Git на протяжении многих лет (как и я), являются не проблема.
  3. Бонус! Его также очень просто использовать на разных платформах (я регулярно переключаюсь между Ubuntu и MacOS); Опять же, Git, конечно, можно использовать и на любой платформе, но планка входа для Git на системах, отличных от Linux, кажется немного выше, чем для Fossil.
  4. Бонус 2! Fossil называют «GitHub-in-a-box», поскольку его единственный исполняемый файл (легко устанавливаемый в системах Win/MacOS/*nix) включает в себя не только контроль версий, но и отслеживание проблем, вики, форум, «чат». " как средство, и встроенный веб-интерфейс ... все в одном. Радостный! (Не то чтобы нужно было использовать эти дополнительные функции, но они, так сказать, предоставляются бесплатно.)

Ироничное замечание Калеба (наверняка!) о Fossil (среди прочего) ("Ваши имена никогда не будут забыты , это уже просто память") вряд ли относится к Fossil... это то, что управляет разработкой SQLite. , так что не собирается уходить в ближайшее время!:)

Ничего себе, моя ошибка на ископаемом. Весь смысл моей классификации систем заключался в том, чтобы рекомендовать распределенные (DVCS) системы, в то же время говоря, что нераспределенные системы VCS основаны на ограничительном принципе проектирования, что делает их устаревшими по своей сути. Fossil не принадлежал к этой группе, когда я ее писал, и мне очень жаль, если это задержало ваш поиск подходящего инструмента.
@Caleb - Наоборот! Ваш пост убедил меня, что DVCS - единственный выход. Просто, несмотря на то, что я использовал Git довольно регулярно (хотя и с перерывами) на протяжении многих лет, я никогда не чувствовал себя в полной мере комфортно, используя его. Я наткнулся на Fossil почти случайно , так и не зарегистрировав его (боюсь) из вашего списка "скоро забытых". ;) Все хорошо, и я остаюсь благодарен. :D

git — хорошее решение для контроля версий. Специально для открытого текста.

  • Изучите встроенную в ReText поддержку системы контроля версий. (не могу найти)
  • Попробуйте git интерфейсы. Мне нравится гит-кола.
  • Попробуйте внешние инструменты сравнения/слияния. Мне нравится Мелд.