2013-01-22 12 views
8

Hy!Impegna in un pacchetto git

C'è un modo per ottenere un elenco di tutti i commit memorizzati in un pacchetto git senza prima clonarlo?

Ottenere le teste è facile, ma non sono riuscito a trovare un modo per ottenere un registro completo da esso.

+0

perché avete bisogno di questo? – Chronial

+0

Prima di unire il bundle al repository, vorrei verificare dove si trova il bundle (rispetto al repository). Se la sua testa è già presente nel repository o viceversa. – mat

+0

forse in tal caso sarebbe più facile aggiungere il bundle come remoto? – araqnid

risposta

7

Non è possibile senza scrivere un software specializzato per esaminare il pacchetto incluso nel pacchetto. Se il bundle è stato creato con ref negativi, è possibile che includa delta che non sono risolvibili usando solo oggetti nel bundle (il pacchetto incorporato nel bundle può essere sottile).

La clonazione del bundle (almeno per un clone nudo) dividerà i ref e indicizzerà il pacchetto, producendo un formato con cui i comandi git standard possono lavorare, quindi è il modo più semplice (in termini di integrazione) di leggilo.

Una cosa che si può fare per "visualizzare in anteprima" un pacchetto prima di unirlo è semplicemente aggiungerlo come repository remoto, e quindi è possibile recuperarlo e accedere ai riferimenti di tracciamento. Quindi, qualcosa di simile a:

git remote add bundle /path/to/bundle 
git remote update bundle 

e ora si può fare gitk master...bundle/master ecc per confrontare i rami nel bundle rispetto al vostro repo locali, e, infine, git pull bundle master a fondersi in

Una volta fatto, semplicemente. pulire con git remote rm bundle

+0

Sapete se esiste un modo per simulare un'unione (ad esempio, dire cosa succederebbe senza chiamare acutamente il comando). unire e tirare non hanno un'opzione --dry-run. – mat

+0

no, e non c'è. puoi semplicemente fare unire e poi abortire ripristinando la posizione precedente ('git reset --hard HEAD' se ti rimane un conflitto,' git reset --hard HEAD @ {1} 'se l'unione automatica ha avuto successo) – araqnid

Problemi correlati