2017-06-21 50 views
0

我试图找到方法来配置Git仓库对其中两组工作的项目。Git的 - 如何使用子模块,使子分支?

上述两组都应该有访问权限如下。

  • 组1:接触到两者的 '/ SRC/dir_public' 和 '/ SRC/dir_private'
  • 组2:只能访问 '/ SRC/dir_public'

使用Google到后找出答案,我想:“混帐子模块”可能是解决方案之一在第一。

但快速测试后,我发现这不是我真正想要的。

我认为子模块不会从所谓的“上层项目”进行跟踪,但他们。

换句话说,我想合并'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)
    • 上(与第2组共享)

      • SRC/dir_public(repo_public) “公开” 分支
      • SRC/dir_private(repo_private)
    • 目录可见

我想通过以下方式来管理/同步了代码

  • 合并“公共”分支到“主人”分支:在“公共”分支任何更新,应合并为“主”分支
  • 合并“私人”分支到“主人”分支:任何更新的“私人“分支应该合并为‘主’分支
  • 合并‘master’分支到‘公共’分支:这会工作,但我不想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