6

我是 Git 新手,并试图将我的网站从 SVN 转移到 GIT 以进行版本控制和部署。

我有许多开发人员将在他们的本地机器上工作,我有 3 台服务器,“开发”、“暂存”和“生产”。

我一直在阅读有关 Git 工作原理的书籍和视频,所以我认为我现在对它非常熟悉,例如添加、提交等,但是我需要有关工作流程和部署的建议。

我需要知道的第一件事是在哪里初始化 GIT 存储库。它是否需要在“生产”服务器上,然后我在“登台”和“开发”上克隆它,每个开发人员也将它克隆到他们的本地机器上?

其次,每个服务器都应该有自己的分支吗?即“开发”将有一个“开发”分支,“暂存”将有一个“暂存”分支,“生产”将有一个“生产”分支?

谢谢

4

4 回答 4

8

我最近也将我的团队从 SVN 转移到了 Git,我们有 3 个服务器的相同设置,prod、stg 和 dev..

对于迁移过程,首先sudo apt-get install git-svn,然后..

$ git svn clone [subversion_repository_url] /path/to/git/repository
$ cd /path/to/git/repository
$ git remote add origin [gir_repo_url]
$ git push origin master

对于工作流

这个标题为“一个成功的 Git 分支模型”的链接非常有用。它需要如何为团队使用“生产 - 登台 - 开发”类型的工作流程。

关于部署

在每台服务器上,我们所做的是,每台服务器在文件系统的某个地方都有 git repo。要部署,我将需要部署的相应分支存档并将其解压缩到 /srv/www/ 文件夹中。

例如,在 Prod 上,部署master 分支

sudo git archive --format zip --output output.zip master -0

^“master”表示您要压缩的分支。这不包括 .git 文件夹。然后解压到/srv/www/文件夹里面,sudo unzip output.zip -d /srv/www/app/ 这相当于一个svn export命令。

对于暂存服务器,我们通常签出Release 分支Dev 分支之一..

对于开发服务器,我们签出任何一个需要执行测试的任何功能分支。

于 2012-10-31T14:51:32.283 回答
2

您在这里有 3 个问题:如何部署、如何构建分支以及如何构建/托管存储库。

如何构建分支?

你可以从简单的开始。你已经有了一个 SVN 存储库,所以如果你有一个主干和分支,你可以在 git 中以同样的方式设置它们。如果这对您不起作用,请仅在您发现需要时进行更改。

如果您想要更高级的东西,请查看git flow。另一个很好的工作流程是github 使用的工作流程。它的设计比 git flow 更简单。

如何托管存储库?

一种简单的方法是像使用 SVN 一样进行操作。在中央服务器上有一个中央存储库。每个人都在中央服务器上推拉。另一种选择是为某种首席开发人员提供“官方”存储库,当他们获得领导的批准时,该领导将从贡献开发人员那里提取其他更改。有很多方法可以做到这一点。你只需要决定什么最适合你。

我该如何部署?

同样,这也不需要从您的 SVN 工作流程中进行更改。你可能正在svn update从每个盒子里做一个。我只是git pull对每个盒子做一个,并保持其他一切都一样。

于 2012-10-31T14:56:35.213 回答
1

很大程度上取决于最终适合你的东西。

此处另一个答案中链接的分支模型是一个非常好的起点。

通常,您将拥有一个master代表已发布代码的分支。

暂存取决于您要暂存的内容 - 我们的团队有一个名为的单独分支staging,由持续集成服务器的暂存构建使用。可以将不同的功能合并到此分支中以在暂存时对其进行测试。

部署将取决于您是使用 CI 还是直接从 repo 中的分支部署。

于 2012-10-31T14:56:17.833 回答
0

我制定了自己的策略。它最初是基于 nvie 的:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

它允许临时混合和匹配已完成的功能。该策略的基石是每次迭代从历史中的同一位置开始每个特征。

于 2012-10-31T17:03:37.630 回答