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