【问题标题】:svn ignore file-content seemed to be ignored :(svn ignore file-content 似乎被忽略了:(
【发布时间】:2014-07-30 19:22:19
【问题描述】:

我正在管理三个 SLES 服务器,其中包含一个在 svn 下运行的 vufind 项目。服务器是:catalog-web-server、index-server 和 test-server。

上周目录服务器和索引服务器上的 vufind 项目通过从测试服务器复制完整的 vufind 文件夹并随后进行一些特定于服务器的配置更改而升级到新的开发级别。 可悲的是,这是在 svn 之外完成的,导致目录服务器和索引服务器上的 svn 数据库不太令人满意...

到目前为止,我已经完成了这些步骤,以基于目录和索引服务器的当前 vufind-project-folders 启动并运行一个工作 svn 环境: - 删除旧存储库 - 创建了一个与旧存储库同名的新存储库(这样当一切恢复正常时,我们仍然可以使用我们为通过 PC 使用 Tortoise-SVN 设置的所有配置) - 将完整的当前文件夹 (/usr/local/vufind) 导入存储库 - 将新的工作副本签出到不同的目录 (/_kate/local/vufind)

似乎新的工作副本没有遇到原始当前文件夹存在的任何问题(例如修订号太高等), 但是现在我已经修改了 vufind-project 的所有文件和文件夹,所以我真的需要取消修改很多。

按照我在这里找到的建议

http://superchlorine.com/2013/08/getting-svn-to-ignore-files-and-directories/

我自己创建了一个名为 _svn-ing 的忽略文件,看起来像这样

cache
compile
covers
index
logs
spellShingle
spellchecker
*.log
*.mrc
*.tmp
customRules.bin
java_fixes.csh
man_import.sh

并使用以下命令行从 /_kate/local/vufind 文件夹中调用它:

svn propset svn:ignore --recursive --file _svn-ign . > svn-ignore-ausgabe.txt 2>&

与我的预期相反,不仅文件中列出的文件和文件夹设置了属性“svn:ignore”,而且 vufind 文件夹中的每个文件和文件夹都设置了。

如果有帮助,我可以发布文件 svn-ignore-ausgabe.txt 的内容,但我不想在不先询问的情况下放置 291 行。但也许这里有人已经知道是我的错误所在。

谢谢 凯特

【问题讨论】:

    标签: svn


    【解决方案1】:

    不清楚“破坏”您拥有的工作副本的第一步是什么,但我想您应该使用vendor branching strategy 以避免将来出现此类问题。 (我在这里可能是错的,因为我不理解您描述为 “导致不满意的 svn 数据库”的那些步骤)。

    截至svn:ignore 属性,它是affects unversioned items in your working copy only

    Subversion 对可忽略文件模式的支持仅扩展到 一次性将未版本控制的文件和目录添加到 版本控制。 一旦对象在 Subversion 的控制之下, 忽略模式机制不再适用于它。换句话说,不要 期望 Subversion 避免提交您对 版本化文件仅仅是因为该文件的名称与忽略匹配 模式——Subversion 总是注意到它所有的版本化对象。

    在将项目的项目添加到 Subversion 存储库之前,您必须设置 svn:ignoresvn:global-ignores(需要 SVN 1.8+ 客户端)。 IE。工作流程应该如下:

    1. svn checkout 存储库路径的工作副本,您计划在其中放置项目项,
    2. 在工作副本中,运行svn propset svn:ignore --recursive --file _svn-ign . > svn-ignore-ausgabe.txt 2>&
    3. 使用svn add 对项目的项目进行版本控制。您会注意到与来自 svn:ignore 的忽略模式匹配的项目不会被添加。
    4. svn commit 存储库的新修订。

    阅读SVNBook

    【讨论】:

      【解决方案2】:

      我会从稍微不同的角度回答

      我不会翻译

      不仅文件中列出的文件和文件夹设置了属性 'svn:ignore',而且 vufind-folder 中的每个文件和文件夹都设置了

      变成任何可以理解的东西(你可以用德语重新表述),因为

      • -F 选项定义的文件内容,什么要写的内容,而不是不在哪里
      • svn:ignore 是目录的属性(为 此文件夹 的内容定义忽略模式),没有意义作为文件的属性(我从来没有得到 svn:ignore 的文件)
      • -R (--recursive) 的 propset,正如预期的那样,为当前文件夹和 所有嵌套文件夹 完全定义 svn:ignore - 并且仅适用于文件夹

      在我的测试用例ps 中作为 repo 的根

      >svn propset svn:ignore --recursive --file ignore.txt .
      property 'svn:ignore' set on '.'
      property 'svn:ignore' set on 'trunk'
      property 'svn:ignore' set on 'branches'
      property 'svn:ignore' set on 'branches\FullHTML'
      property 'svn:ignore' set on 'tags'
      

      但所有文件都没有被修改

      >svn st -v
       M               5        5 lazybadger   .
       M               5        2 lazybadger   branches
       M               5        2 lazybadger   branches\FullHTML
                       5        2 lazybadger   branches\FullHTML\natasha_i_budushee.html
                       5        2 lazybadger   readme.textile
       M               5        1 www-data     tags
       M               5        5 lazybadger   trunk
                       5        5 lazybadger   trunk\G1.txt
                       5        2 lazybadger   trunk\G10.txt
      ...
      

      如果 vufind 的子目录有 291 个节点,那么 291 个字符串的 svn-ignore-ausgabe.txt 是正确的结果,你可以忽略它。

      但您的工作仍未完成 - 正如@bahrep 所说,svn:ignore 仅影响未版本化的项目(即出现在 WC 和匹配模式中的新对象,不会在没有明确命名的情况下添加到 repo 或不会搞砸svn st 的输出),但您必须手动删除已版本化的文件和文件夹,但仍将此对象保存在工作副本 svn rm --keep-local ... 中。为了不手动重复所有删除,您可以再使用一次_svn-ign:作为 rm 路径的来源:阅读有关 svn rm 的 --target 选项并尝试类似

      svn rm --keep-local cache --target _svn-ign
      

      【讨论】:

        猜你喜欢
        • 2021-10-28
        • 2016-09-30
        • 2012-03-11
        • 1970-01-01
        • 1970-01-01
        • 2017-12-05
        • 2012-03-08
        • 2015-12-11
        • 2014-04-15
        相关资源
        最近更新 更多