我正在C#中编写一个小型控制台工具,需要知道SVN工作副本目录的修订号,以处理具有此编号的其他数据。通过直接读取所有.svn目录中的条目文件,我已经支持SVN 1.4到1.6。但 SVN 1.7 已将其更改为使用单个.svn目录及其中的SQLite数据库。
确定工作目录的修订号的最佳方法是什么?
我刚刚尝试使用SharpSVN,但它基本上没有记录,我无法弄清楚如何使用它。它也非常庞大,有5 MB,可能还有几个DLL。
我找不到一个可以免费下载的简单SVN命令行客户端。另外,上次我看过一个,它很庞大,由许多不完全便携的文件组成。 (如果我的工具只能作为单个.exe文件出现,那就太棒了。)
另一种选择是使用SQLite库(作为单独的DLL提供)并自己深入数据库。我已经对此进行了基础研究,但我不确定如何检测未提交的修改。
TortoiseSVN可能已经安装在将使用我的工具的机器上,因为它包含单个GUI应用程序中的所有内容,没有我可以重复使用的DLL。
答案 0 :(得分:1)
如果您不想使用SharpSVN并使用工作副本,则99%的主机可能拥有SVN CLI工具。
检查svnversion
的可训练性并将其称为svnversion <PATH-TO-WC>
,拦截输出
答案 1 :(得分:1)
我使用Tortoise SVN的命令行工具&#39; SubWCRev&#39;为此目的(http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html)。它允许确定最新版本,提交日期等...此解决方案的缺点是此工具使用文件,因此您需要定义模板文件并解析工具的输出文件。这对我有用。