1

长话短说,我需要构建一个简单的保管箱克隆来与我的服务器同步文件。

我做了功课,做了很多研究,但我找到的解决方案(代码和已经烘焙的解决方案)似乎都不够好。

我也阅读了关于 stackoverflow 的其他帖子,唯一的区别是我需要在文件系统事件上触发同步任务。此外,git 已经被用于真正的版本控制目的,我不能将它用于这个同步任务。

这是我的设置:

我在 github 上有一个 git 存储库,我使用 capistrano 进行定期部署。这是我的问题:我们有基础设施和数据影响,因此无法进行真正的本地开发。

我的代码可以存在本地,我可以在 github 上对其进行版本控制,但它需要在服务器上运行,即使我在做开发。为了避免牛仔发展,我想出了这个解决方案:

  • 请记住,这仅针对前端层,其中涉及数百个tpl(html + smarty),css和js文件*

  • master 分支面向公众运行

  • 当登录我们的实时应用程序时,开发人员可以切换到“开发人员模式”并指向服务器上存在的不同存储库。这个“幽灵”存储库只是开发人员本地工作副本的精确副本。它通过保管箱克隆与开发人员的本地存储库保持同步。

这样,这可以是我们的工作流程:

  1. 开发人员在所有东西上都在本地工作
  2. 每次本地更改时,“ghost”开发人员存储库也会更新,并且可以在服务器上进行测试
  3. 当开发人员对结果感到满意时,他可以提交并推送到开发分支
  4. 当团队准备好发布新版本时,所有提交都可以通过 capistrano 进行部署

这样一来,当涉及到 git 工作流程时,每个开发人员的 ghost 存储库就完全脱离了画面(就 git 而言,这些 ghost 存储库甚至不存在,它们只是开发人员的实用程序)。

鉴于这个(很长!)前提,这些是我需要的功能:

  • 通过 ssh 同步的能力
  • 触发文件系统事件的同步(创建/更新/删除文件和目录)
  • 仅以 rsync 样式同步更新(增量编码),基本上只是差异
  • 可能是跨平台(windows/mac)解决方案

在“已经制定”的解决方案中:

  • 好同步
  • 超级灵活的文件同步器
  • 计时同步

只有 GoodSync 似乎提供了我需要的东西,但我无法以任何可能的方式使自动更新功能(文件系统更新同步)工作。

在我必须自己做的食谱中,我读过关于 FSEvents、inotify (linux) + rsync 选项,但它们可能有点超出我的范围(我可以做基本的 applescripts,FSEvents 可能不是很多API 或 inotify)

这就是我现在所处的位置。我对任何类型的建议持开放态度,我提前感谢您就该主题分享的任何内容。

谢谢!

4

2 回答 2

2

使用 lsyncd 和 samba 共享以实现 Windows 兼容性

我会推荐一个带有 samba 共享的本地 linux 服务器,开发人员可以在该服务器上本地工作。然后,本地服务器将使用lsyncd(用户友好的 inotify/rsync/ssh 解决方案)与您的远程服务器同步。我已经部署了一个非常成功的解决方案,而且它很容易设置(没有高级/自定义脚本)。

还请查看以下内容:

于 2012-10-06T17:41:41.943 回答
0

在我看来,你正试图以艰难的方式做到这一点。

我在一个软件项目上工作,该项目有大量的源代码,最好在服务器上构建,而不是在我的家用机器上,我只是通过 ssh 进入服务器并以这种方式编辑源代码。(实际上,我使用 NX 来使用远程 X-windows 会话,但它相当于同一件事。)服务器在加利福尼亚,我在英国,延迟不是问题,所以除非你是在一个糟糕的连接上运行,我没有看到任何更好的意义。

如果您必须使用本地编辑器,请尝试使用 sshfs 挂载远程系统。这并不理想,但它有效。我不建议以这种方式扫描大量文件。

否则,如果您必须使用镜像目录,为什么它必须是自动的?开发人员肯定知道他什么时候想要测试更改并且可以点击 rsync 按钮吗?

于 2012-04-26T15:32:53.717 回答