长话短说,我需要构建一个简单的保管箱克隆来与我的服务器同步文件。
我做了功课,做了很多研究,但我找到的解决方案(代码和已经烘焙的解决方案)似乎都不够好。
我也阅读了有关stackoverflow的其他帖子,唯一的区别是我需要在文件系统事件上触发同步任务。此外,git 已经用于真正的版本控制目的,我不能将其用于此同步任务。
这是我的设置:
我在 github 上有一个 git 存储库,我使用 capistrano 进行定期部署。这是我的问题:我们有基础设施和数据影响,这使得不可能进行真正的本地开发。
我的代码可以存在于本地,我可以在 github 上对其进行版本控制,但它需要在服务器上运行,即使我进行开发也是如此。为了避免牛仔发展,我想出了这个解决方案:
-
请记住,这仅适用于前端层,涉及数百个TPL(HTML + Smarty),CSS和JS文件 *
-
主分支面向公众运行
- 登录我们的实时应用程序后,开发人员可以切换到"开发人员模式"并指向服务器上存在的其他存储库。这个"幽灵"存储库只是开发人员本地工作副本的精确副本。它通过保管箱克隆与开发人员的本地存储库保持同步。
这样,这可以成为我们的工作流程:
- 开发人员确实在本地处理所有内容
- 每次在本地更改某些内容时,"ghost"开发人员存储库也会更新,并且可以在服务器上进行测试
- 当开发人员对结果感到满意时,他可以提交并推送到开发分支
- 当团队准备好发布新版本时,所有提交都可以通过 capistrano 部署
这样,当涉及到 git 工作流时,每个开发人员的幽灵存储库完全不在画面中(就 git 而言,这些幽灵存储库甚至不存在,它们只是开发人员的实用程序)。
鉴于这个(长!)前提,这些是我需要的功能:
- 能够通过 SSH 同步
- 触发文件系统事件的同步(创建/更新/删除文件和目录)
- 仅以 rsync 样式(增量编码)同步更新,基本上只是差异
- 可能是跨平台(Windows/Mac)解决方案
在"已经做出的"解决方案中:
- 好同步
- 超级灵活的文件同步器
- 时间同步
只有 GoodSync 似乎提供了我需要的东西,但我无法使自动更新功能(文件系统更新同步)以任何可能的方式工作。
在我必须自己制作的食谱中,我已经阅读了有关FSEvents,inotify (linux) + rsync选项的信息,但它们可能有点超出我的范围(我可以做基本的Applescript,使用FSEvents API或inotify可能不多)
这就是我现在所处的位置。我对任何类型的建议都持开放态度,我提前感谢您就该主题分享的任何内容。
谢谢!
使用 lsyncd 和 samba 共享来实现 Windows 兼容性
我会推荐一个带有桑巴共享的本地 linux 服务器,开发人员在本地工作。然后,本地服务器将使用 lsyncd(用户友好的 inotify/rsync/ssh 解决方案)与您的远程服务器同步。我已经部署了一个非常成功的解决方案,它非常容易设置(没有高级/自定义脚本)。
另请查看以下内容:
- 俄罗斯国际航空公司(跨平台)
- OwnCloud(跨平台)
,你正在尝试以艰难的方式做到这一点。
我从事的软件项目具有较大的源代码库,最好构建在服务器上,而不是我的家用机器上,我只需 ssh 到服务器并以这种方式编辑源代码。(实际上,我使用 NX 来使用远程 X-windows 会话,但它相当于一回事。服务器在加利福尼亚,我在英国,延迟不是问题,所以除非你通过糟糕的连接操作,否则我看不出有什么比这更花哨的了。
如果必须使用本地编辑器,请尝试使用 sshfs 挂载远程系统。这并不理想,但它有效。不过,我不建议以这种方式扫描大量文件。
否则,如果必须使用镜像目录,为什么它必须是自动的?开发人员肯定知道他什么时候想测试更改并且可以点击 rsync 按钮吗?