访问文件系统中的所有 Subversion 修订版本

访问文件系统中的所有 Subversion 修订版本

有人知道在文件系统中访问 Subversion 存储库的所有修订版本的方法吗?如果能够在本地引用文件(例如“/var/svn/repo/rev4235/project/trunk/file.c”)或类似文件,我会受益匪浅。

我可以相当直接地编写一些脚本来在手动创建的目录树或其他东西中手动暂存来自 subversion 的不同版本的文件,但直接进入 svn 会更可取。

[附言:我知道 svnfs,但这只展示了当前的修订版,虽然我已经能够在 apache 上创建我需要的确切功能,但我看不出有任何办法可以挂载该 Web 服务器,例如 httpfs(需要文件范围访问,我不认为在 mod_dav_svn 服务前面可以实现)或 mod_dav & davfs 等...(我可以在 mod_dav_svn 前面的 mod rewrite 前面提供只读 mod_dav 访问权限吗?!?!?)]

谢谢

克里斯

答案1

我不确定我是否理解正确,但如果您需要做的只是在同一个框上运行本地存储库访问表单脚本,那么您可以将file://URI 方案与 svn 命令行工具一起使用:

svn info -r <rev> file:///var/svn/repo/rev4235/project/trunk/file.c

大多数 svn 命令都可以在此运行,您甚至可以提交它,只要用户对存储库文件系统具有写权限。无论您为存储库选择哪种数据库后端,这都应该有效。

请注意,如果恰好在其他地方配置了身份验证(例如在 apache 配置中),则会绕过身份验证;这可能是一个问题,具体取决于您的环境。

答案2

嗯,这又是一个由于对 SVN 了解不够而无法理解自己需求的例子。我只需要为我想访问的每个版本创建标签,然后就不需要再回头修改来达到特定的修订版本了。难怪有些人觉得我的需求毫无意义,因为我的需求只是违背惯例,而且很大程度上是多余的。

不过还是感谢大家的回复,非常感谢

答案3

您可以将 repo 拖入 git(长时间的一次性导入):

git svn clone -s file:///var/svn/repo/project

并使用git fs访问内容。

git fs
cd .git/fs/HEAD/log
cd ~rev/worktree
cat file.c

免责声明:git fs 是我的作品。

答案4

为什么不简单地使用文件系统。总而言之,这就是您所寻找的。

至少它比将 repo 迁移到 git 更容易,只需使用 git fs。

相关内容