Обращение к новообращенному)
Вряд ли ты ранее работал с системами контроля версий.
Терминология: #
- Репозиторий (Repository)
- Папка с вложенной папкой .hg, в которой хранится вся история проекта за все время. Все репозитории равнозначны в распределенных системах контроля версий (Mercurial, Git)
- Центральный репозиторий
- репозиторий, который принято считать центральным, на который обычно отсылают локальные изменения.
- Локальный репозиторий
- репозиторий проекта у тебя на компе.
- Коммит (Commit)
- снапшот текущего состояния файлов в локальный репозиторий, сейв.
- Ревизия (Revision, rev)
- результат коммита, имеет номер и уникальный хеш. Номер иногда может не совпадать, поэтому особо на него не расчитывай
- Пуш (Push)
- отсылка всех локальных ревизий на центральный сервер
- Бранч (Branch)
- ветка кода. Может идти отдельно, параллельно другой ветке. Как правило все бранчи равнозначны. Обычно ветка образуется, когда несколько человек работают над проектом. Бранчи - вещь очень мощная и меркуриал отлично с ними работает. Ничего специально делать не нужно, они создаются сами.
- Мержинг (Merge)
- Процесс слияния веток. Делается вручную, когда возникает необходимость слить изменения с другим разработчиком.
- Конфликт (Conflict)
- при совместном редактировании одной и той же строки или части файла двумя людьми, система не может определить, какой считать правильным. Такие ситуации решаются вручную с помощью инструментов сравнения. При правильном подходе возникает крайне редко. Обычно конфликты решаются автоматически.
- Пул (Pull)
- загрузка появившихся ревизий с центрального репозитория.
- Апдейт (Update)
- переключение между ревизиями. В один момент времени активным может быть только одна ревизия, либо последняя "Working Directory"
Прими пару рекомендаций: #
- Коммить локально после закрытия бага или выполнения таска. Ну или в любой ситуации, где, как в играх, хочется сохраниться.
- В конце дня, если последний коммит был удачным - пуш его в центральный репозиторий.
- Главное правило - все коммиты, и локальные и, тем более последний в пуше - ОБЯЗАТЕЛЬНО должны собираться и сильно желательно - запускаться и работать.
- Иногда возникает необходимость закоммититься локально, но проект не собирается. Тогда нужно это обязательно указать в комментарии к коммиту, типа: "Не собирается сборка такая-то, на ревизию не обновляться"
- К любому коммиту должен быть осмысленный комментарий, желательно с номером закрытого таска (или нескольких мелких). Такой, чтобы любой человек, работающий над проектом смог понять, что это за коммит. Первая строка в комментарии самая важная, старайся в ней отразить главный смысл. Последующие строки, если они потребуются, могут раскрывать суть более подробно.
Во имя репозитория, коммита и корректного мержа, Аминь!