如何为不同的客户端用户维护多个版本的测试文件?

时间:2012-01-24 19:30:09

标签: version-control

我有一个文本文件,我需要为少数客户端用户维护略有不同的版本。该文件的内容并不是很重要,但无论如何我都会分享。该文件包含一个SQL脚本(以及其他一些东西),我的客户端加载到他们的本地第三方软件(这不是我公司的,我们无法控制该软件)。该脚本的目的是允许其他软件输出报告。

每个客户端都需要稍微不同的脚本版本。文件名至少不同(包含客户端的名称),报告名称(文件中的文本)将不同。对于其中一些,SQL稍作修改以适应其环境。

我该如何保持这个?如果我想向所有客户发布增强功能怎么办?目前我手动完成,因此我必须编辑每个文件并进行增强更改。

我考虑过使用版本控制软件,每个客户端有一个分支,然后我可以将任何更新合并到每个分支 - 但我不相信合并会足够准确,因此不会保存我随时都会引起更多头痛。此外,是否能够处理每个分支中的不同文件名?

欢迎任何想法。

更新:以下是两个简化示例。

文件名: sql_abcclient_system2.txt

//Title
ABCClient Report
//end Title
SELECT site.name, site.phone
FROM site
WHERE site.type IN (1, 2, 3)

文件名: sql_xyzclient_system3.txt

//Title
XYZClient Report
//end Title
SELECT site.name, isnull(site.phone, 'no-phone'), site.status
FROM site
WHERE site.type IN (1, 2)

此外,将某些参数存储在数据库或配置文件中是合理的,例如客户端名称。但我不确定这对于其他文件内修改是否可行,例如对SQL的更改。

2 个答案:

答案 0 :(得分:1)

这是一个需要管理的钩子。

您需要版本:

  • 模板
  • 一个值文件(其中包含每个客户端的所有不同值)
  • 一个能够生成最终文件的脚本,具有正确的名称和内容,具体取决于执行环境(例如,它可以检测并提取用户名,并使用该信息从值中检索正确的值)文件,生成正确的最终文件)。

例如,使用Git,钩子将是smudge'脚本,content filter driver的一部分,在结帐Git仓库时自动执行。

content filter driver

因此,无需管理多个分支,并且所有客户端都可立即使用任何常见更新(通过更新模板和/或脚本)。

答案 1 :(得分:0)

关于合并文件,我不认为它们可以自动完成。

E.g。如果您使用ClearCase并且只想合并 认为的更新,合并过程会检测到文件中还存在其他差异,并会尝试弄清楚如何合并那些。

最后,您必须通过手动选择合并期间为每个文件保留哪个部分来“帮助”合并 非常适合自动合并。

至于文件的命名,我不确定。因为每个文件都有自己的行,你想要在不同的行之间合并。就像合并我认为的目录。

如果我得到了你想要做的事情,我认为通过源代码控制的程序将非常繁琐