【问题标题】:SVN externals sub folder changes not showing in view log (tortoise svn)SVN 外部子文件夹更改未显示在视图日志中(乌龟 svn)
【发布时间】:2010-09-08 22:17:39
【问题描述】:

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 的显示日志也包含对任何已定义的 svn:externals 的任何更改。

【问题讨论】:

  • Brian,我同意这对于任何使用外部的人来说都是一个很大的 PITA,并且与提交、检查修改等相比,这是一种不一致的行为。由于您的问题已经很老了,您知道是否有任何变化?

标签: svn tortoisesvn


【解决方案1】:

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

您可以尝试在the Apache Subversion website 发出功能请求

【讨论】:

    【解决方案2】:

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

    假设您有以下 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 em> 文件夹的属性。

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

    【讨论】:

    • 无论是否来自 svn:external ,显示低于该点的任何内容的日志更有意义。就像结帐会结帐一样。更新将更新所有内容。
    【解决方案3】:

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

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

    再见

    【讨论】:

      【解决方案4】:

      我认为,在 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 的信息(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 日志必须以某种方式结合(按未知原理,顺便说一句)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-10
        • 2011-12-05
        相关资源
        最近更新 更多