存储库信息(SVN)与Excel的集成
我对这种事情不熟悉。这是有史以来第一篇关于编程的帖子,因为到目前为止,我设法用谷歌搜索了我所需要的一切。谢谢你的耐心:) 关于我的问题/目标: 在我们的项目中,我们必须进行某种文档管理控制。我们将有大约160个.docx文件(所有文件都已知),对于版本控制,我们将使用SVN。这些文件将保存在不同的文件夹中(接下来我将创建存储库结构),文件夹将具有我们目前在项目中所处阶段的功能(我们将有大约12个文件夹)。完成阶段后,标记aka。将正式发布。 每个文件都会在MS Excel工作表列中显示其位置,其中包含以下数据:阶段、名称、修订、标记、超链接 我要做的是: 宏,该宏将搜索存储库中的文件,如果找到,请读取其版本,标记(最新)。。将其写入excel工作表,并在另一列中创建指向该文件的超链接 存储库结构:存储库信息(SVN)与Excel的集成,svn,excel,vba,Svn,Excel,Vba,我对这种事情不熟悉。这是有史以来第一篇关于编程的帖子,因为到目前为止,我设法用谷歌搜索了我所需要的一切。谢谢你的耐心:) 关于我的问题/目标: 在我们的项目中,我们必须进行某种文档管理控制。我们将有大约160个.docx文件(所有文件都已知),对于版本控制,我们将使用SVN。这些文件将保存在不同的文件夹中(接下来我将创建存储库结构),文件夹将具有我们目前在项目中所处阶段的功能(我们将有大约12个文件夹)。完成阶段后,标记aka。将正式发布。 每个文件都会在MS Excel工作表列中显示其位置,其
- 树干
- 系统开发
- 系统要求规范.docx
- System_Architecture_Description.docx
- 系统安全计划.docx
- 软件规划
- 软件质量保证计划docx
- 软件配置管理计划docx
- 系统开发
- 分支(可能不会被使用,还不确定)
- 标签
- 一,
- 系统开发
- 系统要求规范.docx
- System_Architecture_Description.docx
- 系统安全计划.docx
- 系统开发
- 二,
- 系统开发
- 系统要求规范.docx
- System_Architecture_Description.docx
- 系统安全计划.docx
- 软件规划
- 软件质量保证计划docx
- 软件配置管理计划docx
- 系统开发
- 一,
ShellAndWait(“cmd.exe/c svn list--verbose http:\\localhost\trunk>text.txt”)
,解析该文本文件以获取主干中的文件夹,然后检查这些文件夹中有哪些文件(使用另一个ShellAndWait等待每个文件夹),如果找到,则获取修订号等等
正如您最后看到的,在我的代码中,svn命令执行了13次,所以找到了存储库中的文件。使用svn列表--verbose,我还得到了修订号。执行svn命令的时间约为0.15-0.20秒,因此我的修订号收集时间约为2秒。这不是问题
获取标签是一个问题,因为我在文件夹中有文件夹,所以最终我们可能会有大约40个甚至更多的svn执行,这将使我的标签功能非常慢
我不知道如何使用svn.exe以任何其他方式访问存储库。我正在考虑远程访问存储库和查询数据库,或者其他任何事情,仍然在研究这一部分
希望你能理解我的问题,更多的信息我一整天都在用!谢谢你的帮助 您可以编写Java thing,它可以通过SVNKit直接访问SVN存储库,而无需调用SVN.exe,并从中提取信息,然后通过PIO framework写入Excel文件。可以构建为web应用程序并动态创建信息…svn列表有一个选项-R或-recursive来包含所有子文件夹。因此,将文件夹结构组织为所有必需的文件夹都是主文件夹的子文件夹,可以减少所需的调用次数。 或者,您可以使用--depth选项来控制要下降的子文件夹的深度 从svn帮助列表中提取输出:
-R [--recursive] : descend recursively, same as --depth=infinity
--depth ARG : limit operation by depth ARG ('empty', 'files',
'immediates', or 'infinity')
即。组织项目时,主干和分支在文件夹结构中处于相对较高的位置,不同的阶段在其下方。您可以使用.NET API访问存储库。看
不过,您可能需要使用VSTO而不是VBA 如果您使用的客户端(如Tortoise svn)提供了在vba中可用的对象,则可以查询存储库,而无需使用临时文本文件进行解析 相反,您可以直接在vba对象中获取信息: 例如:
Dim oSvn As Object
Set oSvn = CreateObject("SubWCRev.object.1")
workingCopy = path & "\" & filename
oSvn.GetWCInfo workingCopy, 1, 1
If Not oSvn.IsSvnItem Then
ErrorCode = -1
End If
这并不完全符合您的要求,它只是从vba代码直接查询存储库的一个示例。它写起来又快又容易
SubWCRev还提供了许多其他功能。
这是官方网页
你的具体问题是什么?我想我必须编辑我的帖子了。我的问题是,如何更快地访问SVN存储库信息,因为SVN.exe命令需要很长时间才能使宏正常工作。SVN命令不包括子文件夹。。如果是这样,请证明我错了:)重组我们的存储库是不可能的,不是我的决定!问题的出现首先是因为新的文件夹结构:(@krizajB-我刚刚选中:这不是默认值,而是递归子目录的选项:-R或--recursive。我将相应地编辑我的答案。谢谢!我将尝试使用它,真的希望我能找到它的一些用途。我一直在努力研究开关,从一周的研究中看不到最重要的开关:)对于那些可能想知道我是如何做到这一点的人来说。对于版本收集,我使用了如下svn命令:GetCommandOutput(“cmd.exe/c svn list-v-R http:/localhost/documents/trunk”),将该字符串解析到数组中,并将有用的信息插入到我的Excel工作表中。对于标记,我使用了更快的命令:GetCommandOutput(“cmd.exe/c svn list--depth infinity http:/localhost/documents/tags”),解析字符串以获取标记。Frank,再次感谢!