2012-11-11 49 views
1

我一直在寻找适合我们的工作流程,但仍无法找到完整的工作流程。希望你能帮助我们,一个由两个开发人员组成的简单团队!Git工作流程和部署,同步

据我所知,最好的工作流是使用git将所有更改推送到通用开发服务器,然后将这些更改上传到部署服务器。

有很多这方面的指南,如果所有的改变都是由我们的开发人员完成的,很容易解决。我认为常见的问题是,部署服务器上也发生了很多变化。常见的一种情况是最终用户在CMS中上传新图像。一些最终用户甚至通过CMS界面编辑CSS文件。我们如何让开发服务器和部署服务器同步? Git的? rsync的?组合?

/马丁

回答

1

这是一个普遍的做法,所以你永远需要更新从生产服务器端存储库不被跟踪的Git用户相关的变化。

用户图像应放置在单独的目录,中央资产服务器或Amazon S3上。将CMS相关的更改存储在数据库中也是一个好主意。

1

您必须从概念上将代码更改与内容更改(特别是用户生成的内容)分开。 Git不适合做整个站点的备份,所以索引快速变化的用户内容只会造成一个过大的存储库,效率低下,最重要的是不可移植。

使用Git来跟踪允许用户编辑/贡献/维护其内容的文件更改。使用中央服务器(我们使用gitolite)作为您的工作流程。正如@iltempo提到的那样,将用户生成的内容分开,并使用.gitignore将其保存在存储库中。

随着Git仓库,你可以使用git挂钩执行脚本 - 很多人使用这些自动部署,但你可以很容易地使用rsync有备份和自动同步您的服务器。 rsync非常适合您,因为您可以选择仅添加新内容,从而降低交易时间。因此,从概念上讲,git负责代码,rsync负责处理所有其他事情,而git钩子则可以实现这一点。

我们将此与我们的CMS一起使用,它是一种救生员。

+0

好的,这听起来很有趣,我理解你的想法! 现在它只是打我;如果开发人员通过开发人员计算机上的CMS上传图片,该怎么办?根据我的理解,我们只是从生产服务器同步DOWN文件,现在我需要同步UP。也许最好是像Unison那样使用或多或少克隆目录? –

+0

什么是最好的与钩子,当前签出的分支或总是主分支同步? –

+0

你的CMS图片问题更多的是一个rsync问题比git - 你可以设置(但是你希望)一个自动化的脚本,在向上的方向同步你的服务器,或者在这种特殊情况下使用FTP来移动这些文件并使它们成为通过rsync同步备份到其他人。完全取决于你,你有很大的灵活性。就钩子同步而言,生产服务器最好是在检查稳定的分支时处理;但这绝对是一个指导方针,取决于您的工作流程以及您发布更改的频率。 – Nic

0

粗略地说,您需要排除源树和/或部署过程中的某些文件夹/文件。 Rsync可以。

您要做continuous integration?我想建议您使用Jenkins

使用Jenkins,您可以自动化构建,尽可能自动执行测试,甚至可以在将提交推送到Git存储库,登台服务器或生产时部署应用程序。

Jenkins不仅限于Java项目,您可以使用它构建任何项目。