我正在与一个拥有多个版本软件的小组合作。
这个软件有很多部署 - 每次我们的客户抛出一个新的“事件”时,我们都会用它自己的数据库为它们部署一个新的rails应用程序并放在我们的服务器上。
到目前为止,我们只保留了每个版本的“主”,并将使用该版本软件的每个安装符号链接到该主版本。
这允许我们对主服务器进行更改,并从该主服务器更新部署了5个安装(如果它是全局需要的错误修复或修补程序),同时还允许我们偶尔引入每个安装的功能,可能只在其中一个事件安装中需要或需要。
管理和维护此类系统有哪些有效方法?
如何将所有这些旧版本的软件放入具有新版本的存储库?
我在想我可以这样做: 创建一个名为“v1.0”的新分支 删除所有文件 从我想要标记的应用程序版本中移动文件 提交这些更改 ??一些git命令,允许我将该分支转换为master上的标记。
这是一个纯粹的猜想,我将测试这个以及我从git更有经验的人那里获得的任何想法。
最后,如果您对此类转化有任何一般提示,请分享。
答案 0 :(得分:2)
根据我的经验,管理多棵树的痛苦非常高。
相反,我强烈建议将不同部署的不同功能构建到单个源代码树中,并拥有一个非常好的配置/功能标记系统,以便根据每个实例的需要定制安装。您甚至可以将整个事务转变为单个应用程序,而不是进行多次部署,每个部署都成为其中的“帐户”,即:多租户应用程序。
答案 1 :(得分:1)
如果您具有无法配置的每个安装功能,请进行每个安装分支,并在需要升级时将其重新绑定。请参阅http://git-scm.com/book/en/Git-Branching-Rebasing(从头开始阅读该书)。
导入历史记录:我希望您拥有自己的目录中的每个版本。然后在第一个目录中初始化Git存储库,然后从每个版本目录创建符号链接到这个新的first/.git
。现在在每个版本目录中输入git add . && git commit -a
。之后,您将创建所有提交,因此删除符号链接并将.git目录移动到新(空)目录并键入git reset --hard
(它将该空目录的副本恢复到您的上一个版本)。
您需要在执行git commit
时修改日期和作者姓名。请参阅手册以了解您的选项(git commit --help
)。