2010-04-23 14 views
5

Ho commesso (non premuto) un sacco di file in locale (inclusi i file binari rimozione & aggiunta ...) e ora quando provo a spingere ci vuole un sacco di tempo. In realtà ho incasinato la mia cronologia dei repository locali.Come rimuovo in modo permanente i file (cancellati) dalla cronologia?

Come potrei evitare questo errore in futuro? Posso trasformare un set di revisioni locali 1-> 2-> 3-> 4 a 1-> 2 con 2 è la revisione finale del clone locale?

edit: da quando ero in fretta ho iniziato un nuovo repo remoto da zero con la versione 4. In futuro andrò con la risposta marcata come sembra più facile, ma io scavare altre soluzioni per vedere la verità. Grazie per il tuo supporto.

risposta

1

La cronologia mercuriale è immutabile, non è possibile eliminare utilizzando gli strumenti normali. È possibile, tuttavia, creare un nuovo repo senza quei file:

$ hg clone -r 1 repo-with-too-much new-repo 

che richiede solo revisioni zero ed uno dal vecchio pronti contro termine e li mette in un nuovo repo. Ora copia i file dalla revisione quattro nel nuovo repository e fai il commit.

Questo elimina tutti quei changeset interstiziali, ma tutti i repo che hai in circolazione li hanno ancora, quindi quando li riporti a pull.

In generale se avete già trasmesso un changeset che è là fuori e se non è possibile ottenere tutti con un clone di eliminarlo e reclone sei fuori di fortuna.

2

Non è chiaro dalla tua domanda se queste modifiche però spinto. Se sono ancora locali, puoi più o meno sbarazzartene facilmente. convert è un'opzione. È inoltre possibile utilizzare MQ (code mercuriali). Controlla l'articolo del wiki EditingHistory per una spiegazione dettagliata. Raccomanda che MQ sia l'approccio più semplice.

Per evitare questo tipo di errori, probabilmente si dovrebbe aggiungere un gancio di rifiutare 'cattivo' impegna, dato che è possibile descriverle programatically;)

+0

Io uso Mercurial per memorizzare il db della mia candidatura, quindi ho solo .hgignored ogni bit del db e ha commesso solo un jar. – amirouche

Problemi correlati