4

我们正在让一名自由职业者在我们的 web 应用程序的某些部分上工作——我想限制他对我们代码仓库的前端部分的访问——有没有办法在 Git 中做到这一点?我们使用 bitbucket 来托管 repo。我们有很多独特的专有后端代码,我们不希望他看到,他也不需要为了完成工作而看到。

4

2 回答 2

4

您可以使用filter branch仅包含仅包含他的文件的路径的历史记录来创建新分支。将此分支推送到另一个仓库。授予他对该回购协议的权利。从该回购中提取他的更改。将该分支合并到您的原始存储库中,以将他的工作与其余代码合并。

于 2012-08-02T05:27:55.327 回答
1

或者,如果您的存储库不在 bitbucket 而是在您可以控制的服务器上,您可以将SubGit安装到 Git 存储库中(它将为其创建一个链接的 SVN 存储库),然后在生成的 SVN 存储库中设置基于路径的身份验证,然后给自由职业者 SVN URL。

但是您仍然可以使用存储库的克隆来做到这一点。

$ svnadmin create svn.repo
$ git clone --mirror GIT_URL svn.repo/.git
$ subgit install svn.repo

设置对 svn.repo 的访问(类似这样):

LoadModule dav_svn_module "/usr/lib/apache2/modules/mod_dav_svn.so"
LoadModule authz_svn_module "/usr/lib/apache2/modules/mod_authz_svn.so"
<Location /repos>                                                                                                                                                                                       
DAV svn                                                                                                                                                                                               
SVNPath "/path/to/svn.repo"                                                                                                     
AuthzSVNAccessFile "path/to/authz"                                                                                                              
Allow from any                                                                                                                                                                                        
AuthType Basic                                                                                                                                                                                        
AuthName "Subversion Repository"                                                                                                                                                                           
AuthUserFile /path/to/htpasswdfile                                                                                                                    
Require valid-user                                                                                           
</Location>

和 path/to/authz (类似这样):

[/]                                                                                                  
*=
[/some/dir]
freelancer=rw

以及自由职业者的 git SVN URL。毕竟,您可能只需要将“svn.repo/.git”存储库的一个分支推送回 GIT_URL。

$ cd svn.repo/.git
$ git push origin freelancer_branch
于 2012-08-02T10:27:02.193 回答