2010-04-19 168 views
1

项目布局:git的基准公共目录/回购

/project_a 
    /shared 
/project_b 
    /shared 
/shared 

project_a和project_b都需要包含的共享文件夹。使用svn,我们使用了svn:externals并且工作正常,因为svn可以引用subdirs(也有相对路径)。但是,我们转向git,它似乎不支持检出子目录。

我们现在的解决方案是将project_a,project_b和shared分别放在不同的git仓库中,并在project_a和project_b中使用git子模块。然而,这看起来比用svn:externals的单一svn回购复杂得多。在git中处理常见元素的正确方法是什么?

编辑: 共识是submodules是要走的路。但是使用它一天,它似乎非常不友好的使用。

共享进行更改到文件后,我必须:

  1. 提交共享
  2. 推变化中的份额变化
  3. 在父目录
  4. 再次添加共享目录
  5. 推父目录

与svn中的单个提交相比,这看起来更复杂。而错过其中的一个步骤会导致巨大的版本控制混乱。我在这里错过了什么吗?

回答

1

子模块是正确的答案。

事实上,你不保存SVN的单一方法是pretty much by design with a DVCS(其中你标记和引用存储库为所有)。

它允许您引用一个确切的配置(请参见submodules true nature),即您将始终引用一个精确的SHA1引用(与​​相反,其中您没有义务指出修订版号)。

+0

感谢您的详细解答VonC。不得不跑4步对我们来说是一个破坏者,回到svn就是了 – phillee 2010-04-25 19:51:09