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

Version control 如何为不同的客户端用户维护多个版本的测试文件?,version-control,Version Control,我有一个文本文件,我需要为少数客户端用户维护稍微不同的版本。该文件的内容没有太大的相关性,但我还是会与大家分享。该文件包含一个SQL脚本(以及一些其他内容),我的客户将其加载到他们本地的第三方软件中(这不是我公司的,我们无法控制该软件)。脚本的目的是允许其他软件输出报告 每个客户端都需要稍微不同的脚本版本。至少,文件名会不同(包含客户端的名称),报告名(文件中的文本)也会不同。对于其中一些人来说,SQL稍作修改以适应他们的环境 我如何维护这个?如果我想向我的所有客户发布增强功能,该怎么办?目前我

我有一个文本文件,我需要为少数客户端用户维护稍微不同的版本。该文件的内容没有太大的相关性,但我还是会与大家分享。该文件包含一个SQL脚本(以及一些其他内容),我的客户将其加载到他们本地的第三方软件中(这不是我公司的,我们无法控制该软件)。脚本的目的是允许其他软件输出报告

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

我如何维护这个?如果我想向我的所有客户发布增强功能,该怎么办?目前我正在手动操作,因此我必须编辑每个文件并进行增强更改

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

欢迎提出任何意见

更新:下面是两个简化示例

文件名:sql\u abcclient\u system2.txt

//Title
ABCClient Report
//end Title
SELECT site.name, site.phone
FROM site
WHERE site.type IN (1, 2, 3)
//Title
XYZClient Report
//end Title
SELECT site.name, isnull(site.phone, 'no-phone'), site.status
FROM site
WHERE site.type IN (1, 2)
文件名:sql\u xyzclient\u system3.txt

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

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

关于文件的合并,我认为它们不能自动完成

例如,如果使用<代码> Currase< /Cord>,并且只想将你认为是一个更新的内容合并,那么合并过程将检测到文件中还有其他的差异,并会尝试找出如何合并这些文件。p> 最后,您必须通过手动选择合并过程中为每个文件保留的部分来“帮助”合并。
自动合并到此为止

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


如果我得到了你想要做的,我相信通过源代码管理的过程将是非常乏味的

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

例如,如果使用<代码> Currase< /Cord>,并且只想将你认为是一个更新的内容合并,那么合并过程将检测到文件中还有其他的差异,并会尝试找出如何合并这些文件。p> 最后,您必须通过手动选择合并过程中为每个文件保留的部分来“帮助”合并。
自动合并到此为止

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


如果我得到了您想要做的,那么通过源代码控制的过程我相信会非常乏味

这是一个钩子来管理的过程

您需要更新以下版本:

  • 模板
  • 值文件(其中包含每个客户端的所有不同值)
  • 能够根据执行环境生成具有正确名称和内容的最终文件的脚本(例如,它可以检测和提取用户名,并使用该信息从值文件中检索正确的值,从而生成正确的最终文件)
例如,对于Git,钩子将是一个“
smudge
”脚本,它是的一部分,在Git回购签出时自动执行


因此,没有多个分支需要管理,所有客户机都可以立即使用任何公共更新(通过更新模板和/或脚本)。

这是一个要管理的钩子

您需要更新以下版本:

  • 模板
  • 值文件(其中包含每个客户端的所有不同值)
  • 能够根据执行环境生成具有正确名称和内容的最终文件的脚本(例如,它可以检测和提取用户名,并使用该信息从值文件中检索正确的值,从而生成正确的最终文件)
例如,对于Git,钩子将是一个“
smudge
”脚本,它是的一部分,在Git回购签出时自动执行


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

一些冒名的示例将有助于了解您的问题。同时,试着弄清楚是否可以对文件内容进行数据库和模式化
%name-%version.txt
可以自动编译单个文件。使用伪造名称的示例有助于理解您的问题。同时,试着弄清楚是否可以对文件内容进行数据库和模式化
%name-%version.txt
可以自动编译单个文件这似乎是正确的方法-我只是不确定它是否值得。听起来实现起来很复杂。这似乎是正确的方法——我只是不确定它是否值得。听起来实现起来非常复杂。