将SVN用于具有自定义内容的共享代码库



我有一个网站,需要部署到大约30个客户。除了品牌之外,它们都是一样的。使用SVN,我希望有一个产品的基本版本,然后为每个客户提供不同的品牌内容(图像、CSS)。这样,当我维护基本产品时,我就不必为每个客户复制这种变化。部署只是一个更新和发布的例子。

听起来很简单,但我在SVN中实现这一点时遇到了问题。我一直在研究SVN外部使用如下结构:

  • Main
    • 底座
      • 图像
  • 客户1

    • 底座
    • 自定义
      • 图像
  • 客户2

    • 底座
    • 自定义
      • 图像

然后使用将Customer Base文件夹指向main Base文件夹的externals。这是可行的,但我需要用客户特定的图像覆盖(例如)Customer 1\Base\images文件夹中的图像,当我为此设置外部时,它会抱怨"Customer 1\Base\images不是一个工作的复制根"。不过,它似乎确实用客户的图像覆盖了图像。

也许外在因素不是答案。

在您的案例中,接口与功能明显分离。一种可能性如下(如果我很了解你的问题):

在专用的SVN存储库中管理您的应用程序(像往常一样,使用主干、分支和标记)。并在另一个存储库中管理您的设计版本,例如使用以下结构:

./Customer_1
./Customer_1/trunk
./Customer_1/tags
./Customer_1/branches
./Customer_2
./Customer_2/trunk
./Customer_2/tags
./Customer_2/branches
...

通过这种分离,您可以很容易地管理主应用程序的版本号。您为每个客户提供了一个"小型"存储库,可以通过svn copy轻松复制设计版本以启动另一个版本。

最新更新