2

所以我正在处理一个非常大的代码库,超过 3000 个文件,超过 100 万行代码和 500 多个表。

虽然这不是真正的问题。这里的问题是,当需要一个新功能时,我会在我的机器上本地处理它,而当需要更新/修补我们的实时生产时:

  1. 我 ssh 到我们的产品服务器
  2. 我导航到目录,然后打开要修补的文件
  3. 我复制粘贴???我的天啊

无论如何,这是我的看法,请建议你们是否有其他选择或更愿意这样做

  1. 首先,我们迁移到 GIT。(我们在 SVN 中)

  2. 每次发布时,我们在 git repo 中进行分支,然后在我们的 prod 服务器中克隆一个新副本(现在我们在 svn 中创建一个分支,然后进行 svn 导出,然后将其复制到目标目录

  3. 当用新功能修补服务器时,我可以简单地转到目标 repo/release,然后执行 git pull?? 还是我应该使用 git 补丁?

这就是我对更简单生活的设想。

你们会想出比这更容易的东西吗?

4

3 回答 3

3

我认为你在正确的轨道上。我做了类似的事情。

我有两个分支。

Master -> holds latest in dev
Production -> holds latest in production

当我需要对 prod 进行更改时,我会分支生产分支,进行更改并合并回生产分支。这使我可以选择同时处理多个功能。

然后我登录到盒子并执行git pull.

当然,这里更大的问题是 PHP 没有像 java 那样的包(WAR 包)。:(所以我确信这是一种痛苦。

我希望我能帮助你更多,但我想不出还有什么能让你的生活更轻松。

于 2011-03-01T19:52:12.763 回答
0

可能是时候考虑使用像Hudson Jenkins这样的持续集成工具了。

如果没有,至少考虑按照@Amir Raminfar 的建议为开发和生产代码设置不同的分支或存储库。

于 2011-03-01T20:35:33.840 回答
0

在你的产品服务器上安装 svn,检查一个特定的分支,比如说生产,( cd /var/www && svn co svn://domain/path/to/branch )

然后,一旦您准备好推送代码,只需登录到 prod 并运行一个脚本,该脚本将 svn 启动该特定文件夹,并可能对文件进行一些所有者更新

( cd /var/www && svn up ) ( cd /var/www && chown -R www-data:www-data ) ( cd /var/www && svn info )

如果您想在不登录服务器的情况下远程执行此操作,您可以从 ssh 执行远程命令(如果上面的脚本在您的家中并称为 updateRepo.sh) ssh user@server updateRepo.sh 如果您有 ssh 密钥对设置您甚至不需要输入密码注意:上面将输出到 bash,因此您可能希望重定向所有这些 2>&1

这有帮助吗?

于 2011-03-01T19:56:53.430 回答