Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储库信息(SVN)与Excel的集成_Svn_Excel_Vba - Fatal编程技术网

存储库信息(SVN)与Excel的集成

存储库信息(SVN)与Excel的集成,svn,excel,vba,Svn,Excel,Vba,我对这种事情不熟悉。这是有史以来第一篇关于编程的帖子,因为到目前为止,我设法用谷歌搜索了我所需要的一切。谢谢你的耐心:) 关于我的问题/目标: 在我们的项目中,我们必须进行某种文档管理控制。我们将有大约160个.docx文件(所有文件都已知),对于版本控制,我们将使用SVN。这些文件将保存在不同的文件夹中(接下来我将创建存储库结构),文件夹将具有我们目前在项目中所处阶段的功能(我们将有大约12个文件夹)。完成阶段后,标记aka。将正式发布。 每个文件都会在MS Excel工作表列中显示其位置,其

我对这种事情不熟悉。这是有史以来第一篇关于编程的帖子,因为到目前为止,我设法用谷歌搜索了我所需要的一切。谢谢你的耐心:)

关于我的问题/目标: 在我们的项目中,我们必须进行某种文档管理控制。我们将有大约160个.docx文件(所有文件都已知),对于版本控制,我们将使用SVN。这些文件将保存在不同的文件夹中(接下来我将创建存储库结构),文件夹将具有我们目前在项目中所处阶段的功能(我们将有大约12个文件夹)。完成阶段后,标记aka。将正式发布。 每个文件都会在MS Excel工作表列中显示其位置,其中包含以下数据:阶段、名称、修订、标记、超链接

我要做的是: 宏,该宏将搜索存储库中的文件,如果找到,请读取其版本,标记(最新)。。将其写入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,再次感谢!