Советы по структуре моего хранилища
Я прикладной математик, и недавно я присоединился к проекту, который включает разработку производственного кода для нашего научного приложения. Кодовая база не маленькая, и она развернута как часть веб-приложения.
Когда я присоединился, код чудесным образом поддерживался без системы контроля версий. На сервере была центральная папка, и исследователи копировали с нее, когда им нужно было работать с кодом. Внутри этого корневого каталога был набор каталогов с различными версиями кода, поэтому люди начинали работать над последней найденной версией и создавали новую с их модификациями.
Я создал репозиторий Mercurial, добавил в него все версии кода и убедил всех использовать его. Однако после перехода на Mercurial мы почти не чувствовали необходимости обновлять номера версий, даже жестко используя hg copy
позволяет нам вести историю изменений.
Вот где я нуждаюсь в вашем совете по передовым методам поддержки этой кодовой базы. Имеет ли смысл в RCS хранить в репо папки с разными версиями? Если мы храним одну копию нашего кода в репозитории, каков наиболее распространенный способ отслеживания версий? Файлы README? Должны ли мы хранить снимки кода за пределами версий, указанных в репозитории? Имеет ли смысл держать вещи такими, какие они есть? Какие стратегии вы используете?
Наша команда - группа ученых, и никто не имеет опыта, как поддерживать такой репо, поэтому мне интересно, что обычно делается.
2 ответа
Если вы собираетесь использовать систему контроля версий, забудьте об этих папках версий. Completly. Mercurial сделает это за вас, репозиторий - это полная история всех файлов проекта.
Обычный способ отслеживать номера версий - с помощью тегов. Вы назначаете тег с номером версии для набора изменений.
Чтобы помочь вам, в качестве "руководства по началу работы" в управлении версиями, я предлагаю эту книгу: Контроль версий по примеру. Он бесплатный и начинается с самого начала. Он рассказывает о CVCS, DVCS, основах, репозитории, базовых командах и т. Д. У него также есть несколько интересных аналогий, таких как файловая система 3D: Каталоги x Файлы x Время. Книга веселая и понятная, я очень рекомендую ее.
Я также рекомендую программное обеспечение с графическим интерфейсом, например, TortoiseHg. При повседневном использовании я провожу большую часть времени в консоли, но графический интерфейс очень удобен, особенно в начале, когда вы еще не знаете всех команд. И лучшая часть графика - у вас есть визуальная обратная связь о том, что происходит.
Это хорошее и быстрое введение в Mercurial, оно даже начинается с разговора о том, что использование папок для хранения разных версий не так уж и здорово.
Я думаю, что вы, вероятно, не на том пути, если вы используете команду hg copy, она мне никогда не нужна;)
В этом руководстве рассказывается о версии hg для командной строки, которую я лично предпочитаю. Когда вам нужен более подробный обзор вашего репозитория, вы можете запустить "hg serve" и открыть localhost:8000 в своем веб-браузере. Я предпочитаю это, а не TortoiseHG, но я понимаю, что многие люди хотят чистый инструмент с графическим интерфейсом.