У меня есть несколько репозиториев Подверсии, которые похожи:
/Core
/trunk
/External
/LibraryA
- LibraryA.dll
- LibraryA.pdb
/LibraryB
- LibraryB.dll
- LibraryB.pdb
/Website
/trunk
/Website
...
/Bin
...
Я хотел бы ввести файлы, содержавшиеся в/Core/trunk/External/LibraryA и/Core/trunk/External/LibraryB в папку использование/Website/trunk/Website/Bin svn:externals использование следующих строк:
Когда я добавляю вышеупомянутые строки к svn:externals свойству/Website/trunk/Website папки, файлы, введенные от последней строки, перезаписывают файлы, введенные от бывшей строки, таким образом, я заканчиваю с:
/Website
/trunk
/Website
...
/Bin
- LibraryB.dll
- LibraryB.pdb
...
Кто-то может предложить правильный способ сделать его? Я хотел бы закончить с:
/Website
/trunk
/Website
...
/Bin
- LibraryA.dll
- LibraryA.pdb
- LibraryB.dll
- LibraryB.pdb
...
Если я мог бы преобразовать Веб-сайт в проект веб-приложения ASP.NET, я, возможно, имел дело с ним по-другому. При существующем положении вещей этот проект должен остаться проектом веб-сайта ASP.NET, таким образом, это - ограничение, я работаю с.
Обновление:
Для достижения, чего я хотел достигнуть я вытянул в этих двух библиотеках в их собственные папки под папкой Libraries, таким образом, что я заканчиваю со следующей структурой:
/Website
/trunk
/Website
...
/Bin
- LibraryA.dll *
- LibraryA.pdb *
- LibraryA.dll.refresh +
- LibraryB.dll *
- LibraryB.pdb *
- LibraryB.dll.refresh +
/Libraries
/LibraryA
- LibraryA.dll +
- LibraryA.pdb +
/LibraryB
- LibraryB.dll +
- LibraryB.pdb +
...
Я затем добавил эти две библиотеки к веб-сайту как ссылки, который вытягивает во всех библиотеках по мере необходимости. Когда каждый добавляет библиотеки как ссылки на проект веб-сайта ASP.NET, система создает .refresh файлы (как показано выше). Только в тех .refresh файлах нужно зарегистрироваться от папки Bin/. Все другие файлы и папки должны быть добавлены к черному списку Подверсии через svn:ignore.
Быть ясным: файлы в вышеупомянутом списке, отмеченном со звездочкой, должны быть добавлены к svn:ignore, тогда как файлы, отмеченные с +, должны быть добавлены к Подверсии.
Я сомневаюсь, что это возможно просто с помощью внешних элементов. Внешний вид просто говорит: «Автоматически проверяйте это здесь и обновляйте, когда я обновляю остальную часть репозитория». Если бы вы могли это сделать, вам бы потребовалась возможность хранить информацию о двух репозиториях в одном каталоге, а SVN этого не позволяет.
Вы могли бы подумать о создании символических ссылок NTFS на эти файлы, извлеченных где-то еще (что можно было бы сделать с помощью внешних). Вы можете использовать для этого mklink в Windows Vista и более поздних версиях. В 2000 / XP / 2003 вы можете использовать CreateHardLink для создания жесткой ссылки - вероятно, есть инструмент для этого, но я не знаю ни одного конкретного.
Конечно, вы также можете использовать жесткие ссылки в Vista и более поздних версиях, если хотите - mklink также позволяет это. Однако обратите внимание, что жесткие ссылки могут указывать только на файлы на том же томе, а символические ссылки не требуются.