首页 / 知识

关于tortoisesvn:SVN外部子文件夹更改未显示在视图日志中(tortoise svn)

2023-04-15 08:25:00

SVN externals sub folder changes not showing in view log (tortoise svn)

SVN外部组件使您可以使SVN文件夹看起来好像在另一个位置。这样做的一个很好的用途是在SVN中的所有项目之间共享一个公用文件夹。

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

例:

  • 项目1:/ trunk / project1 / depends
  • 项目2:/ trunk / project2 / depends
  • Project3:/ trunk / project3 / depends
  • Project4:/ trunk / project4 / depends

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

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

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


当前版本的Subversion无法做到这一点,除了在externals目录的目标上显式调用svn log之外

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


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

1
2
3
4
5
6
7
8
9
10
11
12
13
>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目录仅对主线存在两次)

1
2
3
4
5
6
7
8
9
>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

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

Repo-Browser with externals

支持处理添加到更新和提交的外部组件,因为这种支持会产生独立且不相关的连续命令-因为没有这种支持,外部组件就没有意义,因此必须以某种方式组合汇总的svn日志(根据未知原则,BTW)


根据我的个人经验,仅当在更改外部文件的同一提交中修改了"内部"文件夹中的一个文件时,才报告外部链接的日志。
这样,SVN可以使用适当的日志,也可以从外部文件夹中检索日志。

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

再见


当您显示本地版本文件夹的日志时,它将显示相对于此特定文件夹的更改。外部对象只是指向存储库中其他文件夹的链接。您可以从依赖于此外部项目的文件夹中跟踪有关外部引用的唯一信息是引用定义本身。这是因为引用是从属文件夹的subversion属性。

假设您具有以下回购层次结构:

1
2
3
4
5
6
7
repo
   myfirstproject
      trunk
   mysecondproject
      trunk
   mycommonlib
      trunk

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

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

在新文件夹secondproject内对mysecondproject trunk进行检出将在文件系统上创建以下内容:

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

从secondproject文件夹中调用Tortoise的" Show log"命令将仅显示secondproject文件的更改,并最终显示该文件夹的svn:external属性上发生的更改。

要获取外部项目的更改日志,您需要从内部文件夹sharedlib调用"显示日志",这很有意义。


日志显示视图组件

最新内容

相关内容

猜你喜欢