ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1013524 Топик полностью
RxTx (21.06.2020 19:31, просмотров: 368) ответил Constantin24 на Работаешь над одним проектом, получаешь готовые модули, классы. Переходишь к другому проекту, что-то подтягиваешь из прошлого. В нем добавляешь функционал, закрываешь баги, совершенствуешь. Вот уже третий проект, который подтягивает уже готовые исходники и вписывает свои нововедения. Тут возвращаешься к первому: ооо нет, здесь старье. Тянешь с другого проекта последнею версию. Все ок. Сделал рефакторинг(или что-то подобное, может баги исправил фичи добавил).
Кратко, как правильно организуется работа. В репозитории существуют зафисированные версии в виде отдельных "ветвей". Версия представлет собой по сути самостоятельный проект, снимок всего, что относится к проекту, втч библиотек, полностью самостоятельную отдельную ветвь разработки. Когда ведется ретроспективная доработка старой версии, код версии вместе со всеми библиотеками и ресурсами либо извлекается в свой, полностью отдельный каталог, где с кодом версии 

производится

работа как с отдельным проектом, идут коммиты, итд. Либо, если проект огромный и держать на HDD несколько версий затратно, переключение между версиями выполняется средствами системы контроля версий и так и называется, свитч, "свитчнуться". Важно то, что у версии зафиксированы свои версии библиотек (на их версии разработки), ресурсов, итд. После завершения работы с версией (поправки багов, итд) создается под-версия версии (откуда и идет нумерация вида ver 2.3.11).


Эволюция продукта, новые фичи продукта разрабатываются в точности так же. В репозитории создается новая "версия" (ветвь, по сути проект) и над ней идет работа.

(Вместе с версией всех либ, всех зависимостей)


Это же дает ответ почему во многих больших проектах внутри можно наблюдать слитые и зафиксированные версии библиотек - причины комплексные, но основная - фиксация версий эволюционирующих внешних либ.


Разные доработки перемещаются из версии в версию. Иногда например в ходе ретроспективой доработки удается исправить какой-то баг.

Делается diff между было и стало, и этот diff впиливается в текущую версию или (опционально) в старые версии.


Ключевым отличием и важным моментом для понимания является отсутствие некой общей постепенной эволюции проекта в trunk'е. Вместо этого - существуют снапшоты-версии, и вся работа ведется во-первых в них, во-вторых правки из них перетягиваются в другие снапшоты-версии, как ретроспективные, так и "текущую" разработку aka новую версию, хотя при таком способе работы понятие "текущая разработка" размывается, иногда в больших проектах случается что старая версия разрабатывается больше/быстрее даже чем текущая и идет параллельная работа в разных ветках.

Спасибо, князь. Вы настоящий дворянин. И программист.