Система контроля версий, которая отслеживает отдельные файлы - PullRequest
6 голосов
/ 05 ноября 2011

До сих пор я использовал git для управления своими латексными файлами. Однако git управляет всеми латексными файлами в папке одновременно.

Что я хочу, так это система контроля версий, которая

  • дает мне историю для каждого файла отдельно
  • позволяет мне извлекать старые версии отдельных файлов, не затрагивая другие
  • позволяет создавать ветви для каждого отдельного файла, не затрагивая другие
  • присваивает теги версиям отдельных файлов

Возможно, это возможно сделать с помощью git, но я не знаю, как это сделать. Так есть ли хорошая, удобная система контроля версий для этой цели?

Возможно, мне следует добавить, что я использую Linux в качестве OS и Emacs в качестве редактора латекса.

Ответы [ 3 ]

2 голосов
/ 06 ноября 2011

Предыдущие ответы полностью FUD:

  • Все и любой текущий VCS работает с полным набором файлов в хранилище (назовите его как changeset или revision или ...), поэтому ваши требования 3-4 не являются удовлетворены как есть - ветки и теги глобальные
  • Только CVS (если мы не помним древние VCS) работает с одним файлом в качестве объекта управления, но Я настоятельно не рекомендую даже думать об использовании CVS сегодня

но

  • Если все ваши проекты однофайловые ???. Tex , вы можете использовать любой VCS - вы не увидите никакой разницы для вашего варианта использования (это , кажется, так * 1023) *)
  • Инкрементное управление версиями всего репо в случае изменения одного файла не так уж плохо и действительно облегчает жизнь - никто не беспокоится о том, «какую версию файла B мне использовать с версией N файла A»
1 голос
/ 16 марта 2017

RCS все еще доступен и все еще работает отлично (и я все еще использую его). Вариант использования - это, например, каталог 'posters' (с svg, не очень хорошо с бинарным форматом), где каждый файл большой, так что не хочу объединятьих в один hg или git dir, где они станут огромными.

Раньше я использовал SCCS, но RCS намного лучше

0 голосов
/ 05 ноября 2011

Я согласен с @BasileStarynkevitch - Git - это все, что вам нужно.

Вероятно, вам нужен только хороший графический интерфейс для Git, чтобы вам было легче видеть, что происходит.

Git предназначен для программистов, для обработки большого количества исходных файлов, распределенных по нескольким подкаталогам.Ваш вариант использования немного отличается, но вы все равно можете использовать Git для него.

Ранние системы контроля версий (RCS, SCCS) сделали то, что вы только что описали в своем вопросе - но это оказалось беспорядкомпотому что любой реальный проект обычно имеет больше, чем один файл ;-) и легко забыть проверить файл, если каждый обрабатывается его собственным контролем версий.(не делайте этого)

Поэтому вместо того, чтобы думать «Мне нужно получить предыдущую версию файла A и другую версию файла B», попробуйте подумать о создании снимков во время вашего полного проекта, когдавы используете Git.например, "мини-релизы" вашего проекта.Если ваш проект LATEX, то вы пишете книгу или публикацию - возможно, регистрируете свои изменения каждый раз, когда вы делаете обновление, и рассматриваете это как «мини-релиз» ..

Использование графического интерфейса пользователя для Git поможет вам увидеть различия между файлами, ветвями, тегами и т. Д. Git имеет функции для встраивания содержимого из более ранних версий файла в текущий файл - так что это не проблема сGit.Существуют также инструменты для просмотра и редактирования параллельных различий.

...