长话短说,我需要构建一个简单的保管箱克隆来与我的服务器同步文件。
我做了功课,做了很多研究,但我找到的解决方案(代码和已经烘焙的解决方案)似乎都不够好。
我也阅读了关于 stackoverflow 的其他帖子,唯一的区别是我需要在文件系统事件上触发同步任务。此外,git 已经被用于真正的版本控制目的,我不能将它用于这个同步任务。
这是我的设置:
我在 github 上有一个 git 存储库,我使用 capistrano 进行定期部署。这是我的问题:我们有基础设施和数据影响,因此无法进行真正的本地开发。
我的代码可以存在本地,我可以在 github 上对其进行版本控制,但它需要在服务器上运行,即使我在做开发。为了避免牛仔发展,我想出了这个解决方案:
请记住,这仅针对前端层,其中涉及数百个tpl(html + smarty),css和js文件*
master 分支面向公众运行
- 当登录我们的实时应用程序时,开发人员可以切换到“开发人员模式”并指向服务器上存在的不同存储库。这个“幽灵”存储库只是开发人员本地工作副本的精确副本。它通过保管箱克隆与开发人员的本地存储库保持同步。
这样,这可以是我们的工作流程:
- 开发人员在所有东西上都在本地工作
- 每次本地更改时,“ghost”开发人员存储库也会更新,并且可以在服务器上进行测试
- 当开发人员对结果感到满意时,他可以提交并推送到开发分支
- 当团队准备好发布新版本时,所有提交都可以通过 capistrano 进行部署
这样一来,当涉及到 git 工作流程时,每个开发人员的 ghost 存储库就完全脱离了画面(就 git 而言,这些 ghost 存储库甚至不存在,它们只是开发人员的实用程序)。
鉴于这个(很长!)前提,这些是我需要的功能:
- 通过 ssh 同步的能力
- 触发文件系统事件的同步(创建/更新/删除文件和目录)
- 仅以 rsync 样式同步更新(增量编码),基本上只是差异
- 可能是跨平台(windows/mac)解决方案
在“已经制定”的解决方案中:
- 好同步
- 超级灵活的文件同步器
- 计时同步
只有 GoodSync 似乎提供了我需要的东西,但我无法以任何可能的方式使自动更新功能(文件系统更新同步)工作。
在我必须自己做的食谱中,我读过关于 FSEvents、inotify (linux) + rsync 选项,但它们可能有点超出我的范围(我可以做基本的 applescripts,FSEvents 可能不是很多API 或 inotify)
这就是我现在所处的位置。我对任何类型的建议持开放态度,我提前感谢您就该主题分享的任何内容。
谢谢!