SVN外部允许您使SVN文件夹显示为在另一个位置 . 一个很好的用途是在SVN中的所有项目中共享一个公共文件夹 .
我在SVN中有一个/ trunk / common文件夹,我通过几个不同的项目共享 .
例:
-
Project1:/ trunk / project1 / depends
-
Project2:/ trunk / project2 / depends
-
Project3:/ trunk / project3 / depends
-
Project4:/ trunk / project4 / depends
每个依赖文件夹都是空的,但有一个svn:external定义为指向我的/ trunk / common文件夹 .
问题是当我在任何项目中查看日志时:/ trunk / projectX /它不显示来自svn:externals的更改 . 我正在使用陆龟SVN作为我的SVN客户端 .
有谁知道如何改变这种行为?我希望/ trunk / projectX的show log包含对任何已定义的svn:externals的任何更改 .
4 回答
除了在外部目录的目标上显式调用svn log之外,当前版本的Subversion不可能实现这一点
您可以尝试在the Apache Subversion website发布功能请求
显示本地版本化文件夹的日志时,它将显示与此特定文件夹相关的更改 . 外部只是 a link 到存储库中的不同文件夹 . 您可以从依赖于此外部项目的文件夹中跟踪外部引用的唯一内容是 reference definition itself . 这是因为引用是依赖文件夹的subversion属性 .
想象一下,你有以下的repo层次结构:
并且
mysecondproject\trunk
文件夹具有以下svn:external属性:在新文件夹secondproject中检出mysecondproject \ trunk将在您的文件系统上创建类似这样的内容:
从secondproject文件夹调用Tortoise的"Show log"命令只会显示第二个项目文件的更改,并最终更改在文件夹的svn:external属性上发生的更改 .
要获取外部项目的更改日志,您需要从内部文件夹sharedlib中调用"Show log",这是有意义的 .
根据我的个人经验,只有在您更改外部文件的同一提交中,才会报告外部链接的日志,您还只修改“internal”文件夹中的一个文件 . 通过这种方式,SVN可以使用正确的日志检索外部文件夹中的日志 .
我认为使用钩子应该可以实现一种机制,用于在每个提交的工作目录中自动提交一个专色文件,如果提交从外部链接开始 .
再见
我认为,在Subversion 1.7(在WC的根目录中引入了单个.svn文件夹)之后,它更加干净:对于目录外部工作副本的外部目录,工作副本是a)独立的b)独立存储库的嵌套工作副本
和父WC [3011455_关于嵌套WC(WC的目录,从/存储库创建,注意.svn dir仅存在两次主线)
当trunk(和标签)分别具有子目录lib作为外部
支持处理外部添加到更新和提交,因为这种支持产生独立和无关的连续命令 - 并且因为没有这种支持外部没有任何意义,聚合的svn日志必须以某种方式组合(由未知原则,BTW)