2011-06-07 85 views
-1

我想拉出一個測試用例來解決另一個問題,爲此我想用svn:ignore來模擬一個svn倉庫。 設置了該值後,該值中指定的目錄是否從版本控制1中排除?對?svn:忽略不按預期工作

低於我所做的大綱。我得到的結果。我是一種迷惑,希望有人能幫助我。

[/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:忽略的全球公認的參數設置在這裏就意味着它被設置爲中央存儲庫?

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. 

回答

1

設置忽略屬性實際上並沒有阻止您將文件添加到庫。當你運行「svn status」時,它會停止svn報告這些文件名。

如果您在設置忽略屬性後運行「svn status」,您會注意到「private」未顯示。但是,沒有什麼能阻止你明確地添加和提交它,就像你用「svn add *」所做的那樣。

+0

我覺得很難相信,難道你不是全球忽視?從svn-redbook:svn:ignore svn:ignore屬性包含某些Subversion操作將忽略的文件模式列表。也許是最常用的特殊屬性,它可以與全局忽略運行時配置選項(請參閱「配置」一節)配合使用,從命令svn status,svn add和svn import中過濾未受版本控制的文件和目錄。 – 2011-06-07 20:33:28

+0

請參閱本頁底部的註釋:http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore.html – Mike 2011-06-07 20:57:30

1

我認爲你使用svn add *是給你意想不到的結果。 shell通常將*擴展爲所有文件,幷包含被忽略的文件。有效地,svn:ignore被忽略了。我覺得你最好用svn add –force .

+0

但是有沒有一種方法可以真正保留目錄或文件不管'\ *'如何,回購回購?將prop私人/ \ *。比比賽更好? – 2011-06-07 20:37:38

+0

@dr jerry - '*'的shell擴展與SVN無關,因此也不知道'svn:ignore'。這就是爲什麼我建議你使用'svn add -force .'。否則,使用像TortoiseSVN這使得這更直觀,也保護你添加你不真正需要的文件夾。 – manojlds 2011-06-07 22:20:31