2011-02-19 11 views
10

¿Hay alguna forma de descargar mediante programación un único archivo de un repositorio remoto de Mercurial, en Java? He pedido un very similar question regarding git; ahora espero poder hacer algo similar con mercurial también.Obtenga un solo archivo de un repositorio mercurial remoto

  1. Prefiero una solución que utiliza el menor ancho de banda posible, preferiblemente solo la descarga de ese único archivo. No necesito navegar por el repositorio, ya tengo la ruta del archivo.
  2. No me preocupa el historial del archivo, solo quiero su última versión.
  3. Una solución que solo imprime el archivo en la salida también es genial, por supuesto, no tiene que guardar el archivo en el disco, puedo hacerlo yo mismo.
  4. Prefiero una solución que no dependa de otras aplicaciones (por ejemplo, una instalación de un cliente mercurial en la máquina). Una biblioteca Java que contenga una implementación cliente mercurial sería óptima. Sin embargo, felizmente invocaré hg si no hay otra manera.

Por lo que entiendo acerca de cómo funciona Mercurial, lo que permite trabajar solo contra repositorios locales, esto podría ser problemático; pero como pude hacer esto con el Git SCM similar, espero que haya una solución para Mercurial también.

Respuesta

10

El mercurial wire protocol no tiene un comando para leer un solo archivo desde un repositorio remoto. Es por eso que el cliente de línea de comandos hg tampoco puede hacer esto. La idea es que siempre debes hacer un clon local para tales cosas.

Sin embargo, las diversas interfaces web para mercurial suelen tener una forma de acceder al contenido del archivo. Por ejemplo, para los repositorios Bitbucket la URL tiene el siguiente aspecto:

http://bitbucket.org/<user>/<project>/raw/<revision>/<filename> 

para la interfaz hg serve web, la URL tiene el siguiente aspecto:

http://<host>:<port>/raw-file/<revision>/<filename> 
+3

Además de que si usted necesita el acceso de las privadas de pase en bitbucket, tienen una API: http://confluence.atlassian.com/display/BITBUCKET/Using+the+ Bitbucket + REST + API – dave

+2

Para la interfaz web 'hg server', no necesita conocer la revisión. Puede usar 'tip' en lugar del número de revisión. – Benjamin

2

La API Bitbucket REST es la herramienta que desee para esto.

https://api.bitbucket/1.0/repositories/{USER}/{REPO-NAME}/raw/tip/{PATH/TO/FILE}

Ejemplo de su docs:

En lugar de obtener el archivo con formato JSON, se puede obtener la prima archivo:

$ enrollamiento tiempo https://api.bitbucket.org/1.0/repositories/jespern/django-piston/raw/tip/piston/utils.py importación de Django .http import HttpResponseNotAllowed, HttpResponseForbidden, HttpResponse, HttpResponseBadRequest desde django.core ....

Cuestiones relacionadas