代码之家  ›  专栏  ›  技术社区  ›  krizajb

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

  •  3
  • krizajb  · 技术社区  · 16 年前

    我对这种事还不熟悉。这是有史以来第一篇关于编程的帖子,因为到目前为止,我成功地用谷歌搜索了所有我需要的东西。感谢您的耐心:)。

    在我们的项目中,我们必须有某种文件管理控制。我们将有大约160个.docx文件(所有文件都已经知道),对于版本控制,我们将使用SVN。这些文件将保存在不同的文件夹(进一步我将使存储库结构),文件夹将有一个阶段,我们目前在我们的项目功能(我们将有大约12个文件夹)。当一个阶段完成时,标记aka。正式发布。

    存储库结构:

    • 树干
        • 系统架构描述.docx
        • 系统安全计划.docx
        • ...
        • 软件质量保证计划.docx
        • 软件\配置\管理\计划.docx
        • ...
      • ...
        • 系统开发
          • 系统需求规范.docx
          • 系统架构描述.docx
          • 系统安全计划.docx
      • 2
          • 系统需求规范.docx
          • 系统架构描述.docx
          • 系统安全计划.docx
          • ...
        • 软件规划
          • 软件质量保证计划.docx
          • 软件\配置\管理\计划.docx

    我已经做了一个宏,可以做精确的事情,但问题是它非常慢。如何以及为什么?

    ShellAndWait("cmd.exe /c svn list --verbose http:\\localhost\trunk > text.txt") ,解析该文本文件以获取中继中的文件夹,然后检查这些文件夹中有哪些文件(使用另一个shell并等待每个文件夹),如果找到这些文件,则获取修订号,依此类推。。

    获取标签是一个问题,因为我有文件夹中的文件夹,所以最终我们可能会有大约40甚至更多的svn执行,这将使我的标签功能非常慢。

    我不知道如何使用svn.exe以任何其他方式访问存储库。我正在考虑远程访问存储库和查询数据库或者其他什么,仍然在研究这一部分。

    希望你能理解我的问题,更多的信息我一整天都在用!谢谢你的帮助!

    4 回复  |  直到 16 年前
        1
  •  1
  •   Frank    16 年前

    svn list有一个选项-R或--recursive来包含所有子文件夹。因此,将文件夹结构组织为所有必需的文件夹都是主文件夹的子文件夹,可以减少所需的调用数。 或者,可以使用--depth选项来控制要下降的子文件夹的深度。

    svn help list 输出:

      -R [--recursive]         : descend recursively, same as --depth=infinity
      --depth ARG              : limit operation by depth ARG ('empty', 'files',
                                'immediates', or 'infinity')
    

    一。e。以这样一种方式组织项目:主干和分支在文件夹结构中处于相对较高的位置,不同的阶段在该位置之下。

        2
  •  0
  •   khmarbaise    16 年前

    您可以编写一个Java thing,它可以通过SVNKit直接访问SVN存储库,而无需调用SVN.exe,并从中提取信息,然后通过PIO框架写入Excel文件。它可以构建为一个web应用程序,并动态创建信息。。。

        3
  •  0
  •   Community Mohan Dere    9 年前
        4
  •  0
  •   nico    9 年前

    如果您使用像Tortoise svn这样的客户机来提供在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还有很多其他的功能。

    https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev-com-interface.html