2011-11-30 20 views
11

Tengo un Gemfile con un repositorio git privado en el siguiente formato:Bündler: utilizar siempre la última revisión de la rama git en Gemfile

gem 'magic_beans', :git => "[email protected]:magic_beans.git', :branch => 'super_beans'

Cuando bundle install, la Gemfile.lock lo bloquea a una específica SHA revisión.

¿Puedo obtener un emulador para que siempre compruebe y use la última confirmación de SHA y/o actualice el archivo Gemfile.lock? Tenga en cuenta que cuando envío actualizaciones a la rama super_beans no estoy modificando la versión de la gema.

Lo ideal es que cada vez que ejecuto bundle compruebe el repositorio git upstream para una revisión SHA más reciente de la rama.

Respuesta

19

Esto no es cómo funciona el paquete. El objetivo es permitir el control de versiones de dependencias sin problemas. (particularmente para saber exactamente qué versión del código se implementa en un momento dado).

Si quiere la última versión, simplemente debe ejecutar.

bundle update magic_beans 

Ésta es exactamente la misma funcionalidad que si sólo decir

gem "rails" 

me gustaría sugerir, sin embargo, si usted tiene una gama de asuntos pendientes que desee actualizar a continuación, añadir un binario personalizado (decir un archivo ejecutable llamado bundle_update)

#!/usr/bin/env bash 
bundle install 
bundle update magic_beans 

a continuación, sólo hacer un ./bundle_update cuando se quiere actualizar estas cosas.

+0

Si cambio ': git' para usar un': path' en su lugar, 'bundle install' felizmente usa el SHA más nuevo cada vez. Seguiré usando 'bundle update', pero no creo que esta sea necesariamente la solución ideal. Después de todo, en mi Gemfile no estoy alcanzando un ': revision' sino un': branch'. ¡Gracias por el aporte! – pithyless

+1

Sé que esto es muy antiguo, pero la configuración de ': path' siempre se actualiza porque se carga desde un directorio, no desde un repositorio de git o una gema remota. ': path' es ideal para desarrollar dos proyectos juntos a nivel local, pero se rompe una vez que comienzas a colaborar. –

1

Puede ejecutar bundle update para actualizar todas o gemas específicas a su última versión disponible, como se indica en el docs.

¿Eso ayudaría?

+1

Supongo que si los repos de aplicaciones y gemas son de su propiedad y la gema se somete a muchos pequeños cambios, también es doloroso realizar una confirmación en la aplicación principal para apuntar a los últimos commits todo el tiempo. – lulalala

1

Después de buscar a través de los documentos que finalmente encontró la forma mágica para hacer esto:

bundle update magic_beans --source magic_beans

Eso es actualizar la gema magic_beans solamente, pero no tocar otras gemas bloqueadas. El documento sobre esto es: http://bundler.io/man/bundle-update.1.html

+0

El primer 'magic_beans' no es necesario. Puedes hacer 'bundle update --source magic_beans'. – lukeasrodgers

Cuestiones relacionadas