【问题标题】:Determine SVN working copy revision from C#从 C# 确定 SVN 工作副本修订版
【发布时间】:2013-04-11 13:43:37
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

标签: c# svn


【解决方案1】:

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

检查svnversion的可调用性并将其命名为svnversion <PATH-TO-WC>,拦截输出

【讨论】:

  • 直到今天,我都在单独使用 TortoiseSVN 和 Ankh,我的电脑上没有 SVN CLI。但是我注意到有一个设置选项可以在 TortoiseSVN 1.7 中包含 CLI 二进制文件,所以我可能会坚持使用它并从那里使用 CLI。这将是一个简单的设置过程。所以你们两个建议使用外部 CLI 工具是最好的方法,对吧?
  • @LonelyPixel - 不是最好的,来自我的 POV(外部依赖,你无法解决),但最简单
【解决方案2】:

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

【讨论】:

  • 没有模板和目标文件 SubWCRev 输出到标准输出
猜你喜欢
  • 2015-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 2011-03-07
相关资源
最近更新 更多