В репозитории SVN всегда должны быть каталоги транка и ответвлений - а для рабочего каталога они необязательны?

Я работал над проектами, использующими svn (используя Tortoise), у которых раньше никогда не было директории "trunk", а затем перешел на использование git, и теперь две компании, в которых я работал, использовали svn... и слово trunk подходил иногда.

Из ответов в Что означают "ветвь", "тег" и "ствол" в репозиториях Subversion? Кажется, что транк на самом деле так же, как "основная ветвь", как в Git? Все ли репозитории SVN всегда имеют каталог с стволом и ветвями, а для рабочего каталога они не являются обязательными? Например, если мы

svn checkout some_svn_path/trunk .

тогда наш рабочий каталог не имеет trunk каталог вообще? (без .тогда trunk каталог будет там, но с ., trunk каталог не будет там). Но что, если позже кто-нибудь предложит использовать ветку "try-new-feature", что произойдет? Я видел в книге O'Reilly SVN, что у них будет calc проект, а затем рабочий каталог имеет trunk подкаталог, а также branches подкаталог.

1 ответ

Из URL-адресов @bahrep вы уже знаете, что Subversion (в отличие от Mercurial/Git с уже существующими ветвями для основной линии) не имеет предопределенного макета, но может иметь любой обычный макет, который является результатом только соглашения между разработчиками.

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

Ваш svn co на самом деле "извлечение некоторого поддерева репозитория в какую-то локальную папку" - локальная папка может быть любой, поддерево репозитория также может быть любым. Источник извлечения имеет только одно значение - более поздние операции не могут происходить ни с какими объектами репозитория, не находящимися в "checkouted root"

Но что, если позже кто-нибудь предложит использовать ветку "try-new-feature", что произойдет?

Ничего такого. Вы должны переключить свой WC на ​​новый корень (корень этой ветви) вместо текущего create|checkout new WC для этой ветви

Другие вопросы по тегам