Разрабатываемый проект единовременно должен находиться в единственной системе контроля версий (VCS).Не должно быть никаких «локальных» версий, «для личного пользования», «для тестов» и т.д. Только одна версия. Казалось бы, ну что такого, если я возьму совместно разрабатываемый код и самостоятельно поведу собственную ветку. Она лично моя, никому больше не нужна, на ней я экспериментирую и отрабатываю идеи. При всей логичности этого подхода, он опасен. Дело, опять же, в человеческом факторе. Не под силу нормальному человеку помнить обо всём.
Исповедуя такой подход, вы рискуете попасть в самостоятельно расставленную ловушку.
Варианты:
- Вопрос: Я это сделал. Почему же этого нет в основной ветке? Ответ: Решение забыли синхронизировать из собственной базы в общую. Надо синхронизировать, а это трудоёмко, поскольку утекло немало воды.
- Вопрос: Я это сделал. Почему этого нет ни в основной ветке, ни в моей локальной базе? Ответ: Решение забыли перенести в общую базу, а локальную убили. Переделывать.
- Вопрос: Что за херня тут понаписана, я совсем не так делал? Ответ: Решение не забыли синхронизировать, но сделали это криво.
Я перечислил далеко не все варианты проблем, их количество тем больше, чем богаче ваша фантазия.
Но всё же, как поступить, если есть желание замутить очень серьёзный эксперимент, а выкладывать творения рук своих в общий источник нельзя? Да очень просто: в общей базе требуется стандартными средствами создать ветку для экспериментов, которую по завершении удалить, чтобы не работать с ней даже случайно. Тогда код будет можно достать для исследования, а если он пойдёт в основную ветку, то сливаться будет в автоматическом режиме, что значительно снизит вероятность ошибки.
Потому не заводите на своей машине базы VCS. Не храните архив исходников, их вы всегда сможете взять из базы. А сохранение базы в рабочем состоянии уже не ваша головная боль.
Вышесказанное не относится к Mercurial, распределенной VCS. Однако направление мысли имеет силу.
ОтветитьУдалить