Git 或 Hg 或任何现代 VCS 中的 WebDAV 自动版本控制

Posted

技术标签:

【中文标题】Git 或 Hg 或任何现代 VCS 中的 WebDAV 自动版本控制【英文标题】:WebDAV auto-versioning in Git or Hg or any modern VCS 【发布时间】:2011-01-11 07:12:24 【问题描述】:

我最近才了解到 SVN 的 WebDAV 自动版本控制功能。虽然我知道这不是正确版本控制的替代品,但有记录更改集的消息,它让我觉得它是 Dropbox 的可靠和安全的替代品(减去漂亮的 GUI 和网页)。然而,由于自动版本控制中的提交很频繁,我想 Git 或 Hg 会更适合这个,只是因为它们的数据库更紧凑(尽管我想知道事物的分布式特性是否会使自动化难以解决冲突)。

据任何人所知,这是使用 Git 或 Hg 实现的功能吗?

【问题讨论】:

【参考方案1】:

市场上有一个解决这个问题的选择:

WsgiDAV 是一个 python WebDAV 服务器,提供各种后端including the 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 更喜欢它们的真正理由。但是,如果您正在考虑处理真正的同步冲突,我会推荐它们中的任何一个而不是颠覆,因为它们具有出色的冲突解决方案和一般较低的大惊小怪/灵活性。

【讨论】:

【参考方案2】:

除了 SVN 之外,似乎没有人为其他 VCS 编写自动版本控制。由于 WebDAV/DeltaV 支持是在 SVN 服务器中实现的,因此不能仅将 VCS 切换到 SVN 以外的服务器。

几乎所有 DVCS 都可以进行普通 WebDAV 访问,但它们只能访问 WebDAV 客户端的存储库和 DVCS 自己的客户端的推送操作,但不能进行自动版本控制。

一些阅读链接:

Export Git repo via HTTP Accessing Git repo via WebDAV WebDAV and Autoversioning with SVN

【讨论】:

以上是关于Git 或 Hg 或任何现代 VCS 中的 WebDAV 自动版本控制的主要内容,如果未能解决你的问题,请参考以下文章

“git log --graph”或“hg graphlog”如何工作?

如何从 designsync 迁移到 git/hg/bzr/svn?

Git版本控制系统VCS

合并:Hg/Git 与 SVN

使用hg convert将git repo转换为mercurial时出错

Git介绍