从本地工作站到远程服务器的代码库复制

我们在我们的团队中有以下结构:

  • 在Bitbucket中使用Git与中央存储;
  • 使用开发远程服务器(Debian),其中包含主域(project.example.com)的“开发”分支的所有代码;
  • 每个开发人员在自己的子域(dev01.project.example.com)上都有自己的服务器实例(实际上是文档根目录下的子文件夹,CMF的不可更改的核心文件是symlinc)。

我们需要的是跟踪每个开发人员在远程实例中的所有本地代码库更改。

首先最明显的解决scheme是使用Git – 在开发服务器上创build远程存储库(-ies),并将本地实例的“推送”更改为远程。 但是这是最糟糕的解决scheme,因为开发人员将不得不为每一次更改(包括debugging消息和所有尝试修复一些错误输出)创build提交,这将会在Git的日志中填充大量无用的提交 ,所以开发人员将失去所有本地存储库的好处+在将更改推送到Bitbucket之前必须花费很多时间进行日志清理

第二个选项 – 本地服务器 。 但是这也带来了一些问题,因为在我们的结构中我们都使用单个数据库,所以复制远程数据库并将其与本地更改频繁合并会带来更多的复杂性。 此外,在本地工作站上复制开发环境也很困难 (基于Windows)。 我个人不喜欢每台机器上的本地服务器的想法,因为工作站服务于代码生产,而服务器 – 用于代码在真实环境中工作。

第三个选项 – FTP同步 。 我们都使用phpStorm,它有一个通过FTP远程同步的选项。 当你改变代码并按下Ctrl + S时,它就像一个魅力一样,所有你改变的东西立刻出现在一个远程实例上。 但是,如果你通过Git提取远程代码,你需要通过FTP 将本地文件与远程文件同步 – 而且这个速度太慢了 (我们的情况是15-20分钟),因为phpStorm比较了所有文件的内容(我们有〜目前我们的项目中有3k个php文件)。 当然,我们可以按比例进行比较,但这是不可靠的解决scheme。

第四个解决scheme – 桑巴 。 我们也尝试了。 与两个子解决scheme相比,这个速度并不快,

  1. 与位于已安装的Samba驱动器中的文件同步本地文件;
  2. 直接安装在驱动器上

第二个更糟,因为我们有互联网连接问题,phpStorm后永远挂起…

我也在寻找现有的解决scheme,但是大多数情况下,我发现的是同步实用工具,比如unison ,它必须手动运行,实际上不是,我在寻找 – 我不需要同步,但是复制实用程序 ,它监视一些本地文件夹,并将每一个改变的文件(或甚至更好的delta)推送到远程位置,而无需开发人员的交互。

所以,开发人员的工作stream程必须尽可能简单:

  • IDE中的Ctrl + S在远程复制;
  • git pull在远程复制;
  • git checkout在远程复制;
  • 等等…

一些东西,如Dropbox,但可以同步任何文件夹+从复制中排除一些子文件夹,并且只能单向工作:本地 – >远程。 哪些工具可以满足我们的需求?

花了一天的时间尝试失败后,终于找到了一个满足我的需求的工具: RealSync这不是完美的,但是它的工作还是不错的。 所以,我可以为任何有同样问题的人提供建议。

更新19.08.13最后,我找到了最好的解决方案:我们切换到PhpStorm IDE,并有一个部署功能,它允许您配置部署服务器,映射部署路径,忽略一些文件和文件夹从同步等。但最有用的选项位于设置: 部署 – >选项 – >自动上传更改文件到默认服务器(始终)+上传外部更改

这种组合使得可以放弃RealSync并从IDE本地使用同步。