2015-08-10 15 views
6

Sono un contributore a un progetto molto vecchio attualmente in fase di relicensing. Ci sono solo circa 30 contributori al progetto, ma a questo punto ha quasi dieci anni; Molte di queste persone sono andate avanti e non sono sicuro di trovarle tutte.Come posso rimuovere TUTTI i contributi di qualcuno a un progetto usando git?

Il progetto utilizza attualmente git per il controllo della versione e git ha già la cronologia completa dal CVS.

Nel caso in cui non riesco a contattare qualcuno, dobbiamo rimuovere TUTTO il loro lavoro e tutto ciò che deriva da quel lavoro. C'è un modo per far sì che Git rimuova tutti i commit di una persona e qualsiasi commit che abbia toccato le righe inserite da quella persona?

+6

Questa è una misura incredibilmente drastica che deve essere presa. Cosa succede se il commit tocca un intero modulo, che era piccolo ma non ha mai avuto bisogno di essere aggiornato poiché ha eseguito correttamente la sua funzione? – Makoto

+0

La licenza lo richiede. Mi fa schifo pensare che devo distruggere dieci anni di lavoro perché qualcun altro dieci anni fa ha fatto un errore burocratico (usato GPL invece di LGPL, quando siamo un plugin DLL per un simulatore closed-source) ma tale è la legge. –

+0

Questo è piuttosto pericoloso in quanto sono sicuro che rimuovere il commit sarebbe molto distruttivo per il progetto. Non so se stai usando github/bitbucket/etc ma forse li manderai via email per vedere quali sono le tue possibilità? –

risposta

-1

Guarda il ramo del filtro git al numero http://git-scm.com/docs/git-filter-branch e la sezione "Per rimuovere i commit creati da" Darl McBribe "dalla storia:" lì. Non ho idea di come funzionerà il codice risultante, a meno che tutti questi commit filtrati siano ortogonali rispetto a tutte le altre funzionalità nel codice risultante, in modo tale che ciascuno possa essere rimosso senza avere alcuna dipendenza da commit successivi (non filtrati) rompere.

+0

Che non vola perché non rimuove le modifiche, solo i commit. L'idea è un esorcismo completo del coinvolgimento di quella persona nel progetto per motivi legali. I loro contributi sono veleno: persino un solo byte che rimane in qualsiasi forma può essere motivo di azione legale. –

+0

"NOTA le modifiche introdotte dai commit e che non vengono ripristinate dai commit successivi, si troveranno ancora nel ramo riscritto.Se si desidera eliminare le modifiche insieme ai commit, è necessario utilizzare la modalità interattiva di git rebase." – DavidN

Problemi correlati