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

Linux 从本地工作站到远程服务器的代码库复制,linux,windows,workflow,replication,sync,Linux,Windows,Workflow,Replication,Sync,我们的团队结构如下: 使用Git,在Bitbucket上进行中央存储 使用开发远程服务器(Debian),其中包含主域(project.example.com)中“开发”分支的所有代码 每个开发人员在服务器上都有自己的实例(实际上它是文档根目录中的一个子文件夹,带有CMF的不可更改核心文件的符号)和自己的子域(dev01.project.example.com) 我们需要的是跟踪每个开发人员在远程实例中的所有本地代码库更改 第一个最明显的解决方案是使用Git——在开发服务器上创建一个远程存储

我们的团队结构如下:

  • 使用Git,在Bitbucket上进行中央存储
  • 使用开发远程服务器(Debian),其中包含主域(project.example.com)中“开发”分支的所有代码
  • 每个开发人员在服务器上都有自己的实例(实际上它是文档根目录中的一个子文件夹,带有CMF的不可更改核心文件的符号)和自己的子域(dev01.project.example.com)
我们需要的是跟踪每个开发人员在远程实例中的所有本地代码库更改

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

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

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

第四种解决方案-Samba。我们也试过了。与FTP相比,这两个子解决方案的速度都不快:

  • 将本地文件与安装在Samba驱动器中的文件同步
  • 直接在安装的驱动器上工作
  • 第二个更糟,因为我们有互联网连接问题,phpStorm从此永远挂起

    我还搜索了一个现有的解决方案,但我发现的大多数东西都是同步实用程序,比如,它必须手动运行,实际上,它不是我想要的-我不需要同步,而是复制实用程序,它监视某个本地文件夹并推送每一个更改的文件(甚至更好-delta)在没有开发人员交互的情况下移动到远程位置

    因此,开发人员的工作流程必须尽可能简单:

    • IDE中的Ctrl+S在远程复制
    • 远程上的git pull复制
    • git签出在远程服务器上复制
    • 等等

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

    在又花了一天的时间尝试并失败后,我终于找到了一个满足我需要的工具: 它并不完美,但它的工作相当好。因此,我可以为任何有同样问题的人提供建议

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


    通过这种组合,可以从IDE中删除RealSync并以本机方式使用sync。

    在又花了一天时间尝试并失败后,我终于找到了一个满足我需要的工具: 它并不完美,但它的工作相当好。因此,我可以为任何有同样问题的人提供建议

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


    这种组合使删除RealSync并从IDE本机使用sync成为可能。

    我听说。。。这个问题使我发疯。我听说。。。这个问题使我发疯。