【问题标题】:Does another version control system have a ClearCase-like filesystem access to file versions?另一个版本控制系统是否对文件版本具有类似于 ClearCase 的文件系统访问权限?
【发布时间】:2011-02-24 00:15:09
【问题描述】:

在 ClearCase 中,如果我正在处理某个文件 X 并且还想查看它的先前版本(比如版本 5),则可以使用 X@@/main/5。其他(最好是免费的)版本控制系统是否有类似的功能?

Mercurial 有 hg cathg co,但它们仍然无法接近 ClearCase 的上述功能。

【问题讨论】:

    标签: git mercurial clearcase


    【解决方案1】:

    通过 Google 快速搜索发现 gitfs

    gitfs 是一个基于 FUSE 的文件系统,用于处理存储在 git 存储库。最终目标是提供一种便捷的工作方式 有很多分支和补丁。目前只有非常基本的功能 已实现——对现有标签和对象的只读访问。

    可能还有其他(更活跃的)项目提供类似的功能(适用于 Git 和其他 VCS)。

    【讨论】:

      【解决方案2】:

      基本上,您想要处理任意修订的每个hg 命令都可以 - 在hg 中使用-r 就像一直在明文中使用@@ 一样。 hg "only" 需要 -r 因为文件的版本不是独立于存储库的,所以给定一个文件和一个 repo 版本,-r 是明确的。

      如果您想编辑文件,管道hg cat 与读取file@@/branch/ver 完全相同 - 它们提供完全相同的(只读)数据访问权限。

      如果您希望在 Mercurial 中通过 MVFS 获得动态视图的便利性,那是一个完全不同的问题,而且您无法真正做到(您可以通过 NFS 只读方式进行,但显然那里没有版本控制)。

      【讨论】:

        【解决方案3】:

        首先,X@@/main/5 是一个 extended pathname,您只能在 dynamic views 中真正探索它。

        第二,可以快速access an older version of a file in Git

        git show REVISION:path/to/file
        

        (文件的路径始终来自 git 存储库的根目录)
        并且您可以将 git show 用于其他用途(例如see the file as it is in another branch

        请参阅"How to retrieve a single file from specific revision in Git?" 了解更多信息。


        就基于修订的文件系统的动态探索而言,Git 的 hgfs 等价物是:

        • gitfs 基于 FUSE 的文件系统,用于处理存储在 git 存储库。

        figfs(Git 文件系统的文件系统接口),它扩展了 gitfs。

        存储库以文件系统的形式呈现,允许同时查看项目代码的多个版本和分支,而无需重新配置用户的工作区。

        为了提供文件系统服务,figfs 使用Filesystem in User space (FUSE)

        来自work of Reilly Grant

        FUSE 应用程序允许将文件系统实现为用户空间进程。
        应用程序的请求通过 VFS 层传递到 FUSE 驱动程序,该驱动程序 将请求发送到用户空间文件系统守护进程。
        Figfs 然后通过普通文件系统访问 Git 存储库并将结果数据返回给应用程序。

        【讨论】:

        • 根据 Greg 的评论,我找到了 ueber.net/code/man/hgfs/tip/man/4/hgfs.html 。这对 mercurial 做了类似的事情。我选择文件系统接口而不是hg cat 和类似命令的原因是这些命令需要一个额外的步骤来提取必须在 IDE 之外完成的修订。例如如果我正在使用 xfig 绘制原理图并且想要加载具有文件系统接口的第 5 个修订版,则允许我执行直接文件->打开操作,而 hg cat 需要一个额外的步骤来在使用前转储修订版。
        • @Vijay:明白。我已经完成了我的答案并为 git 添加了等效的 hgfs:figfs。
        • OP 没有指定操作系统,并且您忘记提及 FUSE(以及 hgfs、gitfs 和 figfs)仅适用于 Linux。不是每个人都运行 Linux :)
        猜你喜欢
        • 1970-01-01
        • 2017-11-26
        • 2011-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多