Pregunta

Una cuestión que surge durante el desarrollo Pinax está tratando con versiones de desarrollo de aplicaciones externas. Estoy tratando de llegar a una solución que no implique la incorporación de los sistemas de control de versiones. La razón de ser Prefiero no tiene que instalar todos los posibles sistemas de control de versiones en mi sistema (o fuerza que al colaboradores) y hacer frente a los problemas que puedan surgir durante la creación del medio ambiente.

Tome esta situación (saber cómo funciona Pinax será beneficioso para la comprensión):

Estamos comenzando el desarrollo de una nueva versión de Pinax. La versión anterior tiene un archivo PIP requisitos establecidos con las versiones explícitas. Un insecto entra para una aplicación externa que nos gustaría conseguir resuelto. Para conseguir que la corrección de errores en Pinax el proceso actual es simplemente hacer una versión menor de la aplicación asumiendo que tenemos el control de la aplicación. Aplicaciones que no tenemos el control que acabamos de tratar con el ciclo de liberación del autor aplicación o los obligan a realizar cambios de forma ;-) No soy muy aficionado a hacer constantemente versiones menores para correcciones de errores ya que en algunos casos me gustaría estar trabajando en nuevas características para las aplicaciones también. Por supuesto ramificación de la versión anterior es lo que hacemos y luego hacemos backports, ya que necesitamos.

Me encantaría escuchar algunas reflexiones sobre este tema.

¿Fue útil?

Solución 2

Me refería a mencionar que la solución que había considerado antes de pedir era poner un Pinax PyPI y hacer versiones de desarrollo en él. Podríamos poner un ejemplo de chishop. Ya estamos utilizando --find enlaces de pepita para apuntar a pypi.pinaxproject.com paquetes que hemos tenido que liberar a nosotros mismos.

Otros consejos

Podría manejar esto mediante el "== dev" versión especificador? Si la página de la distribución de PyPI incluye un enlace a un .tgz de la versión actual dev (como tanto github y bitbucket proporcionar automáticamente) y añadir "# huevo = project_name-dev" para el enlace, tanto easy_install y PIP utilizarán ese .tgz si se solicita dev ==.

Esto no permite a la clavija a algo más específico que "más reciente punta / cabeza", pero en muchos casos que podrían ser lo suficientemente bueno?

distribuidores fuente más abiertos (los Debians, Ubuntu'S, MacPorts, et al) utilizan algún tipo de mecanismo de gestión de parches. Así que algo como: importar el código fuente base para cada paquete, como se presenta, como una bola de alquitrán, o como una instantánea SMC. Luego administrar las modificaciones necesarias en la parte superior de la misma utilizando un gestor de parches, como colcha o colas de Mercurial . Entonces abrigarse cada paquete externo con todos los parches aplicados en un formato coherente. O tienen direcciones URL a los paquetes base y URLs a los parches individuales tiene que ser aplicados durante la instalación. Eso es esencialmente lo que DarwinPorts hace.

EDIT: Para tomar un paso más allá, se podría entonces controlar la versión del conjunto de parches a través de todos los paquetes externos y hacer que disponible como una unidad. Eso es bastante fácil de hacer con Colas de Mercurial. A continuación, se ha simplificado el problema que acaba de publicar un juego de parches utilizando un sistema SCM, con los parches aplicados localmente como anteriormente o estén disponibles para los desarrolladores para tirar y aplicar a sus copias de los paquetes de liberación de base.

Edit: No estoy seguro de que estoy leyendo bien su pregunta por lo que el siguiente puede no responder a su pregunta directamente

.

algo que he considerado, pero no han probado, está utilizando la función de congelación paquete de PIP. Tal vez el uso y distribución de que el paquete con Pinax funcionaría? Mi única preocupación sería la forma en diferentes sistemas operativos se manejan de. Por ejemplo, nunca he utilizado pip en Windows, por lo que no sabría cómo un paquete interactuaría allí.

La idea completa espero a tratar es la creación de un guión pavimentadora que controla la gestión de los haces, lo que facilita a los usuarios actualizar a versiones más recientes. Esto requeriría un poco de andamios sin embargo.

Otra opción puede ser que mantener un espejo de las aplicaciones que no controla, en un VCS consistentes, y luego distribuir sus versiones de espejo. Esto eliminaría la necesidad de que "todo el mundo" tener muchos programas diferentes instalados.

Aparte de eso, parece que la única solución real es lo que ustedes están haciendo, no hay una forma libre de problemas que he sido capaz de encontrar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top