Один репозиторий / несколько проектов без путаницы?
Прочитав последнюю статью Джоэла о Mercurial, я ознакомлю ее с XP как однопользовательской системой контроля версий с одним компьютером.
Однако я хотел бы проверить одну вещь: было бы проще просто создать репозиторий всех крошечных проектов, в которых я, например, храню. C:\VB.Net\, но в результате все изменения, которые я внесу в различные проекты (C:\VB.Net\ProjectA\, C:\VB.Net\ProjectB\ и т. Д.), Будут смешаны в один журнал изменений.
Но если я буду использовать один репозиторий для всех проектов, когда я буду делать различия или просматривать историю изменений, смогу ли я отфильтровать данные, чтобы видеть только изменения, относящиеся к данному проекту? Иначе, является ли создание репозиториев в каждом каталоге проекта единственным решением?
Спасибо.
4 ответа
Я бы оставил один репозиторий для каждого отдельного проекта. Накладные расходы минимальны (только один hg init
для каждого каталога исходного кода или одного щелчка правой кнопкой мыши в проводнике), и вы не запутаетесь. В конце концов, почему изменение одной программы должно влиять на историю версий совершенно не связанной?
Конечно, вы можете увидеть историю каждого файла в Repository Explorer, но я думаю, что это противоречит самой концепции управления версиями - смешивать несвязанные вещи в одном репозитории.
Правильная гранулярность для DVCS (т. Е. Репо, где можно клонировать всю историю) - это проект.
Если у вас есть несколько проектов с различным жизненным циклом разработки (то есть изменение одного не всегда влияет на другой), они должны быть в своем собственном репо.
Если кто-то использует bitbucket, он разрешает использовать только один закрытый репозиторий, поэтому вы можете поместить все свои проекты туда, если хотите, чтобы они были частными. Я хотел бы услышать комментарии об этом сценарии.
Если вы используете один репозиторий и имеете только мелкие проекты:
cd C:\VB.Net\ProjectA\
hg log *.*
В противном случае может потребоваться указать конкретные расширения файлов, чтобы избежать слишком большой рекурсии:
cd C:\VB.Net\ProjectA\
hg log **/*.cpp
Хотя это может быть немного медленным... А теги / ветки могут запутаться, если проекты действительно отдельные.
Примечание: я не думаю, "Привет, мир!" заслуживает своего собственного хранилища только потому, что он может быть "автономным".