В репозитории 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 для этой ветви