Проблема в том, что в моем списке выбора могут быть данные (плюс это ' История репозитория не обязательно важна в этом частном случае. Проанализировав ...
я выиграл задачу реструктуризации / воссоздания существующего репозитория кода, используя Git или Subversion. История репозитория не обязательно важна в этом частном случае. Проанализировав ситуацию, я обнаружил некоторые проблемы с определением хорошего макета. Я прочитал много блогов и тем, но все еще не уверен, какой макет лучше всего.
Существующий репозиторий содержит набор включаемых файлов, набор библиотек, которые частично зависят друг от друга. , и многие из них зависят от набора включаемых файлов. Кроме того, есть два проекта приложений, которые зависят от набора библиотек. Более того, есть набор сценариев, которые используют одно из приложений и некоторую дополнительную информацию о конфигурации. Я нарисовал график, чтобы прояснить ситуацию:
+---------->include files
| ^
| |
library A -----> library B <----- library C <----- library D
^ ^ | ^
| | | |
| +--------------------------------+ |
| |
application 1 application 2 --------------------+
^
|
script -----> configuration information
Цель состоит в том, чтобы иметь схему, в которой каждый компонент может быть разработан как можно более независимо, и выпуск (для внешних клиентов), который содержит набор всех компонентов по адресу определенные версии тегов, так что можно вернуться в прошлое и собрать программное обеспечение для конкретного выпуска.
Я придумал следующую структуру:
trunk/
include/
lib/
library A/
library B/
library C/
library D/
app/
application 1/
application 2/
tags/
1.0/
include/
lib/
library A/
library B/
library C/
library D/
app/
application 1/
application 2/
1.1/
include/
lib/
library A/
library B/
library C/
library D/
app/
application 1/
application 2/
...
Каждый раз, когда я создаю новый выпуск, я просто копирую весь репозиторий в новый подкаталог в тегах.
Проблема с этим решением заключается в том, что библиотеки не имеют отдельных каталогов тегов для самих себя, и что я хочу иметь только выпуск, который состоит из компонентов с тегами, и это решение не отображает, какие компоненты имеют какие версии тегов в выпуске. Я подумал об использовании отдельных репозиториев, а затем создал главный репозиторий, в котором есть подкаталог релизов, где я связываю все необходимые компоненты с помощью `svn: externals 'и подкаталог определенных тегов, но разные библиотеки и включаемые файлы зависят друг от друга, и я не Не вижу, как разделить код на отдельные объекты.
Есть идеи?
=============== вопрос, продолжение 28-1-2011 ====== =========
Хорошо, я нарисовал график того, как я планирую новый макет. Цель - связать и конкретный подкаталог тегов, но разные библиотеки и включаемые файлы зависят друг от друга, и я не понимаю, как разделить код на отдельные объекты.
Есть идеи?
========= ====== вопрос продолжен 28-1-2011 ===============
Хорошо, я нарисовал график того, как я планирую новый макет. Цель - связать и конкретный подкаталог тегов, но разные библиотеки и включаемые файлы зависят друг от друга, и я не понимаю, как разделить код на отдельные объекты.
Есть идеи?
========= ====== вопрос продолжен 28-1-2011 ===============
Хорошо, я нарисовал график того, как я планирую новый макет. Цель - связать теги различных зависимостей с методом svn: externals внутри одного репозиторий, например, я бы установил svn: externals в trunk / projects / lib / library2 / dependencies on ^ / tags / projects / include / std / 1.3.
trunk/
projects/
include/
std/
lib/
library1/
dependencies/
std/ --> tags/projects/include/std/1.2
library2/
dependencies/
std/ --> tags/projects/include/std/1.2
library1/ --> tags/projects/lib/library1/1.4.3
library3/
dependencies/
std/ --> tags/projects/include/std/1.3
library1/ --> tags/projects/lib/library1/1.4
app/
application1/
dependencies/
library3/ --> tags/projects/lib/library3/1.1
application2/
dependencies/
library1/ --> tags/projects/lib/library1/2.1
application3/
dependencies/
std/ --> tags/projects/include/std/1.2
library2/ --> tags/projects/lib/library2/1.5.2
config/
configuration1/
dependencies/
application1/ --> tags/projects/app/application1/2.3
configuration2/
dependencies/
application1/ --> tags/projects/app/application1/1.6
configuration2/
dependencies/
application2/ --> tags/projects/app/application1/1.6
tags/
projects/
include/
std/
1.2/
1.3/
lib/
library1/
1.4.3/
1.4/
2.1/
library2/
1.5.2/
library3/
1.1/
app/
application1/
1.6/
2.3/
branches/
...
Остающиеся вопросы: