Внешние SVN для подкаталогов сохраняют только конечный каталог в svn

Я пытаюсь добавить что-то вроде:

subdir
  modules
    module1ext
    module2ext
    module3NOText
  other dir not from externals

в котором subdir/modules/module{1,2}ext определены конкретно во внешних файлах, но не /subdir и /modules. Это в основном добавляет модуль{1,2}ext в репозиторий svn, но не subdir и модули.

Итак, теперь я хочу добавить каталог в подкаталог (другой каталог не из внешних) или модули (module3NOText), и я не могу, потому что родительские каталоги не находятся под svn. Должен ли я просто SVN добавить их? Не испортит ли это определение внешних характеристик?

Кроме того, допустим, я хочу изменить module1ext. Я думал удалить определение externals, а затем svn добавить этот каталог. По моему опыту, это работает, но можете ли вы сказать мне, есть ли у этого недостатки и нужно ли это делать вообще?


person Neo    schedule 19.02.2010    source источник


Ответы (1)


Вы, кажется, что-то перепутали здесь.

Ваш репозиторий должен выглядеть так:

trunk
   subdir
     modules ---------> property svn:externals with links to module1ext and module2ext
        module3NOText
   otherdirnotfromexternals

При проверке магистрали все папки (subdir, modules, module3NOTExt, otherdirnotfromexternals) находятся под контролем версий svn. Модули должны содержать два внешних модуля (если свойство svn:externals установлено правильно).

Таким образом, добавление каталога в подкаталог или модули должно выполняться через svn add.

Если вы хотите изменить внешний код, вы, вероятно, также захотите следить за возможными изменениями в исходном репозитории. Другими словами, вы хотите создать ветку.

  • если код находится в ТОМ ЖЕ репозитории, вы можете просто использовать svn copy для создания ветки и использовать svn merge
  • если код находится в другом репозитории, вы можете управлять им как филиал поставщика. В двух словах: вы импортируете код в свой собственный репозиторий, помечаете его, чтобы отметить точку, с которой вы начали, разветвляете его на свой собственный проект и вносите свои изменения оттуда. Для объединения изменений в исходном коде вы импортируете новую версию в свою ветку поставщика, снова помечаете ее и объединяете изменения в ветку вашего проекта.
person jeroenh    schedule 19.02.2010
comment
На самом деле, идея состоит в том, чтобы использовать ветки поставщика для основного репозитория (технически это ветка, но я в основном использую hg в эти дни, так что...), а затем иметь несколько репозиториев, полученных из этого ядра через svn:exports. Все слияния выполняются на уровне ядра, а затем svn:exports позаботится об их распространении. Разница между ядром и производными репозиториями заключается в дополнительных модулях. Я обнаружил, что svn:externals рассматривается как независимый репозиторий, и подкаталоги, ведущие к нему, не добавляются автоматически, вам действительно нужно добавить svn, и тогда вы получите упомянутую вами структуру. Спасибо. - person Neo; 22.02.2010
comment
@Neo, можете ли вы уточнить, что вы подразумеваете под svn:externals рассматриваются как независимые репозитории, и подкаталоги, ведущие к ним, не добавляются автоматически? Я не понимаю этого... - person jeroenh; 22.02.2010