svn忽略文件内容似乎被忽略:(

时间:2014-07-30 05:46:59

标签: svn

我正在管理三个SLES服务器和一个在svn下运行的vufind项目。服务器是:目录Web服务器,索引服务器和测试服务器。

上周,目录服务器和索引服务器上的vufind-project通过从测试服务器复制完整的vufind-folder并在之后进行一些特定于服务器的配置更改,升级到新的开发级别。 遗憾的是,这是在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-folder调用它:

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

与我的期望相反,不仅文件中列出的文件和文件夹获得了属性'svn:ignore'设置,而是vufind文件夹中的每个文件和文件夹。

如果它有用,我可以发布文件svn-ignore-ausgabe.txt的内容,但我不想先放291行而不先询问。但也许有人在这里有一个想法已经是我的错误所在。

由于 凯特

2 个答案:

答案 0 :(得分:0)

不清楚“打破”的第一步是什么?你有工作副本,但我想你应该使用vendor branching strategy来避免将来出现这类问题。 (我可能在这里错了,因为我不理解你所描述的那些步骤"导致一个不太高兴的svn-database" )。

svn:ignore属性开始,affects unversioned items in your working copy only

  

Subversion对可忽略文件模式的支持仅扩展到   将未版本控制的文件和目录添加到的一次性过程   版本控制。 一旦一个对象受到Subversion的控制,那么   忽略模式机制不再适用于它。换句话说,不要   期望Subversion避免犯下你对a做出的改变   版本化文件只是因为该文件的名称与忽略匹配   pattern-Subversion始终注意到它的所有版本化对象。

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

  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对存储库的新修订。
  5. 阅读SVNBook

答案 1 :(得分:0)

我会从略有不同的方面回答

我无法翻译

  

不仅文件中列出的文件和文件夹获得了属性'svn:ignore'set on,而且vufind-folder中的每个文件和文件夹

进入任何可以理解的东西(你可以用德语重新表达它),因为

  • -F选项的文件内容定义,要写的内容,而非不在哪里
  • svn:ignore是目录的属性(为此文件夹的内容定义ignore-pattern),没有感觉为文件的属性(我从来没有得到svn:ignore的文件)
  • 正如预期的那样,
  • -R--recursive)为当前文件夹定义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 dir有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