私が参加しているリサーチグループは現在、すべてのコードをプライベートSVNリポジトリにホストしています。私たちはコードを開いてそのほとんどをGithubに移したいと思っています。問題は、コードの中には機密性があり、オープンしてはいけないものもありますが、バージョン管理下にあるものもあります。現時点では、私たちはGithubの公開コードと私的なSVNリポジトリのプライベートコードを持っています。単一のGitリポジトリでこれを行う良い方法はありますか?単一のGitリポジトリに公開されたコードとプライベートコード
答えて
単一のgitリポジトリでは、あなたができることはgit submodulesです。リポジトリを「結合する」ことができます。パブリックコードをgithubに保存し、パブリックコードをサブモジュールとして参照するプライベートコード用のgitリポジトリを作成します。パブリックサブモジュール内で行われた変更はgithubにプッシュアップされ、github上の変更は元に戻すことができますが、サブモジュール外の変更はパブリックコミュニティに公開されません。コードツリーは単一のルートにマージされますが、コミット、プッシュ、および独立したモジュール間で独立して管理する必要があります。多くの人は扱いにくく問題が多いため、広く配布する前にワークフローを実験してください。
いいえ。
ソースコードを暗号化/復号化するためにgitフックを書いておきたいのでない限り、2つのreposで暮らす必要があります。誰かがgit repoをクローン作成すると、文字通りその複製が作成されるので、暗号化せずにその部分を非公開にすることはできません。
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/
うんを使用している、Gitのサブモジュールは、同様に私たちのために問題を解決しているようです。私たちは私たちのプライベートリポジトリの同じ支店でオープンソースCMS &プレミアムエクステンション(有料)を開発しました。今、私たちはコア開発をパブリック・リポジトリをgithubに切り替え、開発を分割することに決めました。
これはどうやって行っていますか?
- 2つのブランチを持つパブリックリポジトリを作成します。マスターはリリースのために行く、開発は実際の開発のために行く。
- は、我々は、我々は&がサブモジュールとして、すべてのプレミアム機能拡張を追加した我々の開発に行くコアファイルでプライベートリポジトリを持って
- を持っている拡張子ごとに新しいリポジトリを作成しました。もちろん、私的です。支店名 - dev。
変更をマージするには、ブランチデベロッパーのチェリーピックを開発するだけです。この場合、公開リポジトリのコア関連の履歴はきれいです。リポジトリを1つだけ複製してサブモジュールを再帰的に更新するのは簡単です。これを同期させるにはもう少し時間がかかりますが、とにかくそれだけの価値があります。
乾杯
- 1. 公開gitリポジトリ
- 2. 公開されたリポジトリでGitの著者を修正する
- 3. XML参照テストデータの公開された公開リポジトリ
- 4. Gitlabで単一リポジトリのチェーンされたgitフックを防ぐ
- 5. 単一リポジトリから複数のパッケージを公開する
- 6. 公開リポジトリとGitolite
- 7. Heroku Git Repoは一般に公開されていますか?
- 8. Githubの非公開リポジトリの一部を公に共有する
- 9. プライベートgitサーバで公開gitリポジトリを使用する
- 10. 公開されているGitHubリポジトリにいくつかのコード行を非公開にしておく
- 11. gitの単一開発 - リベースと二回
- 12. レイアウトが一度公開されたライブ
- 13. GitリポジトリとGitブランチベースの開発
- 14. gitへの接続に使用された公開sshキー
- 15. ネストされたgitリポジトリ?
- 16. Git "公開鍵を使用すると" ERROR:gitosis.serve.main:リポジトリの読み込みアクセスが拒否されました "
- 17. あるgitリポジトリから別のgitリポジトリアドレスに誤ってプッシュされたコード
- 18. 公開リポジトリにプッシュされたことのないコミットサブモジュールを見つける
- 19. にはどうすれば公開リポジトリ
- 20. ローカルのgitリポジトリをオンラインで公開する方法
- 21. 公開クラスは公開されていませんか?このコードの一部を使用しようと
- 22. オープンソースプロジェクト用の公開MavenとOBRリポジトリ
- 23. 公開リポジトリのプライベートブランチbitbucket
- 24. 公開されたアクションとopengraphのリンク
- 25. Dockerfile公開鍵パーミッションがGit(Bitbucket)で拒否されました
- 26. Git公開鍵アクセスが拒否されました
- 27. "git checkout - [リポジトリとファイル]" => "エラー:pathspec '[リポジトリとファイル]'がgitに既知のファイルと一致しませんでした。"
- 28. SVNリポジトリを公開する
- 29. 以前に結合されたコードを複数のgitリポジトリに分割する
- 30. 公開されたgitと同期して、変更を加えたプライベートgitと同期する