Git、SVN等是否执行这种类型的;分支及;“合并”;还是像这样?
客户机有相同代码的不同版本,基本上他们复制一个模板代码库,然后编辑副本,然后在生产中使用该副本作为代码实例。这意味着有20个版本的代码库正在运行,但80%的代码是相同的。如果每个版本/分支的VCS中的代码发生更改,则可以在不更改工作流的情况下合并源代码,然后进行代码的版本生成。如果这很重要的话,代码是用Perl编写的 如果是的话,这叫什么,VCS是否管理“构建”(它是Perl,实际上只是代码的版本) 可视化:A、B、C自定义代码分支;X是共享代码Git、SVN等是否执行这种类型的;分支及;“合并”;还是像这样?,svn,git,version-control,build,Svn,Git,Version Control,Build,客户机有相同代码的不同版本,基本上他们复制一个模板代码库,然后编辑副本,然后在生产中使用该副本作为代码实例。这意味着有20个版本的代码库正在运行,但80%的代码是相同的。如果每个版本/分支的VCS中的代码发生更改,则可以在不更改工作流的情况下合并源代码,然后进行代码的版本生成。如果这很重要的话,代码是用Perl编写的 如果是的话,这叫什么,VCS是否管理“构建”(它是Perl,实际上只是代码的版本) 可视化:A、B、C自定义代码分支;X是共享代码 | | X | /|
|
|
X
|
/|\
/ | \
A B C
\ | /
\|/
|
|
X
|
|
|\
| \
A,B C
| /
|/
|
|
X
|
|
/|
/ |
A B,C
\ |
\|
|
|
Etc... Where X = 80% of the code.
|
|
我想这可以通过分支实现,但我认为更理想的做法是拥有一个更智能的模板系统,它知道如何加载正确版本的模板。如果您坚持使用分支,您可以通过拥有一个包含所有公共代码的主分支(用Git的说法)和一个针对每个变体的分支来实现。对特定版本的更改可以在相关分支上完成,而应该影响所有内容的更改可以在主分支上完成。但是,除非为每个分支编写某种自动化程序,否则必须将最新的主控更改单独合并到每个分支中。再说一次,我不认为使用分支来实现这样的功能是最好的主意,但是你可以让它工作。我想这可以通过分支来实现,但我认为更理想的是拥有一个更智能的模板系统,知道如何加载正确版本的模板。如果您坚持使用分支,您可以通过拥有一个包含所有公共代码的主分支(用Git的说法)和一个针对每个变体的分支来实现。对特定版本的更改可以在相关分支上完成,而应该影响所有内容的更改可以在主分支上完成。但是,除非为每个分支编写某种自动化程序,否则必须将最新的主控更改单独合并到每个分支中。再说一次,我不认为使用分支来实现类似的功能是最好的主意,但您可能能够让它工作。是的,您可以,但在我解释之前,我必须强烈建议您不要这样做。最好将可变内容与共享内容分开,并将共享内容转换为某种框架,这可能很简单,只需将可变内容移动到一个“站点”目录(我猜您正在构建固定网站),该目录包含20个子目录,框架在运行时从中选择(添加到模块路径)(
使用lib“sites/$site”;
可能会奏效,但不要引用我的话)
如果你真的必须通过版本控制来管理它,你可以简单地为每个站点创建一个分支,维护基于master的核心代码,并定期从master合并到每个站点,以便传播更新。如果变量和共享代码完全分开,这将很少需要人工干预。可以,但是在我解释之前,我必须强烈建议您不要这样做。最好将可变内容与共享内容分开,并将共享内容转换为某种框架,这可能很简单,只需将可变内容移动到“站点”目录中(我猜您正在构建固定网站)框架在运行时从20个子目录中选择(添加到模块路径中)(
使用lib“sites/$site”;
可能会做到这一点,但不要引用我的话)
如果你真的必须通过版本控制来管理它,你可以简单地为每个站点创建一个分支,维护基于master的核心代码,并定期从master合并到每个站点,以便传播更新。如果变量和共享代码完全分开,这将很少需要人工干预。在Git中,你可以拥有一个Git存储库的多个完整克隆,每个克隆都是它自己的完整repo
- 创建一个名为client/custom的新分支
- 进行客户端更改并将其提交给客户端/自定义
- 在“原始”回购协议中进行更改
- 提交原始repo中的更改
- 将更改从源/主机拉入客户机/主机
- 将客户机/自定义重设为最新的客户机/主机,或将客户机/主机的最新更改合并到客户机/自定义中
请参见Git中的,您可以拥有一个Git存储库的多个完整克隆,其中每个克隆都是它自己的完整repo
- 创建一个名为client/custom的新分支
- 进行客户端更改并将其提交给客户端/自定义
- 在“原始”回购协议中进行更改
- 提交原始repo中的更改
- 将更改从源/主机拉入客户机/主机
- 将客户机/自定义重设为最新的客户机/主机,或将客户机/主机的最新更改合并到客户机/自定义中
请参见我认为这叫做分支和合并?@Lukman:+1谢谢,更新了问题。我认为这叫做分支和合并?@Lukman:+1谢谢,更新了问题。+1谢谢,RE:“我认为拥有一个更智能的模板系统,知道如何加载正确版本的模板会更理想。”这方面的例子是什么?“我不认为用分支来做这样的事情是最好的主意”同意,只是确定一下。@错误-马塞洛给出了几乎相同的答案,对“更聪明”的东西有了更具体的描述可能是。您只需要一种方法来将公共代码与特定于实例的代码分离。无论是哪个脚本提供这些内容,都需要检查哪个实例