¿Qué debo hacer con el directory del proveedor con respecto a la subversión?

Entonces tengo un problema Revisé mis gems y Rails congelados a pesar de que se supone que no debes hacer eso. Pensé que era fácil y que de todos modos no sería tan importante. Bueno, más tarde actualicé los Rails y al hacerlo borré todos los files .svn en los directorys vendor / rails. He oído que lo que realmente debería hacer es hacer algo con svn: external en mi directory de proveedores. ¿Qué es exactamente lo que tengo que hacer y voy a utilizar Capistrano mis gems congeladas si no están en mi repository? Si no usará mis gems congeladas, ¿cómo puedo regenerar esos files .svn correctamente, porque esto volverá a suceder?

¡Gracias!

  1. Para recuperar sus directorys .svn eliminados, simplemente ejecute una svn update . Ellos regresarán.

  2. Solo controlo las gems exportadas. Utilizo gem unpack <gemname> en el directory vendor/gems y svn add y commit desde allí.

  3. Cualquier cosa en el vendor/plugins o vendor/rails Puedo rastrear usando pistón. Por ejemplo, así es como obtengo los Rails:

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

Para get pistón, use la gem install piston .

Tenga en count que voy a tener que encontrar una solución diferente / mejor para replace el pistón ya que Rails continúa usando git y puede que no actualice el repository de subversión.

Personalmente, soy partidario de usar Piston para administrar el directory de proveedores.

Tendría que aconsejar contra svn: externos por dos razones

  1. es posible que se esté desplegando en un entorno que no puede alcanzar esos services svn

  2. ¿Qué sucede cuando quieres implementar y esos svn externos están caídos?

Mi consejo es usar un pistón o una gem para desempaquetar y administrar sus dependencies de producción en el tree de su proveedor.

Descargo de responsabilidad: no conozco Ruby / Rails, así que no sé qué son las gems congeladas (aunque supongo que son comstackciones binarias o fonts tokenizadas), pero conozco bien a Subversion.

Los directorys .svn solo tienen "contabilidad" de Subversion. No hay nada allí que sea irrecuperable.

Eliminar tus files .svn no es un problema en absoluto. Si los directorys con los directorys .svn faltantes se encuentran en algún lugar dentro de un tree de directorys en su copy de trabajo de subversión (el directory al que hizo un checkout), simplemente elimine esos directorys, realice una actualización de svn y se recrearán.

Si a todo el tree le faltan los files .svn, elimine todo el tree y vuelva a ejecutar svn.

svn: externals es como un "enlace simbólico". Usted tiene el Proyecto A y el Proyecto B, que usa el Proyecto A. Lo que usted hace es agregar un svn: propiedad externa que hace reference al directory de la biblioteca del Proyecto A, de modo que cada vez que revisa el Proyecto B, automáticamente coloque el directory de la biblioteca del Proyecto A en eso. Por ejemplo, a menudo tengo un directory llamado "thirdparty" que contiene lo externo a bibliotecas de otros lugares, incluyendo evn: references externas a otros proyectos en subversión.

Un consejo para resolver problemas de versión como este es tener directorys de publicación separados para las bibliotecas (o gems congeladas), y en sus proyectos que los necesiten, use una reference externa svn: al directory de publicación apropiado. A medida que salen nuevos lanzamientos, simplemente cambie la propiedad svn: external para apuntar al nuevo directory de versiones y svn update.