11

SVN 外部允许您使 SVN 文件夹看起来好像它在另一个位置。一个很好的用途是在 SVN 中的所有项目之间共享一个公共文件夹。

我在 SVN 中有一个 /trunk/common 文件夹,我通过几个不同的项目共享它。

例子:

  • 项目1:/trunk/project1/depends
  • 项目2:/trunk/project2/depends
  • 项目3:/trunk/project3/depends
  • 项目4:/trunk/project4/depends

这些依赖文件夹中的每一个都是空的,但定义了一个 svn:external 以指向我的 /trunk/common 文件夹。

问题是当我在任何项目中查看日志时:/trunk/projectX/ 它没有显示来自 svn:externals 的更改。我使用乌龟 SVN 作为我的 SVN 客户端。

有谁知道如何改变这种行为?我希望 /trunk/projectX 的显示日志也包括对任何定义的 svn:externals 的任何更改。

4

4 回答 4

3

这在当前版本的 Subversion 中是不可能的,除了在外部目录的目标上显式调用 svn log

您可以尝试在Apache Subversion 网站上发出功能请求

于 2008-09-15T13:25:55.803 回答
1

根据我的个人经验,只有在您更改了外部文件的同一提交中,您也只修改了“内部”文件夹中的一个文件,才会报告外部链接的日志。这样 SVN 可以使用正确的日志检索,也可以从外部文件夹中检索日志。

我认为使用钩子应该可以实现一种机制,用于在每次提交的工作目录中自动提交一个点文件,如果提交从外部链接开始也是如此。

再见

于 2013-01-24T09:58:33.123 回答
0

当您显示本地版本化文件夹的日志时,它将显示与此特定文件夹相关的更改。外部只是指向存储库中不同文件夹的链接。您可以从依赖于该外部项目的文件夹中跟踪外部引用的唯一内容是引用定义本身。那是因为引用是依赖文件夹的颠覆属性。

想象一下,您有以下 repo 层次结构:

repo
   myfirstproject
      trunk
   mysecondproject
      trunk
   mycommonlib
      trunk

并且该mysecondproject\trunk文件夹具有以下svn:external属性:

svn://mysrv/repo/mysharedlib@2451 sharedlib

在新文件夹secondproject中检出mysecondproject\trunk将在您的文件系统上创建类似这样的内容:

secondproject Folder (refers mysecondproject/trunk)
   sharedlib Folder (refers mycommonlib/trunk @ revision #2451)

从secondproject文件夹调用 Tortoise 的“显示日志”命令只会显示secondproject文件的更改,并最终显示文件夹的svn:external属性上发生的更改。

要获取外部项目的更改日志,您需要从内部文件夹sharedlib中调用“显示日志” ,这是有道理的。

于 2008-09-15T13:58:09.750 回答
0

我认为,在 Subversion 1.7 之后(在 WC 的根目录中引入了单个 .svn 文件夹)它更加干净:对于目录类型 externals 内部工作副本的外部目录是 a) 独立 b) 单独存储库的嵌套工作副本

>dir /B /S /AD
z:\subversion-troubleshoot-b\.svn
...
z:\subversion-troubleshoot-b\trunk
z:\subversion-troubleshoot-b\tags
z:\subversion-troubleshoot-b\trunk\lib
z:\subversion-troubleshoot-b\trunk\lib\.svn
...
z:\subversion-troubleshoot-b\tags\1.0.0
z:\subversion-troubleshoot-b\tags\1.0.1
z:\subversion-troubleshoot-b\tags\1.0.1\lib
z:\subversion-troubleshoot-b\tags\1.0.1\lib\.svn
...

并且父 WC不包含有关嵌套 WC 的任何信息(WC 的目录,从存储库的 / 创建,请注意 .svn 目录存在两次仅用于主线)

>svn ls -R
readme.textile
tags/
tags/1.0.0/
tags/1.0.0/core_mod.txt
tags/1.0.1/
tags/1.0.1/core_mod.txt
trunk/
trunk/core_mod.txt

当主干(和标签分别)具有子目录 lib 作为外部

带有外部的回购浏览器

支持处理添加到更新和提交的外部,因为这种支持会产生独立且不相关的连续命令 - 并且因为没有这种支持,外部就没有意义,聚合的 svn 日志必须以某种方式组合(通过未知的原则,顺便说一句)

于 2013-01-24T11:20:19.167 回答