Подтвердить что ты не робот

Структура папок для многих проектов в одном хранилище SVN?

Я только что создал Google Code SVN-репозиторий для хранения моих школьных проектов и домашних заданий и для облегчения перехода между школой и домом.

Созданные по умолчанию каталоги:

https://simucal-projects.googlecode.com/svn/trunk/
https://simucal-projects.googlecode.com/svn/tags/
https://simucal-projects.googlecode.com/svn/branches/

Я никогда не использовал репозиторий для нескольких проектов, но после прочтения: Один репозиторий svn или многие? Я решил использовать один репозиторий для все мои случайные школьные проекты.

Должен ли я просто реплицировать структуру папок выше, но для каждого проекта?

https://simucal-projects.googlecode.com/svn/projectA/trunk/
https://simucal-projects.googlecode.com/svn/projectA/tags/
https://simucal-projects.googlecode.com/svn/projectA/branches/

https://simucal-projects.googlecode.com/svn/projectB/trunk/
https://simucal-projects.googlecode.com/svn/projectB/tags/
https://simucal-projects.googlecode.com/svn/projectB/branches/

Это то, что делают люди с несколькими проектами в одном-репо?

4b9b3361

Ответ 1

У вас есть два варианта. Тот, который вы уже упоминали, и который должен иметь багажник для каждого проекта (вариант 1):

https://simucal-projects.googlecode.com/svn/projectA/trunk/
https://simucal-projects.googlecode.com/svn/projectA/tags/
https://simucal-projects.googlecode.com/svn/projectA/branches/

https://simucal-projects.googlecode.com/svn/projectB/trunk/
https://simucal-projects.googlecode.com/svn/projectB/tags/
https://simucal-projects.googlecode.com/svn/projectB/branches/

Вариант 2 должен состоять в том, чтобы одна соединительная линия с каждым проектом была подпапкой под туловищем:

https://simucal-projects.googlecode.com/svn/trunk/projectA/
https://simucal-projects.googlecode.com/svn/tags/projectA/
https://simucal-projects.googlecode.com/svn/branches/projectA/

https://simucal-projects.googlecode.com/svn/trunk/projectB/
https://simucal-projects.googlecode.com/svn/tags/projectB/
https://simucal-projects.googlecode.com/svn/branches/projectB/

Преимущество варианта 1 состоит в том, что вы можете разделить и пометить каждый проект независимо. Это желательно, если вам нужно развернуть каждый проект отдельно.

Вариант 2 желательно, если все проекты развернуты вместе. Это связано с тем, что вам нужно только пометить репозиторий один раз при развертывании.

Поскольку вы используете Subversion для школьных проектов, вам нужно спросить себя, нужно ли вам когда-либо отмечать вашу работу. Вы также можете спросить себя, нужно ли вам создавать ветки (возможно, вам захочется, если вы захотите немного поэкспериментировать). Вам также нужно спросить себя, счастливы ли вы объединить ВСЕ свою работу вместе как одну из того, предпочитаете ли вы гибкость разветвления каждого проекта независимо.

Эмпирическое правило, которым я всегда придерживаюсь: объединить все, что мы развертываем вместе.

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

Ответ 2

Это то, что я использую для управления домашним источником.

Где у меня есть только один первичный репозиторий.

Repository/Project1/Магистральные
Repository/Project1/Метки
Repository/Project1/Филиалы

Repository/Проект2/Магистральные
Repository/Проект2/Метки
Repository/Проект2/Филиалы

Мне нравится эта структура, очень легко ссылаться на проекты и поддерживать целостность.

Ответ 3

Пример в реальной жизни: репозиторий Apache Projects .

Ответ 4

Нет четкого ответа на этот вопрос, поскольку это зависит от того, что лучше всего подходит вашим проектам.

  1. Я бы использовал /projectA/trunk layout, если в проекте выполнялось тяжелое развитие, и все нужно разделить, поскольку между ним не так много связей (компоненты/проекты, которые стоят отдельно). Тем не менее, вы также можете использовать один SVN-репозиторий для каждого проекта. Помните, что вы не сможете проверить все проекты, используя svn co http://..../svn/, потому что это также приведет к извлечению всех тегов и ветвей из всех проектов, а не только для внешней линии.
  2. /trunk/projectA, безусловно, будет лучше, если ваши проекты/компоненты будут тесно связаны друг с другом, и вам нужно будет пометить их и отделить их от одной и той же ревизии (например, библиотека, очень близкая к основному проекту). Вы также можете использовать svn co http://.../svn/trunk/, чтобы получить все проекты в своей последней версии сундука, если хотите.

С точки зрения ремонтопригодности я почти всегда предпочитаю второй путь; но если ваши проекты станут больше и могут затянуться, было бы лучше использовать отдельные репозитории для каждого проекта.

Кроме того: проверьте, действительно ли вам нужны услуги Google Code для вашей домашней работы, потому что его цель - поддерживать OSS. Вы всегда можете использовать SVN локально или даже через SSH, чтобы вы могли также разместить свои репозитории на USB-накопителе или на каком-либо компьютере, к которому можно получить доступ удаленно; вам не нужен хостинг для этого. Также могут быть проблемы конфиденциальности.

Ответ 5

Если вы настаиваете на том, чтобы иметь только один репозиторий (я нахожусь в НЕ ЗАПРЕЩАЮТ себя) и делаю разветвление, тогда я думаю, что вы предлагаете это хорошо. Но опять же, я считаю, что SVN-репозиторий равен проекту.

Ответ 6

Одной из основных целей, которые отслеживаются при развертывании папок (при управлении версиями), является управление доступом.

Если есть необходимость в отделении команды разработчиков (кто работает на Trunk) и обслуживающей команде (кто имеет дело с веткими), эта структура хороша:

/trunk
      /Project1
      /Project2
/branches
         /Project1
         /Project2
/tags
     /Project1
     /Project2

И если мы хотим разрешить доступ каждого проекта к определенной группе пользователей, эта структура хороша:

/Project1
         /trunk
         /branches
         /tags
/Project2
         /trunk
         /branches
         /tags