gitリポジトリが著作権で保護されたメディアを歴史上持っているプロジェクトをオープンソースにする方法は?


15

無料のライセンスでオーディオフィンガープリントソフトウェアプロジェクトをリリースしたいのですが、リポジトリには著作権で保護されたオーディオファイルが含まれています。現在、テストケースではこれらのファイルも使用しています。最大のバージョン履歴で、著作権を侵害せずにコードを公開するにはどうすればよいですか?

詳細:

  • コードはgitでバージョン管理されています。リリース前にすべてを1つのブランチに戻します。
  • 400 MBのオーディオデータがあります。一部のファイルは、たとえばJamendoの無料ライセンス音楽であり、その他のファイルは私たちの個人コレクションのMP3です。
  • どのようなアプローチをとっても、プロジェクトの履歴を破壊しないように、常に元のリポジトリの不変のコピーを保持します。

主な質問:パブリックリリースの処理方法

  1. 問題のファイルのすべての履歴をgitリポジトリから消去し、変更されたリポジトリをリリースします。(v64 はこれを行う方法を指摘しました。)
  2. または、コードの現在の状態のスナップショットを取得し、プレリリースコードの公開履歴を気にすることさえしません。

副次的な質問:プロジェクトの初期段階でプライベートコードまたはメディアが必要になる場合があるので、そもそもこのジレンマをどのように回避できたでしょうか?

回答:


13

GitHubには、すべての履歴からファイルを消去する方法を説明するページがあります。機密データを削除します

時々、ユーザーはパスワードやキーなどのデータを誤ってgitリポジトリにコミットします。git rmファイルを削除するために使用できますが、それはまだリポジトリの履歴にあります。幸いなことに、gitを使用すると、リポジトリの履歴全体からファイルを簡単に削除できます。

危険:コミットがプッシュされたら、データが危険にさらされると考えるべきです。パスワードをコミットした場合は、変更してください!キーをコミットした場合、新しいキーを生成します。

リポジトリからファイルを削除します

パスワードが変更されたので、ファイルを履歴から削除して追加し、.gitignore誤って再コミットされないようにします。この例ではRakefileGitHub gemリポジトリから削除します...


その仕事に適したツールのように見えます。私の場合、これがコードベースの新しいスナップショットから始めるのが最も意味があるかどうかはまだわかりません。
よくあなたの改造を扱う

@phyzome:歴史の重要性に依存します。このfilter-branchコマンドを使用すると、削除は非常に簡単になります。破壊的で元に戻せないため、リポジトリのクローンで実行してください。
シャーピー

8

副次的な質問:プロジェクトの初期段階でプライベートコードまたはメディアが必要になる場合があるので、そもそもこのジレンマをどのように回避できたでしょうか?

大きなメディアファイル(400MBのオーディオ)を追跡する場合は、別のリポジトリに配置します。

それは1つの石で2羽の鳥を殺します:

  1. メインリポジトリは400MB小さくなります。(複製するたびに400MB相当のコンテンツをダウンロードする必要はありません。)
  2. メディアはプライベートにすることができ、他のすべてのものとは別に保管されます。そのため、公開リポジトリをリリースするために余分な作業を行う必要はありません。

必要に応じて、メディアリポジトリをパブリックリポジトリ(リリース予定)のサブモジュールにすることで、作業をより便利にすることができます。

そうすることで、(開発の初期段階で)(機密)コンテンツ自体ではなく、単にポインタを保持するだけです。次に、リポジトリを公開するときは、サブモジュール参照を削除するだけです。これは、履歴を書き換えて400MB相当のものを除外するよりもはるかに面倒です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.