Как заставить SVN игнорировать каталог во внутреннем определении

Я использую subversion для размещения моего собственного репозитория для установки WordPress. Я настроил его так, что все основные файлы WordPress находятся в их собственном каталоге (называемом wordpress) и настроены на использование svn: externals для ссылки на репозиторий WordPress. Затем у меня есть собственная копия каталога wp-content (расположенного вне каталога wordpress), который не использует svn: externals. Это все работает нормально.

Когда я обновляю свой репозиторий, ядро ​​WordPress обновляется. Поскольку репозиторий WordPress содержит собственный каталог wp-content, он также обновляет этот каталог. Итак, моя файловая структура выглядит примерно так:

/
--/wordpress/   (wordpress repo)
-----/wp-admin/
-----/wp-content/
--/wp-content/  (my local repo)

В итоге у меня есть две отдельные версии папки wp-content (одна из моей репо и одна из репо WordPress). Я не хочу, чтобы один из репо WordPress (или, по крайней мере, не в этом месте). Есть ли способ установить svn, чтобы игнорировать каталог wordpress/wp-content, все еще используя определение externals?

Ответ 1

Что вы действительно задаете, так это: "Можете ли вы указать --depth для svn:externals", а ответ - нет. Внешние в настоящее время полностью рекурсивные в указанном каталоге.

Проблема 3216 запрашивает эту функциональность, но похоже, что это не скоро.

Ответ 2

Вы можете сделать отдельные внешние ссылки для каждой подпапки в ссылочном репозитории. Таким образом, если ваш внешний объект находится в репо с проектами A, B и C, и вам нужны только A и B, вы можете сделать две отдельные внешние ссылки на подпапки для A и B индивидуально.

В настоящее время я делаю это с проектом, но вы можете столкнуться с проблемами, если на самом деле вы делаете изменения для внешних и фиксируете их, поскольку изменения в двух отдельных внешних элементах не могут выполняться атомарно. Эта проблема существует, даже если оба внешних элемента фактически указывают на один и тот же репозиторий, что имеет смысл, но важно отметить при использовании этой техники.

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

Ответ 3

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

Ответ 4

Что произойдет, если вы попытаетесь удалить локальный каталог wp-content, но сделайте это через SVN? то есть.

svn rm /wordpress/wp-content

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