Come open-source un progetto il cui repository git ha supporti protetti da copyright nella storia?


15

Voglio rilasciare un progetto software di impronte digitali audio con una licenza gratuita, ma il repository contiene file audio protetti da copyright. Anche i casi di test attualmente utilizzano questi file. Come rilasciare il codice al pubblico con la cronologia delle versioni massima ma senza violare il copyright?

Dettagli:

  • Il codice è versionato sotto git. Comprimeremo tutto in un ramo prima del rilascio.
  • Ci sono 400 MB di dati audio. Alcuni file sono musica con licenza gratuita, ad esempio Jamendo, altri sono MP3 delle nostre raccolte personali.
  • Indipendentemente dall'approccio che adottiamo, conserveremo sempre una copia immutabile del repository originale, in modo da non distruggere la storia del progetto.

Domanda principale: come gestire la versione pubblica?

  1. Espelle tutta la cronologia dei file in questione dal repository git e rilascia il repository modificato. (v64 ha indicato un modo per farlo.)
  2. In alternativa, scatta un'istantanea dell'attuale stato del codice e non preoccuparti nemmeno di avere una cronologia pubblica del codice pre-release.

Domanda a margine: come abbiamo potuto evitare questo dilemma in primo luogo, dato che a volte il codice privato o i media sono necessari per le prime fasi di un progetto?

Risposte:


13

GitHub ha una pagina che spiega come espellere un file da tutta la cronologia: rimuovere i dati sensibili .

Di tanto in tanto gli utenti commettono accidentalmente dati come password o chiavi in ​​un repository git. Sebbene sia possibile utilizzare git rmper rimuovere il file, rimarrà comunque nella cronologia del repository. Fortunatamente, git rende abbastanza semplice la rimozione del file dall'intera cronologia del repository.

Pericolo: una volta inviato il commit, è necessario considerare i dati compromessi. Se hai inserito una password, modificala! Se hai inserito una chiave, generane una nuova.

Elimina il file dal tuo repository

Ora che la password è stata modificata, si desidera rimuovere il file dalla cronologia e aggiungerlo a .gitignoreper assicurarsi che non venga ripristinato accidentalmente. Per i nostri esempi, rimuoveremo Rakefiledal repository gem GitHub ...


Sembra lo strumento giusto per quel lavoro. Non sono ancora sicuro se questo abbia più senso nel mio caso rispetto a iniziare con una nuova istantanea della base di codice.
Tratta bene le tue mod

@phyzome: dipende da quanto pensi sia importante la storia. Espellere è abbastanza facile con il filter-branchcomando --- assicurati di eseguirlo su un clone del repository in quanto è distruttivo e non può essere annullato.
Sharpie,

8

Domanda a margine: come abbiamo potuto evitare questo dilemma in primo luogo, dato che a volte il codice privato o i media sono necessari per le prime fasi di un progetto?

Se stai per tracciare file multimediali di grandi dimensioni (400 MB di audio), inseriscili in un repository separato.

Questo uccide due uccelli con una fava:

  1. Il repository principale è più piccolo di 400 MB. (Le persone non devono scaricare contenuti da 400 MB ogni volta che clonano.)
  2. I media possono essere privati ​​ed è tenuto separato da tutte le altre cose. Pertanto, non è necessario alcun lavoro aggiuntivo per rilasciare il repository pubblico.

Se lo desideri, puoi renderlo più comodo da lavorare trasformando il repository multimediale in un sottomodulo del repository pubblico (che prevedi di rilasciare).

In questo modo basta tenere un puntatore ad esso, non al contenuto (sensibile) stesso (per le prime fasi di sviluppo). Quindi, quando rilascerete pubblicamente il repository, rimuovete semplicemente il riferimento al sottomodulo, che è molto meno problematico rispetto alla riscrittura della cronologia per filtrare materiale da 400 MB.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.