我最近才了解到 SVN 的 WebDAV 自动版本控制功能。虽然我知道这不是正确版本控制的替代品,但它的消息记录了更改集,但我觉得它是 Dropbox 的可靠且安全的替代品(减去漂亮的 GUI 和网页)。然而,由于自动版本控制中的提交很频繁,我想 Git 或 Hg 会更适合这个,只是因为它们的数据库更紧凑(尽管我想知道事物的分布式特性是否会使自动化难以解决冲突)。
据任何人所知,这是使用 Git 或 Hg 实现的功能吗?
我最近才了解到 SVN 的 WebDAV 自动版本控制功能。虽然我知道这不是正确版本控制的替代品,但它的消息记录了更改集,但我觉得它是 Dropbox 的可靠且安全的替代品(减去漂亮的 GUI 和网页)。然而,由于自动版本控制中的提交很频繁,我想 Git 或 Hg 会更适合这个,只是因为它们的数据库更紧凑(尽管我想知道事物的分布式特性是否会使自动化难以解决冲突)。
据任何人所知,这是使用 Git 或 Hg 实现的功能吗?
对于这个问题,市场上有一种选择:
WsgiDAV是一个 python WebDAV 服务器,它提供了包括 DVCS mercurial 在内的各种后端,以及一些其他时尚的商店(couchdb、mongodb、MySQL、App Engine)。请注意当前版本声称“这不是生产代码”。
它似乎与 SVN 的 WebDAV 不同的版本控制,自动版本控制,允许您一次提交包含多个更新的变更集(通过从“编辑”拖动到“发布”文件夹等,而 SVN+WebDAV 的自动版本控制创建了太多的提交,创建了一个每次更改的版本。所以它不是完全自动版本控制,但它不需要命令行访问,并且是 IMO 一个更好的模型。
更一般地考虑这一点......我根本不推荐自动提交 WebDAV+SVN 的东西。正如您所说,“自动版本控制中的提交很频繁”。但它们非常频繁,而且通常毫无意义。
我自己的解决方案是在我的服务器上运行 git 或 mercurial 存储库,并使用 cron-job 定期对其进行版本更改。丑陋,但功能齐全,并且不需要特殊的服务器设置/不需要特殊的 apache 模块/等。更好的是,我可以根据我的需要通过 WebDAV、SFTP 或 windows/apple 文件共享或本地 DVCS 镜像访问所述存储库,并且它们都可以无缝工作。
例如,Git 具有非常好的文件移动检测功能,因此这减少了对 WebDAV 访问本身的需求。然而,如果一个人在 SVN 结帐中移动一个目录,而没有通过将其转换为svn mv
命令的访问层,那么可能会导致可怕的损坏。AFAICT,WebDAV+SVN 的主要好处是它可以防止您以这种方式破坏自己的结帐。
另一方面,在这种情况下,git 或 mercurial 的“紧凑型数据库”并不是比 SVN 更喜欢它们的真正理由。但是,如果您正在考虑处理真正的同步冲突,我会推荐它们中的任何一个而不是颠覆,因为它们具有出色的冲突解决方案和一般较低级别的大惊小怪/灵活性。
除了 SVN 之外,似乎没有人为其他 VCS 编写自动版本控制。由于 WebDAV/DeltaV 支持是在 SVN 服务器中实现的,因此不可能仅将 VCS 切换到 SVN 以外的位置。
几乎所有 DVCS 都可以进行普通 WebDAV 访问,但它们只能访问 WebDAV 客户端的存储库和 DVCS 自己的客户端的推送操作,但没有自动版本控制。
一些链接可以阅读更多信息: