如何构建您的回购可能很大程度上取决于发布周期。当你做一个新的通用核心版本时,你会立刻把它推出给所有的客户吗?或者,您是否会逐渐推出,因为每个客户都需要新功能(因此需要核心中的新功能)?
如果你推出给大家,当你升级你的核心,那么你可能需要一组分支/标签/主干:
branches/
tags/
trunk/
core/
customer1/
project1/
project2/
customer2/
project1/
project2/
这样做的缺点是,如果有很多的代码为每个客户,你的结账将是巨大的,你必须检查一切能够做任何事情(虽然svn 1.6确实让你能够检查出树的一个子集)。另一方面,如果不同的客户将按不同的时间表发布,那么您可能更愿意为每个客户设置一个顶级目录。你也希望某个地方保持你的共同核心。
core/
branches/
tags/
trunk/
customer1/
branches/
tags/
trunk/
如果你这样做,你可能想看看svn:external
所以你得到的公用核的副本,只要你看看customer1表的源代码树。不过,这会在您想要分支或标记时导致一些问题。 (这可能是选择第一个选项的原因。)
如果您还没有,请阅读“Pragmatic Version Control Using Subversion”。他们有一些使用外部的例子,这可能有助于澄清你想要使用的方案。
我实际上认为使用Linux和Windows开发者根本不会改变您链接到的问题。所有这些答案都适用。 (这是源代码控制点之一 - 它与你的客户端操作系统无关!) – 2009-07-09 12:58:32