Ответ 1
Если я понимаю вашу проблему, у вас есть:
project1/
project1/link1 -> ../../some/where/else
Если вы делаете простой svn add link1
, он добавляет запись символической ссылки в репозиторий subversion, но то, что вы пытаетесь выполнить, это получить материал в другом месте в дереве.
Если это так, то вы боретесь в неправильном направлении, вы должны сделать реальные файлы и каталоги в link1 и сделать символические ссылки целевых мест в каталог link1. Это было бы простым решением проблемы.
Другим решением было бы сделать расположение ../../some/where/else
местоположением svn в его собственном праве и сделать link1 определение внешнего источника для этого местоположения. Когда вы совершаете фиксацию в основном каталоге, внешние элементы будут переданы одновременно, что позволит сохранить информацию; однако для обеспечения синхронизации синхронизации с другим местом вам необходимо будет обновить его до той же версии, что и сохраненные данные.
В моем случае на моем рабочем столе у меня есть каталог настроек:
$HOME/settings
Это выданная копия каталога, содержащего .bashrc
, .profile
, .vimrc
, .vim
и т.д. файлы и папки из репо svn
. Все мои файлы профиля и каталоги были символическими ссылками в эту папку, например, .profile
→ settings/.profile
и т.д. Когда я вношу изменения, они отражаются в дереве svn, на который я могу вернуться, чтобы убедиться, что Я не теряю настройки конфигурации, когда я перехожу в другую систему.
Если вы действительно хотите, чтобы svn следил за символическими ссылками как hardlinks (вы не можете создавать жесткие ссылки каталога, потому что это было бы плохо), тогда вам придется взломать источник клиента svn, чтобы он сделал то, что вы хотели; но это будет кошмар для обслуживания.
Вы можете уйти от создания символической ссылки в точке монтирования привязки, направленной на цель, но у нее есть свои проблемы. Для этого вам нужно будет быть root, и это приведет к забавным записям в вашем/proc/для достижения этой цели:
mount --bind /absolute/path/to/some/where/else project1/link1