16 февраля 2012 г.

Религия Mercurial

Обращение к новообращенному)

Вряд ли ты ранее работал с системами контроля версий.

Терминология:

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

Прими пару рекомендаций:

  1. Коммить локально после закрытия бага или выполнения таска. Ну или в любой ситуации, где, как в играх, хочется сохраниться.
  2. В конце дня, если последний коммит был удачным - пуш его в центральный репозиторий.
  3. Главное правило - все коммиты, и локальные и, тем более последний в пуше - ОБЯЗАТЕЛЬНО должны собираться и сильно желательно - запускаться и работать.
  4. Иногда возникает необходимость закоммититься локально, но проект не собирается. Тогда нужно это обязательно указать в комментарии к коммиту, типа: "Не собирается сборка такая-то, на ревизию не обновляться"
  5. К любому коммиту должен быть осмысленный комментарий, желательно с номером закрытого таска (или нескольких мелких). Такой, чтобы любой человек, работающий над проектом смог понять, что это за коммит. Первая строка в комментарии самая важная, старайся в ней отразить главный смысл. Последующие строки, если они потребуются, могут раскрывать суть более подробно.
Во имя репозитория, коммита и корректного мержа, Аминь!

1 комментарий:

  1. Не увидел религиозной составляющей. Больше фанатизма и нетерпимости к другим системам контроля версий!

    ОтветитьУдалить