¿Cómo abrir un proyecto de código abierto cuyo repositorio git tiene medios con derechos de autor en la historia?


15

Quiero lanzar un proyecto de software de huellas digitales de audio bajo una licencia gratuita, pero el repositorio contiene archivos de audio con derechos de autor. Los casos de prueba también utilizan actualmente estos archivos. ¿Cómo publico el código al público con el máximo historial de versiones pero sin violar los derechos de autor?

Detalles:

  • El código está versionado bajo git. Lo volveremos a colapsar en una sola rama antes del lanzamiento.
  • Hay 400 MB de datos de audio. Algunos archivos son música con licencia gratuita de, por ejemplo, Jamendo, otros son MP3 de nuestras colecciones personales.
  • No importa qué enfoque tomemos, siempre guardaremos una copia inmutable del repositorio original, para no destruir el historial del proyecto.

Pregunta principal: ¿Cómo manejar el lanzamiento público?

  1. Borre todo el historial de los archivos en cuestión desde el repositorio de git y libere el repositorio alterado. (v64 señaló una forma de hacer esto).
  2. Alternativamente, tome una instantánea del estado actual del código y ni siquiera se moleste en tener un historial público del código de prelanzamiento.

Pregunta secundaria: ¿Cómo podríamos haber evitado este dilema en primer lugar, dado que a veces se necesitan códigos o medios privados para las primeras etapas de un proyecto?

Respuestas:


13

GitHub tiene una página que explica cómo borrar un archivo de todo el historial: eliminar datos confidenciales .

De vez en cuando, los usuarios ingresan accidentalmente datos como contraseñas o claves en un repositorio git. Si bien puede usar git rmpara eliminar el archivo, seguirá estando en el historial del repositorio. Afortunadamente, git hace que sea bastante simple eliminar el archivo de todo el historial del repositorio.

Peligro: una vez que se ha enviado la confirmación, debe considerar que los datos están comprometidos. Si cometió una contraseña, ¡cámbiela! Si confirmó una clave, genere una nueva.

Purgue el archivo de su repositorio

Ahora que se ha cambiado la contraseña, desea eliminar el archivo del historial y agregarlo al .gitignorepara asegurarse de que no se vuelva a confirmar accidentalmente. Para nuestros ejemplos, vamos a eliminar Rakefiledel repositorio de gemas de GitHub ...


Parece la herramienta adecuada para ese trabajo. Todavía no estoy seguro de si esto tiene más sentido en mi caso en comparación con comenzar con una nueva instantánea de la base de código.
trata bien tus modificaciones

@phyzome: depende de cuán importante creas que es la historia. Expunging es bastante fácil con el filter-branchcomando --- solo asegúrate de ejecutarlo en un clon del repositorio ya que es destructivo y no se puede deshacer.
Sharpie

8

Pregunta secundaria: ¿Cómo podríamos haber evitado este dilema en primer lugar, dado que a veces se necesitan códigos o medios privados para las primeras etapas de un proyecto?

Si va a rastrear archivos multimedia grandes (400 MB de audio), póngalo en un repositorio separado.

Eso mata dos pájaros de un tiro:

  1. El repositorio principal es 400 MB más pequeño. (Las personas no tienen que descargar 400 MB de contenido cada vez que clonan).
  2. Los medios pueden ser privados y se mantienen separados de todas las demás cosas. Como tal, no es necesario realizar ningún trabajo adicional para liberar el repositorio público.

Si lo desea, puede hacer que sea más conveniente trabajar haciendo que el repositorio de medios sea un submódulo del repositorio público (que planea lanzar).

De esa manera, solo mantienes un puntero, no el contenido (sensible) en sí mismo (para las primeras etapas de desarrollo). Luego, cuando vaya a lanzar el repositorio públicamente, simplemente elimine la referencia del submódulo, que es mucho menos problemático que reescribir su historial para filtrar cosas por valor de 400 MB.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.