2010-02-24 14 views
5

Quindi, sto cercando di effettuare il checkout solo il plug-in TestNG dal repository contrib delle Netbeans. (O è modulo? Sono nuovo di Mercurial, quindi non so davvero il gergo ancora.)È possibile eseguire il checkout di una singola directory da un repository Mercurial (HG)?

Quando eseguo il seguente comando ...

hg clone http://hg.netbeans.org/main/contrib/ 

... Ottengo l'intero repository, che contiene tutti i plug-in contrib. È possibile semplicemente tirare questa posizione?

http://hg.netbeans.org/main/contrib/file/tip/testng/

Grazie!

+0

possibile duplicato di [Come posso clonare una sottocartella di un repository in Mercurial?] (Http://stackoverflow.com/questions/920355/how-do-i-clone-a-sub-folder -di-un-repository-in-mercurial) – MvG

risposta

9

Questo concetto è chiamato "clonazione stretta" e no, al momento non è possibile in Mercurial.

È sul radar di alcuni di noi che contribuiscono a Mercurial ma è un problema difficile da risolvere. Ad esempio:

  • Come si calcola l'hash di eventuali nuovi commit effettuati se non si dispone di tutti i file nel repository?
  • Cosa succede se si tenta di visualizzare la cronologia di un file in contrib/testng se tale file è stato spostato da un'altra cartella?
0

Non ne sono sicuro, ma penso che la risposta nel caso generale sia "probabilmente no".

Se il repository è locale (non suona come è nel tuo caso), si può fare qualcosa di simile:

hg archive -R /path/to/my/repo -I /path/to/my/repo/folder/i/want export-folder-name 

(Il comando avrebbe bisogno di essere qualcosa che esporta non-VC' d file, piuttosto che creare un repository parziale, dal momento che il materiale .hg viene memorizzato una volta al livello superiore, anziché in pezzi in ogni cartella come SVN.)

Tuttavia, non funziona sugli archivi remoti. Né significa "hg log", e la gente HG explained why:

immagino inviare un comando di registro -p per http://www.kernel.org/hg/linux-2.6, che è avvicina 100k di modifiche. A una differenza al secondo (un sacco di ricerca), questo sarà richiedere circa 3 ore di tempo CPU/disco sul server, non importa più di larghezza di banda . Sarebbe più veloce e più semplice per tutti solo clonare il repository e fare il log localmente.

Ho il sospetto che lo hg archive non possa funzionare in remoto per lo stesso motivo.

+0

Ci vuole un po 'più di 10 minuti per clonare il repository contrib sulla mia connessione, e non mi interessa nulla all'interno di esso ad eccezione del plugin TestNG. Non è un grosso problema dal momento che è una cosa una tantum, ma ero solo curioso di sapere se fosse possibile estrarre i metadati per l'intero repository in un solo passaggio e tirare i file effettivi per una porzione del repository in un altro passaggio . Penso che la risposta sia no. – braveterry

+0

È interessante notare che GIT sembra avere la stessa limitazione.Immagino che la progettazione di un DVCS progettato per l'efficienza nel caso comune (ad esempio, la memorizzazione di changeset anziché di file) lo renda difficile. – Ken

Problemi correlati