Как ввести несколько файлов в ту же папку с помощью svn:externals

У меня есть несколько репозиториев Подверсии, которые похожи:

/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/Core/trunk/External/LibraryA@HEAD Мусорное ведро
  • /svn/Core/trunk/External/LibraryB@HEAD Мусорное ведро

Когда я добавляю вышеупомянутые строки к 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, тогда как файлы, отмеченные с +, должны быть добавлены к Подверсии.

1
задан Umar Farooq Khawaja 10 May 2011 в 13:57
поделиться

1 ответ

Я сомневаюсь, что это возможно просто с помощью внешних элементов. Внешний вид просто говорит: «Автоматически проверяйте это здесь и обновляйте, когда я обновляю остальную часть репозитория». Если бы вы могли это сделать, вам бы потребовалась возможность хранить информацию о двух репозиториях в одном каталоге, а SVN этого не позволяет.

Вы могли бы подумать о создании символических ссылок NTFS на эти файлы, извлеченных где-то еще (что можно было бы сделать с помощью внешних). Вы можете использовать для этого mklink в Windows Vista и более поздних версиях. В 2000 / XP / 2003 вы можете использовать CreateHardLink для создания жесткой ссылки - вероятно, есть инструмент для этого, но я не знаю ни одного конкретного.

Конечно, вы также можете использовать жесткие ссылки в Vista и более поздних версиях, если хотите - mklink также позволяет это. Однако обратите внимание, что жесткие ссылки могут указывать только на файлы на том же томе, а символические ссылки не требуются.

2
ответ дан 2 September 2019 в 23:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: