2011-05-10 5 views
7

Estoy buscando una biblioteca de Python que pueda hacer la manipulación básica de los repositorios, pero es independiente del sistema de control de versiones de back-end.Python envoltorio para acceder a repositorios Hg, Git y posiblemente Bazar?

Por manipulación básica, me refiero a: inicializar un repositorio, agregar archivos, confirmar, extraer, pulsar, obtener el número de revisión actual.

Los usuarios de la biblioteca podrían hacer algo esto:

import dvcs_wrapper as dvcs 
dvcs.set_backend('hg') # could choose 'git', 'bzr' 

repo = dvcs.init('/home/me/my_repo') 
repo.add('/home/me/my_repo/*.py') 
repo.commit('Initial commit') 
repo.push('http://bitbucket.org/....') 
print('At revision %d' % repo.revision_num) 

Cualquier punteros a algo parecido a lo anterior? Mis búsquedas de Google aparecen nada ...

actualización: para lo que vale la pena, he comenzado a trabajar en algo como esto: code is here con unit tests para repositorios de Hg. Podría llegar a Git y Bazaar; contribuciones bienvenidas.

+0

¿Cuál es el caso de uso para esto? Suponiendo que tengo bibliotecas de Python para acceder a SVN, Mercurial y Bazaar (que hago), ¿qué hace esta biblioteca por mí? La secuencia de comandos anterior no parece realmente algo que vas a reutilizar. – stderr

+0

Tiene sentido para mí para la instalación basada en la tela de una variedad de sub-repos, que pueden ser diferentes dvcs. Actualmente convierto todo a hg, pero un contenedor genérico sería útil. –

+1

@Mike: el caso de uso es el código de Django que acciona un sitio web de fragmento de código. Los usuarios de la web revisan los fragmentos y los almacenan en un VCS para rastrear el historial. Los operadores de sitios web que usan este código pueden preferir un DVCS sobre otro. Otro caso de uso que tuve el año pasado fue el software para la administración de documentos (escribir libros en ReStructuredText). Algunos autores prefieren Git over Hg over Bazaar, etc. Prefiero escribir el código una vez, y pueden elegir su DVCS en la configuración del software. –

Respuesta

4

Creo que no tiene suerte.

Hay envolturas de Python para git pero de acuerdo con this la calidad sigue siendo inferior a la óptima. Hg y bzr son proyectos de Python, pero su infraestructura es bastante diferente, por lo que la integración del nivel API no es fácil. También diferentes SCM tienen diferentes filosofías de diseño, lo que hace que un envoltorio unificado sea menos plausible.

Dicho esto, si necesita un envoltorio simple, puede usar el módulo subprocess y ajustar las líneas de comando para obtener el resultado que desea.

+0

¡esa es la respuesta que esperaba no escuchar! Terminé el contenedor de Mercurial para un proyecto (https://bitbucket.org/kevindunn/ucommentapp/src/c0b839e548b7/hgwrapper.py) usando 'subprocess', supongo que tendré que escribir los wrappers para Git y Bazaar usando un similar Enfoque de línea de comandos –

+0

@Kevin ¿Va a hacer que su contenedor esté disponible cuando esté listo (por ejemplo, en github)? –

+0

@Judge: ¡absolutamente! Ya está disponible un contenedor básico para Hg con algunas pruebas unitarias; consulte los enlaces en la pregunta original anterior (en la sección ** Actualización **). Pero acabo de ver la publicación de @ RyanWilcox a continuación sobre [VCS] (http://packages.python.org/vcs/), que parece hacer lo que quiero. Estoy a punto de probarlo ahora ... –

5

También está el módulo de VCS, que anuncia:

VCS capa de abstracción sobre los diferentes sistemas de control de versiones. Es diseñado como una biblioteca de Python rica en funciones con API limpia.

+0

gracias por el puntero. Su documentación indica que ya tienen backends de Git y Mercurial, ¡exactamente los dos que necesito! –

Cuestiones relacionadas