Bagaimana cara membuka sumber proyek yang gitnya memiliki media yang memiliki hak cipta?

15

Saya ingin merilis proyek perangkat lunak sidik jari audio di bawah lisensi gratis, tetapi repositori berisi file audio yang dilindungi hak cipta. Kasing uji saat ini juga menggunakan file-file ini. Bagaimana cara melepaskan kode kepada publik dengan riwayat versi maksimum tetapi tanpa melanggar hak cipta?

Detail:

  • Kode ini diversi di bawah git. Kami akan menciutkan semuanya kembali menjadi satu cabang sebelum dirilis.
  • Ada 400 MB data audio. Beberapa file adalah musik berlisensi gratis dari mis. Jamendo, yang lain adalah MP3 dari koleksi pribadi kami.
  • Apa pun pendekatan yang kami ambil, kami akan selalu menyimpan salinan repo asli yang tidak berubah, agar tidak menghancurkan sejarah proyek.

Pertanyaan utama: Bagaimana cara menangani rilis publik?

  1. Hapus semua riwayat file yang dimaksud dari repositori git dan lepaskan repo yang diubah. (v64 menunjukkan cara untuk melakukan ini.)
  2. Atau, ambil snapshot dari kondisi saat ini dari kode dan bahkan tidak repot-repot memiliki sejarah publik dari kode pra-rilis.

Pertanyaan sampingan: Bagaimana kita bisa menghindari dilema ini sejak awal, mengingat kadang-kadang diperlukan kode atau media pribadi untuk tahap awal proyek?

perlakukan mod Anda dengan baik
sumber

Jawaban:

13

GitHub memiliki halaman yang menjelaskan cara menghapus file dari semua riwayat: Hapus data sensitif .

Dari waktu ke waktu, pengguna secara tidak sengaja melakukan data seperti kata sandi atau kunci ke repositori git. Meskipun Anda bisa menggunakan git rmuntuk menghapus file, itu masih dalam sejarah repositori. Untungnya, git membuatnya cukup mudah untuk menghapus file dari seluruh riwayat repositori.

Bahaya: Setelah komit ditekan, Anda harus mempertimbangkan data untuk dikompromikan. Jika Anda memasukkan kata sandi, ubahlah! Jika Anda melakukan kunci, buat yang baru.

Bersihkan file dari repositori Anda

Sekarang setelah kata sandi diubah, Anda ingin menghapus file dari riwayat dan menambahkannya ke .gitignoreuntuk memastikan itu tidak dilakukan kembali secara tidak sengaja. Sebagai contoh, kita akan menghapus Rakefiledari repositori permata GitHub ...

v64
sumber
Sepertinya alat yang tepat untuk pekerjaan itu. Saya masih tidak yakin apakah ini paling masuk akal dalam kasus saya vs dimulai dengan snapshot baru dari basis kode.
perlakukan mod Anda dengan baik
@ phyzome: Tergantung pada seberapa penting Anda berpikir tentang sejarah. Penghapusan sangat mudah dengan filter-branchperintah --- pastikan untuk menjalankannya pada klon dari repositori karena merusak dan tidak dapat dibatalkan.
Sharpie
8

Pertanyaan sampingan: Bagaimana kita bisa menghindari dilema ini sejak awal, mengingat kadang-kadang diperlukan kode atau media pribadi untuk tahap awal proyek?

Jika Anda akan melacak file media besar (audio 400MB), letakkan di repositori terpisah.

Itu membunuh dua burung dengan satu batu:

  1. Repo utama berukuran 400MB lebih kecil. (Orang tidak harus mengunduh konten senilai 400MB setiap kali mereka mengkloning.)
  2. Media dapat bersifat pribadi dan dipisahkan dari semua hal lainnya. Karena itu, tidak ada pekerjaan tambahan yang perlu dilakukan untuk merilis repositori publik.

Jika Anda suka, Anda dapat membuatnya lebih nyaman untuk bekerja dengan membuat repositori media sebagai submodul dari repo publik (yang Anda rencanakan akan dirilis).

Dengan begitu Anda hanya menyimpan pointer ke sana, bukan konten (sensitif) itu sendiri (untuk tahap awal pengembangan). Kemudian ketika Anda akan merilis repo secara publik, cukup hapus referensi submodule, yang jauh lebih merepotkan daripada menulis ulang sejarah Anda untuk menyaring barang senilai 400MB.

Alex Budovski
sumber