Мы используем
/repos/projectA/component1/trunk - branches - tags
/repos/projectA/component2/trunk - branches - tags
/repos/projectB/component3/trunk - branches - tags
/repos/projectB/component4/trunk - branches - tags
О чем я начинаю сожалеть. Это должно быть более плоским. Это было бы лучше.
/repos/projectA/trunk - branches - tags
/repos/projectB/trunk - branches - tags
/repos/component1/trunk - branches - tags
/repos/component2/trunk - branches - tags
/repos/component3/trunk - branches - tags
/repos/component4/trunk - branches - tags
Почему? Продукты (компоненты, готовое программное обеспечение) вечны. Проекты приходят и уходят. В прошлом году всего одна команда разработчиков создала продукт QUUX. В следующем году эта команда рассредоточена, и один или два человека поддержат QUUX. В следующем году будет два больших проекта расширения QUUX.
Учитывая эту временную шкалу, должен ли QUUX появляться в трех репозиториях проектов? Нет, QUUX не зависит от какого-либо конкретного проекта. Это правда, что проекты имеют рабочие продукты (документы, журналы и т. Д.), Которые являются частью выполнения работы, но не являются реальной целью работы. Следовательно, репозитории "projectX" для этого материала - вещи, которые никому не понадобятся после завершения проекта.
Я работал над одним продуктом, в котором было три команды. Большая проблема с координацией работы, потому что каждый проект самостоятельно управляет своим хранилищем. Были межгрупповые релизы и межгрупповая координация. В конце концов, это должен был быть один кусок программного обеспечения. Тем не менее, как вы можете догадаться, это были три программы со странным дублированием и избыточностью.