2017-06-21 16 views
0

私は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 
    
  • 答えて

    1

    この答えをチェックしてください:あなたが何をしたいかA way to restrict Git branch access?

    は、あなた自身を持っているので、レポをフォークです。あなたはあなたが望むどんな枝を作ることができます。マスター(または誰もが使用しているブランチ)とマージする準備ができたら、プッシュすることができます。あなたの開発期間中に誰もあなたの支店を見ることはありません。

    +0

    ご意見ありがとうございます。しかし、私の質問は多少あいまいだと思うので、私は質問を編集しました。 – Han

    関連する問題