2011-02-19 14 views
10

C'è un modo per scaricare a livello di programmazione un singolo file da un repository Mercurial remoto, in Java? Ho chiesto un very similar question regarding git; ora spero di poter fare qualcosa di simile anche con mercurial.Ottieni un singolo file da un repository mercurial remoto

  1. Preferisco una soluzione che utilizzi la larghezza di banda minima possibile, preferibilmente solo scaricando quel singolo file. Non ho bisogno di sfogliare il repository, ho già il percorso del file.
  2. Non mi interessa la cronologia del file, voglio solo la sua ultima versione.
  3. Una soluzione che stampa solo il file sull'output è ottima, ovviamente - non è necessario salvare il file sul disco, posso farlo da solo.
  4. Preferisco una soluzione che non dipenda da altre applicazioni (ad esempio un'installazione di un client mercurial sulla macchina). Una libreria Java che contenga un'implementazione mercuriale del client stessa sarebbe ottimale. Tuttavia, invocherò felicemente hg se non c'è altro modo.

Da quello che ho capito su come funziona Mercurial - permettendo di lavorare solo contro i repository locali - questo potrebbe rivelarsi problematico; ma siccome ero in grado di farlo con Git SCM simile, spero che ci sia anche una soluzione per Mercurial.

risposta

10

Il mercurial wire protocol non ha un comando per leggere un singolo file da un repository remoto. Ecco perché il client della riga di comando hg non può farlo neanche. L'idea è che dovresti sempre creare un clone locale per queste cose.

Tuttavia, le varie interfacce Web per Mercurial in genere hanno un modo per ottenere il contenuto del file. Ad esempio, per i repository bitbucket l'URL è simile al seguente:

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

Per l'interfaccia hg serve web, l'URL assomiglia a questo:

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

In aggiunta a ciò, se avete bisogno di accedere pronti contro termine private su bitbucket, hanno un api: http://confluence.atlassian.com/display/BITBUCKET/Using+the+ API Bitbucket + REST + – dave

+2

Per l'interfaccia Web 'hg server', non è necessario conoscere la revisione. Puoi usare 'tip' invece del numero di revisione. – Benjamin

2

L'API Bitbucket REST è lo strumento che si desidera per questo.

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

Esempio dal loro docs:

Invece di ottenere il file formattato come JSON, è possibile ottenere il grezzo del file:

$ ricciolo tempo https://api.bitbucket.org/1.0/repositories/jespern/django-piston/raw/tip/piston/utils.py importazione da django .http import HttpResponseNotAllowed, HttpResponseForbidden, HttpResponse, HttpResponseBadRequest da django.core ....

Problemi correlati