【发布时间】:2009-10-07 08:32:14
【问题描述】:
我们开发了一个使用单一代码库的系统,由四个 Visual Studio 项目组成,一个管理网站和一个面向客户的网站(每个系统都有自己的 MS SQL 数据库)。
效果很好,因为所有新网站(包括管理员)都从 SVN 中引用相同的代码库项目,因此对代码库所做的任何更改都可以用于所有网站。
每个网站都有不同的母版页和不同的用户控件 (.ascx),因此虽然网站背后的主要编码相同,但部分不同。
我们现在遇到的问题是,如果存在错误、功能更改或新功能,我们必须在所有站点中分别实施(对于管理员站点和客户站点)。这开始让我们发疯,也意味着我们在实施更改时有很大的误差范围。
我曾考虑过使用 svn:externals 但这会变得很乱。
可以选择从主网站和主管理系统分支,但合并以获取新代码是一个主要问题,因为网站不完全相同。
我认为一个很好的概述是每个站点的标记完全不同(除了管理站点,这只是一个主题更改),但代码库是相同的。
管理这个问题的最佳方法是什么,或者我们是否被困在做大量的复制和粘贴?
编辑
您希望明确哪些要点?
出现的问题包括页面 JavaScript 不同,HTML 布局在网站之间可能完全不同。但是页面的代码是一样的。
所以我需要“同步”文件和文件夹,例如在 app_code 中找到的文件和文件夹,但这里也存在问题。
站点 1 和站点 2 可能完全相同,只是主题不同。 站点 3 也有不同的主题,但它也有一些仅本站点需要的定制代码,app_code 中的一些代码也与站点 1 和站点 2 不同
现在我可以通过分支轻松实现这一点,但是在合并到新分支时,如果存在代码差异,则会出现重大冲突。
合并也将成为一项大型任务并且耗时太长,因为我们只需要合并某些文件夹和文件,尽管您无法通过分支合并单个文件(这可能是错误的)。
例如:
在根目录中有一个download.aspx,它返回一个流作为响应而不是一个页面,用于通过系统推送所有下载请求。
所以站点 1 和站点 2 中的这个页面是相同的,但是站点 3 中它做了一些其他站点不需要或不需要的额外操作。
我们不希望这个定制功能超载,因为我们不希望/不需要它用于其他网站,我们现在不能再从主网站合并这个文件,它必须手动合并。
希望这能更好地解释我想要实现的目标。
编辑 2
网站基本结构
|- App_code
|- App_Themes
|- Bin
|- Content
| |- Flash
| |- Images
| |- Scripts
| |- Uploaded
|
|- Controls
| |- MasterPage
| | |-MasterPageControls
| |
| |- Navigation
| |- Search
| |- Templates
| | |- Control Templates
| | |- Page Templates
| |
| |- WebServices
|
|- Errors
|
Controls Navigation、Search、Templates 下的所有内容都是 .ascx 文件。
在根目录下有几个文件,包括default.aspx、download.aspx和preview.aspx
这些是网站的主要页面(忽略错误页面),所有页面都是从数据库动态创建的。
Controls 文件夹是网站之间的大部分更改发生在 MasterPage 以及所有其他用户控件中的位置。
【问题讨论】:
-
很有趣,看看 Jeff Atwood 是否就他们如何使用 stackoverflow 解决这个确切问题发表意见,我不知道以前在任何地方都讨论过这个问题。
-
为简洁起见,请原发帖者尝试澄清和编辑?
-
这是个好问题
标签: version-control