2012-03-17 23 views
5

Estoy trabajando con symfony2 durante un tiempo y realmente no entiendo la forma correcta de trabajar con los proveedores.Comprensión de symfony2 deps

Así que aquí es lo que estoy haciendo:

tengo los deps y deps.lock archivos en mi git mientras hago caso de la totalidad proveedores de carpeta. Ahora cuando instalo la aplicación en un nuevo servidor, hago un php bin/vendors install para llevar a los proveedores al servidor. Recibo el mensaje de que tengo que usar install --reinstall y hacer eso.

Desde mi entender, las versiones ahora deberían ser exactamente las mismas que en mi máquina de desarrollo, ya que tanto deps como deps.lock son iguales. Pero parece que deps.lock se ignora (parcialmente)?

También hay un comando vendors update, que he leído no debería ser utilizado. PERO no entendí la idea de lo que realmente hace.

Así que estoy un poco confundido ahora sobre qué comando se debe usar cuándo y qué se supone que debe hacer. ¡Tal vez alguien pueda arrojar algo de luz sobre este tema! ¡Estoy especialmente interesado en la forma correcta de usar el comando de los vendedores tanto locales como en el servidor para que los vendedores tengan la versión correcta en ambos sistemas!

+0

Semi relacionado con su pregunta: le sugiero que eche un vistazo a [capifony] (http://capifony.org), que incluye una forma muy agradable de administrar implementaciones en varias máquinas al administrar 'deps'. – leek

+0

Probé capyfony, pero para ser honesto, simplemente no funciona para mí. No me gusta la forma en que gestiona las cosas y tengo otro flujo de trabajo de implementación usando git. – Sgoettschkes

Respuesta

4

instalar y actualizar tanto descargará las código de los repositorios Git especificadas en el archivo deps

instalar cheques por valores hash en que deps.lock archivos para cada biblioteca. Si encuentra algo, ejecuta la confirmación correspondiente al hash. Si no lo hace, selecciona la etiqueta o bifurcación en su deps.lock si se especifica uno y crea una entrada en el archivo deps.lock

actualización es útil cuando desea actualizar a una nueva versión de Symfony (o cualquier biblioteca en el archivo deps). Si algún día, desea actualizar, puede leer this post I wrote about the update process.

En resumen, siempre uso la actualización en todas las máquinas, e intento especificar siempre una versión para cada biblioteca, para que el entorno de producción no se actualice inesperadamente a una versión inestable.

0

Tiene descargar la edición estándar que contiene ya los vendedores, por eso se muestra este mensaje a utilizar "instalar - reinstalar"

personalmente hice ​​php bin/install-reinstall vendedores en el proyecto en despliegue

+0

No, siempre usando la versión sin proveedores. Los proveedores tampoco se agregan a mi repositorio de git y cuando lo revisé en mi servidor, no había ninguna carpeta de vendedores presente. – Sgoettschkes

4

install --reinstall es el mismo como install pero también elimina el contenido de la carpeta del proveedor antes de realizar la instalación.

vendors update actualiza todos sus proveedores a la última versión o versión especificada en su archivo deps y actualiza su archivo deps.lock. Pero rara vez lo necesita, no sabe dónde lee "no debe usarse".

Si nos fijamos en el interior archivo vendedores, se puede ver esta línea:

if (is_dir($vendorDir.'/symfony') && !is_dir($vendorDir.'/symfony/.git') && !in_array('--reinstall', $argv)) 
...Try to run ./bin/vendors install --reinstall... 

Así que tienes carpeta vendor/symfony sin .git en ella.

+1

+1, creo que la frase "no se debe utilizar" se leyó aquí: http://symfony.com/doc/current/cookbook/workflow/new_project_git.html#cookbook-managing-vendor-libraries pero significa más algo como: "no lo necesitarás" – greg0ire