Como código-fonte aberto um projeto cujo repositório git possui direitos autorais de mídia na história?

15

Desejo lançar um projeto de software de impressão digital de áudio sob uma licença gratuita, mas o repositório contém arquivos de áudio protegidos por direitos autorais. Os casos de teste também atualmente usam esses arquivos. Como libero o código ao público com o histórico máximo de versões, mas sem violar os direitos autorais?

Detalhes:

  • O código é versionado sob git. Vamos recolher tudo de volta em um ramo antes do lançamento.
  • Existem 400 MB de dados de áudio. Alguns arquivos são músicas licenciadas gratuitamente, por exemplo, do Jamendo, outros são MP3s de nossas coleções pessoais.
  • Independentemente da abordagem adotada, sempre manteremos uma cópia imutável do repositório original, para não destruir o histórico do projeto.

Pergunta principal: Como lidar com o lançamento público?

  1. Expurgar todo o histórico dos arquivos em questão do repositório git e liberar o repositório alterado. (v64 apontou uma maneira de fazer isso.)
  2. Como alternativa, tire um instantâneo do estado atual do código e nem se preocupe em ter um histórico público do código de pré-lançamento.

Pergunta secundária: como poderíamos evitar esse dilema em primeiro lugar, dado que, às vezes, é necessário código ou mídia privada para os estágios iniciais de um projeto?

trate bem seus mods
fonte

Respostas:

13

O GitHub tem uma página explicando como remover um arquivo de todo o histórico: Remova dados confidenciais .

De tempos em tempos, os usuários acidentalmente confirmam dados como senhas ou chaves em um repositório git. Embora você possa usar git rmpara remover o arquivo, ele ainda estará no histórico do repositório. Felizmente, o git facilita bastante remover o arquivo de todo o histórico do repositório.

Perigo: Depois que a confirmação foi enviada, você deve considerar os dados comprometidos. Se você cometeu uma senha, altere-a! Se você confirmou uma chave, gere uma nova.

Limpe o arquivo do seu repositório

Agora que a senha foi alterada, você deseja remover o arquivo do histórico e adicioná-lo ao .gitignorepara garantir que ele não seja confirmado acidentalmente. Para nossos exemplos, removeremos Rakefiledo repositório de gemas do GitHub ...

v64
fonte
Parece a ferramenta certa para esse trabalho. Ainda não tenho certeza se isso faz mais sentido no meu caso, em comparação com um novo instantâneo da base de código.
trate bem seus mods
@phyzome: Depende de quão importante você acha que a história é. A remoção é muito fácil com o filter-branchcomando --- apenas certifique-se de executá-lo em um clone do repositório, pois é destrutivo e não pode ser desfeito.
Sharpie
8

Pergunta secundária: como poderíamos evitar esse dilema em primeiro lugar, dado que, às vezes, é necessário código ou mídia privada para os estágios iniciais de um projeto?

Se você deseja rastrear grandes arquivos de mídia (400 MB de áudio), coloque-o em um repositório separado.

Isso mata dois coelhos com uma cajadada:

  1. O repo principal é 400MB menor. (As pessoas não precisam baixar 400 MB de conteúdo cada vez que clonam.)
  2. A mídia pode ser privada e é mantida separada de todas as outras coisas. Como tal, nenhum trabalho extra precisa ser feito para liberar o repositório público.

Se desejar, você pode tornar mais conveniente trabalhar, tornando o repositório de mídia um submódulo do repositório público (que você planeja lançar).

Dessa forma, você apenas mantém um ponteiro para ele, não o conteúdo (sensível) em si (para os estágios iniciais do desenvolvimento). Então, quando você for lançar o repositório publicamente, remova a referência do submódulo, o que é muito menos problemático do que reescrever seu histórico para filtrar 400 MB de material.

Alex Budovski
fonte