私はGitリポジトリを2つのグループが動作するプロジェクト用に設定する方法を見つけようとしています。Git - サブモジュールを使ってサブセットブランチを作成する方法は?
各グループには、次のようなアクセス権限が必要です。
- グループ1:の両方にアクセス可能な '/ SRC/dir_public' と '/ SRC/dir_private'
- グループ2:アクセスのみにグーグル後
'/ dir_public/SRC' へ答えを見つけて、私は "git-submodule"が最初に解決策の一つかもしれないと思った。
しかし、簡単なテストの後、私は本当に欲しいものではないことがわかりました。
私はサブモジュールがいわゆる "スーパープロジェクト"から追跡されないと思っていましたが、それはそうでした。
つまり、両方のグループがコミットできる 'src/dir_public'の変更をマージしたいのですが、Group2に "src/dir_private"について知らせたくありません。
Gitリポジトリを次のように設定できますか?プライベート」に見える "マスター" ブランチ(グループ1)
- のsrc/dir_public(repo_public)
- のsrc/dir_private(repo_private)
ディレクトリ上で可視
ディレクトリ"ブランチ(グループ1)
- SRC/dir_public(repo_public)
- SRC/dir_public(repo_public)(グループ2と共用)、 "パブリック" ブランチ上
- SRC/dir_private(repo_private)
ディレクトリ可視
私は以下の方法で/ sync-upコードを管理したいと思います。
「マスター」ブランチに- マージ「公共」ブランチ:プライベート」のいずれかのアップデート:「パブリック」ブランチ上の任意の更新は「マスター」ブランチへの「マスター」ブランチ
- マージ「プライベート」ブランチにマージする必要があります"ブランチを" master "ブランチにマージする
- " master "ブランチを" public "ブランチにマージする:これは動作しますが、" public "ブランチにdir_privateを表示したくありません。
最後に、テストしたものを追加します。
$ mkdir ~/superproject
$ cd ~/superproject
$ git init
$ mkdir src; mkdir dir_public;
$ cd src/dir_public
$ echo public code > public.c
$ git add .
$ git commit -am "Added the public file."
[master (root-commit) 9b11e8c] Added the public file.
1 file changed, 1 insertion(+)
create mode 100644 src/dir_public/public.c
$ mkdir ~/dir_private
$ cd ~/dir_private
$ git init
$ echo private code > private.c
$ git add .
$ git commit -am "Added the private file."
[master (root-commit) 9d34bb2] Added the private file.
1 file changed, 1 insertion(+)
create mode 100644 dir_private/private.c
$ cd ~/superproject/src
$ git submodule add ~/dir_private/
Cloning into '~/superproject/src/dir_private'...
done.
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: ../.gitmodules
new file: dir_private
ご意見ありがとうございます。しかし、私の質問は多少あいまいだと思うので、私は質問を編集しました。 – Han