0

我正在用 C# 编写一个小型控制台工具,它需要知道 SVN 工作副本目录的修订号才能处理具有此编号的其他数据。通过直接读取所有 .svn 目录中的条目文件,我已经支持 SVN 1.4 到 1.6。但是SVN 1.7已将其更改为使用单个 .svn 目录,其中包含 SQLite 数据库。

确定工作目录的修订号的最佳方法是什么?

我刚刚尝试使用 SharpSVN,但它基本上没有记录,我不知道如何使用它。它也非常大,有 5 MB 和可能有几个 DLL。

我找不到可免费下载的简单 SVN 命令行客户端。另外,上次我看到一个,它很大,由许多文件组成,不完全可移植。(如果我的工具仅作为单个 .exe 文件提供,那就太好了。)

另一种选择是使用 SQLite 库(以单独的 DLL 形式提供)并自己挖掘数据库。我已经对此进行了基础研究,但我不确定如何检测未提交的修改。

TortoiseSVN,很可能已经安装在将要使用我的工具的机器上,不能使用,因为它包含单个 GUI 应用程序中的所有内容,没有我可以重用的 DLL。

4

2 回答 2

1

如果您不想要 SharpSVN 并使用工作副本,那么在 99% 的主机中可能有 SVN CLI 工具。

检查可调用性svnversion并调用它svnversion <PATH-TO-WC>,拦截输出

于 2013-04-11T15:31:35.503 回答
1

为此,我使用 Tortoise SVN 的名为“SubWCRev”的命令行工具(http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html)。它允许确定最新版本、提交日期等...该解决方案的缺点是该工具使用文件,因此您需要定义模板文件并解析工具的输出文件。不过,这对我很有用。

于 2013-04-12T07:39:44.993 回答