2011-11-12 13 views
4

私が参加しているリサーチグループは現在、すべてのコードをプライベートSVNリポジトリにホストしています。私たちはコードを開いてそのほとんどをGithubに移したいと思っています。問題は、コードの中には機密性があり、オープンしてはいけないものもありますが、バージョン管理下にあるものもあります。現時点では、私たちはGithubの公開コードと私的なSVNリポジトリのプライベートコードを持っています。単一のGitリポジトリでこれを行う良い方法はありますか?単一のGitリポジトリに公開されたコードとプライベートコード

答えて

5

単一のgitリポジトリでは、あなたができることはgit submodulesです。リポジトリを「結合する」ことができます。パブリックコードをgithubに保存し、パブリックコードをサブモジュールとして参照するプライベートコード用のgitリポジトリを作成します。パブリックサブモジュール内で行われた変更はgithubにプッシュアップされ、github上の変更は元に戻すことができますが、サブモジュール外の変更はパブリックコミュニティに公開されません。コードツリーは単一のルートにマージされますが、コミット、プッシュ、および独立したモジュール間で独立して管理する必要があります。多くの人は扱いにくく問題が多いため、広く配布する前にワークフローを実験してください。

0

いいえ。

ソースコードを暗号化/復号化するためにgitフックを書いておきたいのでない限り、2つのreposで暮らす必要があります。誰かがgit repoをクローン作成すると、文字通りその複製が作成されるので、暗号化せずにその部分を非公開にすることはできません。

0

Gitのサブモジュールは、ここに移動しました:http://git-scm.com/book/en/Git-Tools-Submodules

アイデアは、サブモジュールは、プライベートのgitリポジトリ内に埋め込ま公共gitリポジトリです。ディレクトリ構造の内部にパブリケーションリポジトリファイルを埋め込んだプライベートgitリポジトリの利点を利用して、それらを個別に管理します。例えば

/private-repository 
    /some (private) directory 
    /public-repository 
     /some (public) directory 
    /some other (private) directory 

別のオプションは、gitの-cryptのhttps://www.agwa.name/projects/git-crypt/

0

うんを使用している、Gitのサブモジュールは、同様に私たちのために問題を解決しているようです。私たちは私たちのプライベートリポジトリの同じ支店でオープンソースCMS &プレミアムエクステンション(有料)を開発しました。今、私たちはコア開発をパブリック・リポジトリをgithubに切り替え、開発を分割することに決めました。

これはどうやって行っていますか?

  1. 2つのブランチを持つパブリックリポジトリを作成します。マスターはリリースのために行く、開発は実際の開発のために行く。
  2. は、我々は、我々は&がサブモジュールとして、すべてのプレミアム機能拡張を追加した我々の開発に行くコアファイルでプライベートリポジトリを持って
  3. を持っている拡張子ごとに新しいリポジトリを作成しました。もちろん、私的です。支店名 - dev。

変更をマージするには、ブランチデベロッパーのチェリーピックを開発するだけです。この場合、公開リポジトリのコア関連の履歴はきれいです。リポジトリを1つだけ複製してサブモジュールを再帰的に更新するのは簡単です。これを同期させるにはもう少し時間がかかりますが、とにかくそれだけの価値があります。

乾杯

関連する問題