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

时间:2013-02-20 22:05:55

标签: linux windows workflow replication sync

我们团队中有以下结构:

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

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

第一个最明显的解决方案是使用 Git - 在开发服务器上创建一个远程存储库(-ies)并从本地实例“推送”更改到远程。但这是最糟糕的解决方案,因为开发人员必须为每一次更改创建提交(包括调试消息和所有尝试修复一些错误输出),这将使用吨无用的提交填充Git的日志 ,所以开发人员将失去本地存储库的所有好处+将花费大量时间进行日志清理,然后再将其更改推送到Bitbucket。

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

第三个选项 - FTP同步。我们都使用phpStorm,它有一个通过FTP远程同步的选项。当它更改代码并按Ctrl + S时,它就像魅力一样工作 - 所有更改都会立即显示在远程实例上。但是,如果您通过Git提取远程代码,则需要通过FTP将本地文件与远程同步 - 这会运行太慢(在我们的案例中为15-20分钟) ),因为phpStorm比较了所有文件的内容(我们目前在我们的项目中有~3k个php文件)。当然,我们可以按大小进行比较,但这是不可信赖的解决方案。

第四种解决方案 - Samba 。我们也试过了。对于两个子解决方案来说,比FTP 快得多:

  1. 将本地文件与安装在Samba驱动器中的文件同步;
  2. 直接在已安装的驱动器上工作
  3. 第二个更糟糕,因为我们有互联网连接问题,phpStorm之后永远挂起......

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

    因此,devs工作流程必须尽可能简单:

    • IDE中的Ctrl + S在远程复制;
    • git pull replicates on remote;
    • git checkout在remote上复制;
    • 等......

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

1 个答案:

答案 0 :(得分:1)

经过一天的尝试并失败后,我终于找到了满足我需求的工具:RealSync 它并不完美,但它的工作相当不错。所以,我可以为有同样问题的人提供建议。

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

这种组合可以删除RealSync并从IDE本地使用同步。