2017-05-30 8 views
2

私は半年間Githubにプロジェクト(html + css + javascriptで)を構築しました。それは私的なリポジトリにあり、ブランチは1つだけです。プライベートレポジトリを部分的に公開する

今、私はこのリポジトリが部分的に公共作りたい、その結果

  1. ユーザーは、私たちが議論を持っている可能性があり、それらに対応できる、質問をしたり要件を記述するためにissues機能を使用することができます。

  2. 実際、ユーザーはコードを見る必要はありません。しかし私たちはGithub上にあるので、私はファイルの一部を公開したいかもしれません。

  3. 私はコミット履歴を失いたくありません。

私が従うべきステップ(および理想的にはコマンド)は誰にでも教えてください。たとえば、パブリックフォルダとプライベートフォルダを作成するなど、フォルダを再編成する必要がありますか?

答えて

0

最初に理解しなければならないのは、GitHubのアクセス許可モデルです。問題などを提出するには、レポの許可レベルが必要です。読み取りは十分でなければなりません。

しかし、を読むと、は「すべてのコードと履歴を見ることができる」という意味になります。レポに書かれているものを制御していても、コピーしてフォークできるということさえ知ることができます。そして、 "read(すべてのコード)"よりも低いアクセスレベルはありません。

コードを自分自身に保存し、githubとは別のプロジェクトページを作成し、そこに専用の問題追跡システムを使用したい場合は、何をしようとしているのかが分かります。

コードを公開する必要があると判断した場合は、2つのreposが必要です。パブリックコードのリポジトリは、コードのサブセットに対するニーズをよりよく満たす場合は、読み取り専用または読み取り/書き込み可能にすることができます。あなたが公共のレポが同様に完全な履歴を持つようにしたい場合は、それは難しいですけれども、それは、問題の議論をホストする可能性がありますいずれかの方法など公共のレポへ

分割コードのサブセットは、すぎ難しいことではありません。パブリックコードの2つの異なる履歴を作成しないようにしたいので、おそらくプライベートレポからパブリックコードを削除する必要があります。 (これは、サブモジュールとして再導入することができる - 公共のレポへのリンク - 。しかし、あなたは、単一のディレクトリの下に公共のコードを整理したいと思う意味が、最も簡単な場合には)

のみ現在のバージョンが必要な場合一般公開されるには、それは簡単です。新しいリポジトリを初期化し、ファイルを一方から他方に移動し、必要に応じてサブモジュールのリンクを作成します。

公開されたファイルの履歴を公開する場合は、元のリポジトリ(のクローン)から公開リポジトリを作成するには、git filter-branchのような行為をしなければなりません。正確な手順は正確な要件に依存しますが、一般的には、(a)subdirectory-filterを使用して、1つのディレクトリの内容(新しいリポジトリのルート)を公開することができますが、コードが整理されていないようですそれは簡単です。 (b)index-filter(残っているファイルの既存のディレクトリ構造を維持しながら)プライベートにしたいファイルを削除する。または(c)tree-filterと、 "元のrepo"バージョンを対応する "パブリックrepo"バージョンに変換して、ファイルを移動、削除、または追加するような複雑なスクリプトです。

ヒストリを分割する場合は、リポジトリの履歴をリンクするのがむしろ難しいため、元のリポジトリに公開ファイルの履歴を保存したいと思うかもしれません。歴史の大きさが相当なものでなければ、ほとんどの場合、実用上の大きな制限はありません。

+0

あなたの答えをありがとう。私はGithubの「issue」が「issue tracking system」として本当に好きです。 Githubリポジトリをいくつかのプロジェクトページで作成し、主に "issue"機能を使用することが許容されると思いますか? – SoftTimur

+0

私はそれが「受け入れられる」かどうかわからないと思います。私はそれが完了したことを思い出してはいません。おそらく、統合されたソース管理なしで問題管理に特に重点を置くサイトが存在するためです。私はあなたができない理由を知りません、もしあなたが本当にやりたいことなら –

1

さらに、2つの別々のリポジトリが必要です。コードが公開されているかどうか。ファイルの一部だけを公開することはできません。これらのファイルをアーカイブとしてパッケージ化しておかないと、リポジトリのダウンロードセクションにそれらを提供しません。しかし、それらをリポジトリとして利用できるようにするには、リポジトリを2つの半分に分割する必要があります。 g。 git filter-treeおよび--subtree-filterである。

+0

申し訳ありません申し訳ありませんが、私は[この投稿](http://alexgaudio.com/2011/07/24/sharing-part-your-repo-github.html)を見つけました。あなたとは異なるアプローチですか? – SoftTimur

+1

クイックスキミングから、これは別のアプローチです(トップの更新は、私が言ったことを正確に示していますが、あなたには当てはまりません)。彼らはGitHubではなく、地方のどこかにあるプライベートレポを持っています。彼らは、共有されるファイルのみを含むブランチを準備し、そのブランチだけをGitHubリポジトリにプッシュします。これは公開されたものと1つのもの、私的なものと公共のものとの2つの別々のリポジトリを含むアプローチでもあります。かなり面倒で壊れやすい私は言うだろう。 – Vampire

関連する問題