【问题标题】:reading SVN:externals from working copy从工作副本中读取 SVN:externals
【发布时间】:2011-11-03 01:28:28
【问题描述】:

直到最近,只需读取存储在 .svn 子目录中的一些文本文件,就可以轻松读取 subversion 工作副本中引用的所有 SVN:Externals。随着使用 mysql 表更改为新的磁盘结构,这不再那么简单了。

我想更新一个用于读取外部列表的内部使用工具,以使用新结构。该工具是用 Delphi 2007 编写的,所以我更喜欢用 Delphi 编写的一些代码。

sourceforge 上有 Version Insight for RAD Studio,它可能包含一些代码来解决这个问题,但我想知道是否有其他机构已经完成了从该项目中提取所需部分的工作或有替代方案。

【问题讨论】:

  • 您可以使用 subversion 命令行实用程序来确定吗?这始终是正确的做法。
  • 喜欢svn propget svn:externals?

标签: delphi svn


【解决方案1】:

您也可以使用 Subversion 客户端 DLL 以编程方式执行此操作。这是一个用 Delphi XE 编写的最小示例:

program svnext;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  SvnClient;

procedure Main;
var
  SvnClient: TSvnClient;
  SvnItem: TSvnItem;
begin
  // Subversion client DLL directory; here I simply use the .exe's directory
  // (I copied the DLLs there manually.)
  BaseDllDir := ExtractFilePath(ParamStr(0));

  SvnClient := nil;
  SvnItem := nil;
  try
    SvnClient := TSvnClient.Create;
    SvnClient.Initialize;
    SvnItem := TSvnItem.Create(SvnClient, nil, ParamStr(1));
    Writeln(SvnItem.PropValues['svn:externals']);
  finally
    SvnItem.Free;
    SvnClient.Free;
  end;
end;

begin
  try
    Main;
  except
    on E: Exception do
    begin
      ExitCode := 1;
      Writeln(Format('[%s] %s', [E.ClassName, E.Message]));
    end;
  end;
end.

您可能需要调整 Delphi 2007 的代码。似乎 Version Insight 在此期间已经发展并失去了(部分)向后兼容性。

【讨论】:

  • 这正是我想要的。谢谢!
  • @dummzeuch 欢迎您,很高兴它对您有所帮助!
  • @WarrenP: Yes.
  • 这是Delphi的TSvnClient的最多文档!
【解决方案2】:

如果您可以调用 svn 可执行文件,那么很容易找到存储在您的存储库中的所有外部文件:

svn propget -R svn:externals .

将返回:

first/path/to/external - name_of_first_external http://first_repos/that/is/in/external
second/path/to/external - name_of_second_external http://second_repos/that/is/in/external

【讨论】:

  • 调用svn可执行文件的问题是它没有与TortoisSVN一起自动安装。此外,我更喜欢调用 dll 而不是调用可执行文件,因为它通常要快得多。在这种特殊情况下没关系,我的工具只调用一次。
【解决方案3】:

就像其他人所说,调用 SVN 可执行文件。您可以使用以下技术将其与 Delphi 工具菜单集成: http://delphi.wikia.com/wiki/Adding_TortoiseSVN_to_the_Tools_menu

要添加到该文章中,还有一个“在此处打开文件夹”条目以打开 Windows 资源管理器以找到正在编辑的文件的文件夹也非常方便。这是“工具属性”:

  • 标题:在此处打开文件夹
  • 程序:explorer.exe
  • 参数:$PATH($EDNAME)

如果你有这个,那么你就可以轻松获得所有 TortoiseSVN。

【讨论】:

  • 结合 Cedric 显示的命令,加上 Chris 的链接答案将是一个很好的辅助路径,如果由于某种原因基于版本洞察代码的示例不起作用。
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
相关资源
最近更新 更多