Что мне делать с каталогом вендоров в отношении subversion? - PullRequest
5 голосов
/ 23 сентября 2008

Итак, у меня проблема. Я проверил свои замороженные драгоценные камни и рельсы, хотя ты не должен этого делать. Я подумал, что это легко и не так уж важно. Что ж, позже я обновил rails и при этом удалил все файлы .svn в каталогах vendor / rails. Я слышал, что на самом деле должен сделать, просто сделать что-то, что связано с svn: externals в моем каталоге vendor. Что именно мне нужно сделать, и будет ли Capistrano по-прежнему использовать мои замороженные драгоценные камни, если их нет в моем репо? Если он не будет использовать мои замороженные драгоценные камни, как я могу правильно восстановить эти файлы .svn, потому что это произойдет снова.

Спасибо!

Ответы [ 4 ]

4 голосов
/ 23 сентября 2008

Лично я неравнодушен к использованию Piston для управления каталогом поставщиков.

3 голосов
/ 23 сентября 2008
  1. Чтобы восстановить удаленные каталоги .svn, просто запустите svn update. Они вернутся.

  2. Я просто проверяю экспортированные драгоценные камни. Я использую gem unpack <gemname> в каталоге vendor/gems и svn add и commit оттуда.

  3. Что-нибудь в vendor/plugins или vendor/rails Я отслеживаю с помощью поршня. Например, вот как я получаю рельсы там:

    % piston import http://dev.rubyonrails.org/svn/rails/tags/rel_2-0-2/ vendor/rails

Для получения поршня используйте gem install piston.

Примечание. Мне нужно будет найти другое / лучшее решение для замены поршня, поскольку Rails продолжает использовать git и может не обновлять хранилище subversion.

2 голосов
/ 23 сентября 2008

Я бы посоветовал против svn: externals по двум причинам

  1. возможно, вы развертываете в среде, которая не может получить доступ к этим службам SVN

  2. что происходит, когда вы хотите развернуть и эти внешние svn отключены?

Мой совет - использовать распаковку поршней или драгоценных камней и управлять производственными зависимостями в дереве поставщиков.

1 голос
/ 23 сентября 2008

Отказ от ответственности: я не знаю Ruby / Rails, поэтому я не знаю, что такое замороженные гемы (хотя я предполагаю, что это скомпилированные двоичные файлы или токенизированный источник), но я хорошо знаю Subversion.

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

Удаление ваших файлов .svn совсем не проблема. Если каталоги с отсутствующими каталогами .svn находятся где-то внутри дерева каталогов в вашей рабочей копии Subversion (каталог, в который вы извлекли), просто удалите эти каталоги, выполните обновление svn, и они будут воссозданы.

Если во всем дереве отсутствуют файлы .svn, удалите все дерево и снова выполните проверку svn.

svn: externals похожа на "символическую ссылку". У вас есть Проект A и Проект B, который использует Проект A. Что вы делаете, это добавляете свойство svn: external, которое ссылается на каталог библиотеки проекта A, поэтому, когда вы извлекаете проект B, он автоматически помещает каталог библиотеки из проекта A в этом. Например, у меня часто есть каталог под названием "thirdparty", в котором хранятся внешние ссылки на библиотеки из других мест, включая evn: внешние ссылки на другие проекты в subversion.

Один из советов по решению проблем с версиями, подобных этой, состоит в том, чтобы иметь отдельные каталоги релизов для библиотек (или замороженных гемов), а в ваших проектах, которые в них нуждаются, используйте ссылку svn: external на соответствующий каталог релизов. По мере появления новых выпусков просто измените свойство svn: external так, чтобы оно указывало на новый каталог выпусков и svn update.

...