SVN外部允许您使SVN文件夹显示为在另一个位置。一个很好的用途是在SVN中的所有项目中共享一个公共文件夹。
我在SVN中有一个/ trunk / common文件夹,我通过几个不同的项目共享。
示例:
这些依赖文件夹中的每一个都是空的,但是将svn:external定义为指向我的/ trunk / common文件夹。
问题是当我在任何项目中查看日志时:/ trunk / projectX /它没有显示来自svn:externals的更改。我正在使用陆龟SVN作为我的SVN客户端。
有谁知道如何改变这种行为?我希望/ trunk / projectX的show log包含对任何已定义的svn:externals的任何更改。
答案 0 :(得分:3)
除了在外部目录的目标上显式调用svn log之外,当前版本的Subversion不可能这样做
发出功能请求答案 1 :(得分:0)
显示本地版本文件夹的日志时,它将显示与此特定文件夹相关的更改。外部只是链接到存储库上的其他文件夹。您可以从依赖于此外部项目的文件夹跟踪外部引用的唯一内容是引用定义本身。这是因为引用是依赖文件夹的subversion属性。
想象一下,你有以下的回购层次结构:
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 调用“显示日志”,这是有道理的。
答案 2 :(得分:0)
根据我的个人经验,只有在您更改外部文件的同一提交中,才会报告外部链接的日志,您还只修改“internal”文件夹中的一个文件。 通过这种方式,SVN也可以使用正确的日志检索外部文件夹中的日志。
我认为使用钩子应该可以实现一种机制,用于在每次提交的工作目录中自动提交一个专色文件,如果提交是从外部链接开始的。
再见
答案 3 :(得分:0)
我认为,在Subversion 1.7(在WC的根目录中引入了单个.svn文件夹)之后,它更加干净:对于目录外部工作副本的外部目录,工作副本是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的信息
当trunk(和标签)分别具有子目录lib作为外部 支持处理添加到更新和提交的外部因素,因为此支持生成独立且不相关的连续命令 - 并且因为没有这种支持外部没有任何意义,聚合的svn日志必须以某种方式合并(由未知原则,BTW)>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