我工作的公司中的一个团队存在以下问题。他们开发了一个应用程序,它将具有不同的构建(例如,取决于客户的不同设计)。所以他们有一些代码在构建之间共享,一些特定于构建。例如。第一个构建有(例子对于文件没有意义,只是为了理解问题;我不确切知道哪个代码不同)
/src/class1.java
/src/class2.java
/res/image1.png
/res/image2.png
第二个项目包含
/src/class1.java
/src/class3.java
/res/image1.png
/res/image3.png
如你所见,都有class1.java和image1.png。别的东西是不同的。当然,项目要复杂得多,所以在一个项目中包含所有东西都不舒服......而且要制作不同的分支并将相同的代码提交给所有这些代码并不舒服......
可能我选择了错误的方向思考这个问题,但我只是看了一下git(我们使用svn),它允许分离的存储库。问题是:是否有可能在git中创建不同的分支,但告诉它“这些文件应该在它们之间共享”,其他文件应该只在那些分支中。然后当开发人员提交class1.java时,git会在所有分支/ repositorias等中同步它。也许还有另一种解决方案可以轻松采用?答案 0 :(得分:3)
是否可以在git中创建不同的分支,但告诉它“这些文件应该在它们之间共享”,其他文件应该只在那些分支中。
呃......不
当您创建分支时,这实际上意味着任何文件的任何 future 提交都将记录在该新分支中。
因此,如果您未触及class1.java
,其提交仍将由原始分支引用(例如“common
”),而class2.java
将被删除,class3.java
}添加,全部在分支“project1
”中
任何从project2
创建分支common
的人实际上都会重用class1.java
。
然后当开发人员提交class1.java时,git会在所有分支/ repositorias等中同步它
Err ... no bis:开发人员必须挑选class1.java
并将其合并到分支“common
”,然后在{{1}之上重新绑定所有其他分支为了看common
进化。
真正的解决方案是git submodules
(参见here for more on the way submodules are updated),但这涉及:
project src class3.java # here is a full git repo common # = referenced within the 'project' repo # as submodule src class1.java
class1.java
被修改,