svn:ignore无法按预期工作

时间:2011-06-07 19:51:28

标签: svn svnignore

我正在尝试将我的另一个问题拉到一个测试用例中,为此我想模仿一个svn存储库和svn中的目录:ignore。 设置该值后,该值中指定的目录是否从版本控制中排除?正确?

下面是我所做的大纲。结果我得到了。我有点神秘,希望有人可以帮助我。

[/tmp]$svn --version
svn, version 1.6.15 (r1038135)
  compiled Nov 29 2010, 16:11:54

[/tmp]$mkdir svnadmin
[/tmp]$cd svnadmin/
[/tmp/svnadmin]$svnadmin create ignoretest
[/tmp/svnadmin]$mkdir ../client
[/tmp/svnadmin]$cd ../client
[/tmp/client]$svn co file:///tmp/svnadmin/ignoretest
Checked out revision 0.
[/tmp/client]$cd ignoretest/
[/tmp/client/ignoretest]$svn propset svn:ignore private .
property 'svn:ignore' set on '.'
[/tmp/client/ignoretest]$svn propget svn:ignore
private

[/tmp/client/ignoretest]$svn ci -m "ignore set"
Sending        .

不确定我是否必须在此处进行提交,在我的理解中,svn:ignore是一个全局公认的参数设置,这里是否意味着它是为中央存储库设置的?

Committed revision 1.
[/tmp/client/ignoretest]$mkdir private
[/tmp/client/ignoretest]$echo 'secret' > private/file1.txt
[/tmp/client/ignoretest]$svn add *
A         private
A         private/file1.txt
[/tmp/client/ignoretest]$svn ci -m "something wrong?"
Adding         private
Adding         private/file1.txt
Transmitting file data .
Committed revision 2.

这确实引起了我的红旗

[/tmp/client/ignoretest]$mkdir ../../client2
[/tmp/client/ignoretest]$cd ../../client2
[/tmp/client2]$svn co file:///tmp/svnadmin/ignoretest
A    ignoretest/private
A    ignoretest/private/file1.txt

这是真的签入。

 U   ignoretest
Checked out revision 2.

2 个答案:

答案 0 :(得分:1)

设置ignore属性实际上并不会阻止您将文件添加到存储库。当你运行“svn status”时,它会阻止svn报告这些文件名。

如果在设置ignore属性后运行“svn status”,则会注意到未显示“private”。但是,没有什么能阻止你明确地添加和提交它,就像你使用“svn add *”一样。

答案 1 :(得分:1)

我认为您使用svn add *会给您带来意想不到的结果。 shell通常将*扩展为所有文件,并包含忽略的文件。实际上,svn:ignore被忽略了。我认为你最好使用svn add –force .