【问题标题】:SVN Relocate - Change all externals to "relative url to repository root"SVN Relocate - 将所有外部更改为“相对 url 到存储库根”
【发布时间】:2017-11-15 15:42:42
【问题描述】:

我们最近更改了 svn 项目的服务器名称(http 到 https) 不幸的是,我所有使用 absolute urls 的外部组件现在都无法正常工作。 我想用 relative url to repository root "^/..." 更改所有这些。

  • 文件夹 1
    • 文件夹 1.1
      • 外部 1
      • 文件夹 1.1.1
        • 外部 2
        • 外部 3
  • 文件夹 2
    • 文件夹 2.1
      • 外部 4
      • 文件夹 2.1.1
        • 外部 5
        • 外部 6

有没有一种简单的方法可以同时更改它们?

我使用的是 SVN 1.8.11

提前感谢您的帮助

【问题讨论】:

  • 我尝试使用 propget 获取所有外部组件。现在我有一个包含所有外部文件的文件。我使用记事本++修改了文件以更改路径。我试图处理这个文件,但我总是遇到问题。我认为这是因为当外部对象位于子目录中时我无法设置。有什么想法吗?

标签: svn


【解决方案1】:

我会对此发表评论,但不幸的是,我还没有访问 cmets 的权限。但是您使用的是 Subversion 客户端吗?

TortoiseSVN 是一个很好的 svn 客户端,可以与易于使用的 shell 菜单一起使用,您所要做的就是转到您签出的目录: - 右键单击​​ > TortoiseSVN > 属性 > 新建... > 外部

否则,是的,您必须将 propset 与文件一起使用。像这样的:

$ svn propset svn:externals BaseDirectory
Folder 1                       https://url/to/folder1
Folder 1/external 1            https://url/to/external1

或者,如果它们已经存在,您可能必须使用 propedit。查看更多信息:

Manipulating Properties

Externals Definitions

不过,拥有外部文件应该不是问题,只要确保在进行更新时目录不存在即可。如果您尝试添加外部并将它们指向已经存在的目录,有时颠覆会搞砸。您可能会看到类似

的错误
Cannot obtain lock on non directory

或者类似的东西。希望这会有所帮助!

【讨论】:

    【解决方案2】:

    由于我现在遇到了同样的问题并且没有找到解决方案,所以我将其留在这里以供将来参考。

    我最终检查了整个存储库。然后使用svn propget svn:externals -R > externals.txt 导出所有外部文件。 在此文件中,您可以将 ^([^\s]+) - (.*?)(?=\r\n\r\n) 替换为 svn propset svn:externals "$2" $1 以获取用于更改存储库中所有外部项的命令列表。然后搜索/替换您的 url 并执行命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多