2

我正在与一个拥有多个版本的软件的团队合作。

这个软件有很多部署——每次我们的客户抛出一个新的“事件”时,我们都会为他们部署一个新的 rails 应用程序,它有自己的数据库并放置在我们的服务器上。

到目前为止,我们只保留了每个版本的“主”,并将使用该软件版本的每个安装符号链接到该主版本。

这使我们能够对主服务器进行更改,并从该主更新部署 5 次安装(如果它是全局需要的错误修复或修补程序),同时还允许我们偶尔加入可能只有每个安装的功能在其中一个事件安装中需要或需要。

管理和维护这样的系统有哪些有效的方法?

如何将所有这些旧版本的软件放入包含新版本的存储库中?

我在想我可以这样做:创建一个名为“v1.0”的新分支删除所有文件从我想要标记的应用程序版本中移动文件提交这些更改?一些 git 命令允许我将该分支转换为 master 上的标签。

这纯粹是猜想,我将对此进行测试,以及我从那些更熟悉 git 的人那里得到的任何想法。

最后,如果您对这种类型的转换有任何一般提示,请分享。

4

2 回答 2

2

根据我的经验,管理多棵分叉树的痛苦是相当大的。

Instead, I would strongly consider building the different features that your different deployments have into a single source tree and having a really good configuration/feature-flags system to tailor the install to what you need in each instance. You could even turn the whole thing into a single application, where instead of having multiple deployments, each deployment becomes an "account" inside of it, aka: a multi tenant app.

于 2013-02-09T10:14:15.803 回答
1

如果您具有无法配置的 per-install 功能,请创建 per-install 分支并在需要升级时将其变基为 master。请参阅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)。

于 2013-02-09T03:03:31.913 回答