2012-07-19 146 views
0

我正在尝试做什么我不认为SVN:ignore命令会执行我想要的操作。SVN更新但忽略某些修订

我有一个SVN仓库,它是为少数几个单独的客户端部署的同一个应用程序。我对一组文件进行了更改,但只有一个客户端(我们称之为客户端A)需要这些更改(他们希望他们的Web应用程序可以在iframe中访问,而其他客户端则不需要)。

我不想忽略其他服务器上的文件,因为将来我会对它们需要的文件进行修改。

基本上大家是不是客户端A我需要更新自己的服务器,但没有任何更新的这仅适用于客户端A

我甚至不知道这是否可能在修订X的变化因为将来它会很容易覆盖那些文件不是吗?我会永远记住忽略那个修改不是我吗?

如果这是不可能的,是否还有其他解决方法人们使用?我认为但似乎无法按照我认为理论上的方式工作的一种方法是将客户端A的服务器的这些更改合并到不同的分支中,但是随后每次客户需要时都必须维护不同的存储库分支与其他客户不同的东西?

回答

2

在这里有点逆转,我不认为分支或标签是解决您的问题的正确方法,除非您有无限的时间在开发线之间合并代码。

另一种方法是单片代码库,您可以为所有客户端调整功能的超集。对于每个客户端,您都可以打开和关闭功能。 (您的每个客户端的配置与您的代码库是分开的,对吗?)即使您的代码遵循不同的路径,每个客户端也可以享受一次修复常见功能的好处。

此外,当您为每个客户开发各种功能时,您有机会向客户推销可能已经构建的功能。你所需要做的就是配置它。

当然,如果您的每个客户的需求大不相同,则此解决方案可能无法正常工作。但是,由于您将代码库保存在同一个repo中,因此我会假设它是。

+0

我其实很喜欢这个解决方案。以前没有真正想过这种方式。它肯定会对我自己的解决方案起作用,我从头开始构建。 无论它在我的作品中工作是否会很有趣 - 我正在使用的代码已经基本上在过去的8 - 9年里与大约20多位不同的程序员叠加在一起。不用说这是一个绝对的混乱。 http://www.urbandictionary.com/define.php?term=shambles(我认为shambles是澳大利亚俚语;)) – 2012-07-19 02:03:34

0

这里使用的正确方法是为客户端A创建一个分支。SVN忽略是完全不同的。

1

我认为一个单独的分支是最合理的解决方案。至少在这种情况下,您可以设置测试系统来运行两个分支的测试:客户端A和其他客户端。你要么保持一些颠覆分支/树干的变化,要么很容易丢失/忘记它们。您不能完全自动排除修订版本X,因为理论上在应用修订版Y> X的某些更改时可能会发生冲突,该修订假定修订版X的更改存在。

+0

干杯队友,我有一种感觉,一个单独的分支将是这里最好的选择。 – 2012-07-19 01:38:44