2010-06-28 138 views
3

我想知道,是否有可能创建并向客户端上的Mercurial存储库提供 某些具有RW访问权限的FTP文件夹。有人做过这样的事吗? 预先感谢您。FTP上的Mercurial存储库

回答

2

所有的事情都是可能的。但那会很难。

网络传输重要的位在克隆存储库时,而standard ways of doing that则依赖于通过HTTP提供服务或对存储库主机具有SSH访问权限。据我所知,没有基于FTP的克隆传输。

如果这就是只有共享机制,你可以使用,那么你可以使用Mercurial bundles工作。该程序会像下面这样:

  1. 提交您的编辑以本地资源库
  2. 请使用hg bundle --all my-bundle.hg
  3. FTP my-bundle.hg服务器

库的其他用户捆绑然后可以使用FTP将my-bundle.hg文件检索到其本地计算机,转到其本地副本的存储库,然后hg pull my-bundle.hg以获取捆绑中但未在本地代表中的任何修订ository。当他们想要分享他们的变化时,他们会像上面那样制作一个全新的包,并将其推回服务器。 --all选项将所有的变更集合放入捆绑包文件中 - 您可以更清楚并且只导出“最近”更改,但会变得稍微复杂一些,并且有可能失去更改集:使用--all是残酷但安全的。

这里显然存在相当多的混淆,竞争条件(时间戳文件名可能有所帮助)以及头发拔出,并且用户无疑会欣赏一些脚本以使其更容易,已经有可用的是一个FTP服务器,你没有很多选择。

祝你好运。

0

This question on SuperUser可能很有趣。核心思想似乎围绕运行一个后台进程,将本地文件夹与远程ftp文件夹进行同步。哪些可能对你有用。

但我不知道当多个用户同时尝试同步时会发生什么。由于使用这种方法绕过了mercurial关于锁定树等的所有保护。

2

只是为了完整起见,因为我有同样的问题,并认为还有另一个更简单的解决方案:

上的本地文件夹的Mercurial克隆“只是工作”,因此,如果您安装了FTP作为本地文件夹或驱动器,你可以推/拉/克隆到(并使您的存储库在ftp上)。

在Windows上,您可以请使用FTPUseNetDrive将您的FTP文件夹装载为本地驱动器,前者是免费的,但是CLI工具可在程序关闭时删除虚拟驱动器,后者具有GUI,但仅供个人使用,不提供在Win8上工作(还)。我现在手头没有Linux机器,但您应该可以使用ftpfs来实现相同的功能。一旦你做了它(你的ftp服务器现在映射到f :),你可以简单地使用该虚拟驱动器(或任何子文件夹)作为你的mercurial操作的远程目标。对我来说就像一个魅力。

+0

不幸的是,在Windows 7 64位上我都不适用。我可以将FTP安装为驱动器,但是当尝试执行克隆或推送时,Mercurial会提供有关“找不到文件”或类似文件的各种错误。在本地,它可以工作,所以它在所有系统上似乎都不可靠。 – Fenikso 2014-04-20 20:46:50