Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Когда следует разбивать многомодульный проект на отдельные деревья репозитория?
В настоящее время у нас есть проект со стандартным расположением репозитория subversion:
./ствол
.
/филиал
.
/старая карга
Однако, поскольку мы движемся по пути OSGi и модульного проекта, мы закончили с:
./trunk/bundle/main
.
/trunk/bundle/modulea
.
/trunk/bundle/moduleb
./tags/bundle/main-1.0.0
.
/tags/bundle/main-1.0.1
.
/tags/bundle/modulea-1.0.0
'build' все еще довольно монолитен в том, что он строит все модули последовательно, хотя я начинаю задаваться вопросом, следует ли нам рефакторировать сборку/репозиторий на что-то более похожее:
./bundle/main/trunk
.
/bundle/main/tags/main-1.0.0
.
/bundle/main/tags/main-1.0.1
.
/bundle/modulea/trunk
.
/bundle/modulea/tags/modulea-1.0.0
В этом шаблоне я бы представил, что каждый модуль строит себя и хранит свой двоичный файл в репозитории (maven, ivy или другой путь самого репозитория subversion).
Существуют ли руководящие принципы или 'best-practices' над макетами проектов, как только они становятся модульными?
Книга Subversion содержит два раздела на эту тему:
Запись в блоге на эту тему: "Subversion Repository Layout"
Однако короткий ответ: хотя ваш пробег будет варьироваться (каждая ситуация индивидуальна), ваша схема /bundle/<project>/(trunk|tags|branches) довольно распространена и, вероятно, будет хорошо работать для вас.
Это очень зависит от личных предпочтений, но я нахожу следующую структуру подходящей для больших проектов, состоящих из многих модулей:
branches
project-name
module1
branch-name
module2
possibly-another-branch-name
branch-name-on-a-higher-level-including-both-modules
module1
module2
tags
... (same as branches)
trunk
project-name
module1
module2
Я также часто использовал эту структуру в больших репозиториях, содержащих много проектов, потому что хранение всех проектов в одном репозитории делает перекрестные ссылки на проекты и общий код между them—with history—easier.
Мне нравится использовать структуру с корневыми магистралями, тегами и папками ветвей с самого начала, потому что в моем опыте (с большими репозиториями, содержащими много проектов) многие подпроекты и модули никогда не будут иметь отдельных тегов или ветвей, поэтому нет необходимости создавать структуру папок для них. Это также облегчает разработчикам проверку всего ствола репозитория, а не получение всех тегов и ветвей (которые им не нужны большую часть времени).
Хотя я думаю, что это вопрос политики проекта или компании. Если у вас есть один репозиторий для каждого проекта или данный разработчик, скорее всего, будет работать только над одним проектом в репозитории одновременно, корневая магистраль может не иметь такого большого смысла.
Только мои два цента...
Я просто хочу подчеркнуть комментарий в документации SVN (уже цитируемый в другом ответе, в той же теме) http://svnbook.red-bean.com/en/1.4/svn.reposadmin.planning.html#svn.reposadmin.projects.chooselayout
Этот отрывок ссылается на следующую структуру : / trunk/ calc/ calendar/ spreadsheet/ … tags/ calc/ calendar/ spreadsheet/ … branches/ calc/ calendar/ spreadsheet/
"В такой компоновке нет ничего особенно неправильного, но она может показаться или не показаться интуитивно понятной для ваших пользователей. Особенно в больших многопроектных ситуациях с большим количеством пользователей эти пользователи могут быть знакомы только с одним или двумя проектами в репозитории. Но projects-as-branch-siblings имеет тенденцию ослаблять индивидуальность проекта и фокусироваться на всей совокупности проектов как на едином объекте. Но это уже социальный вопрос. Нам нравится наша первоначально предложенная схема по чисто практическим соображениям—проще спросить (или изменить, или перенести в другое место) всю историю одного проекта, когда есть один путь репозитория, который содержит всю историю—прошлую, настоящую, помеченную и разветвленную—для этого проекта и только для этого проекта."
Что касается меня, то я склонен довольно сильно соглашаться с этим и предпочитаю следующий макет: / utils/ calc/ trunk/ tags/ branches/ calendar/ trunk/ tags/ branches/ … office/ spreadsheet/ trunk/ tags/ branches/
Причина заключается просто в том, что его непрактично помечать полный набор проектов, когда нужно было бы помечать только определенное подмножество.
Давайте возьмем пример: если project-1 зависит от moduleA v1.1 и moduleB v2.3, я не хочу, чтобы новые moduleA v2.x появлялись в тегах. На самом деле, возвращаясь немного позже к этому помеченному выпуску, я был бы вынужден открыть дескриптор bundle в помеченной версии project-1, Чтобы прочитать версию moduleA, которая действительно требуется.
Более того, если мне нужно сделать конкретную резервную копию источников этого релиза на A CD, я просто хочу экспортировать этот тег, не загружая сотни мегабайт несвязанного материала.
Это были всего лишь мои два цента.
Я ответил на аналогичный вопрос в вопросе о структуре управления версиями StackOverflow . Это на самом деле подходит даже лучше здесь, так как мы делаем тяжелую разработку OSGi и имеем много пакетов. Я должен повторить комментарии Андерса Сандвига: держите trunk/tags/branches на корневом уровне, так как вы будете ветвить только ограниченный набор модулей. Он также не мешает строить модули по отдельности.
Я не буду копировать ответ, который я сделал раньше, но он полностью относится к этому вопросу.