Answers:
(此答案已更新,以匹配SVN 1.8和1.9的行为)
您有2个问题:
所谓“被忽略的文件”,是指该文件甚至不会以“未版本控制”的形式出现在列表中:您的SVN客户端会假装该文件在文件系统中根本不存在。
忽略的文件由“文件模式”指定。SVN的在线文档中说明了文件模式的语法和格式:http : //svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html “ Subversion中的文件模式”。
从1.8版(2013年6月)及更高版本开始,Subversion支持指定文件模式的3种不同方式。以下是示例摘要:
global-ignores
选项:global-ignores
列表不会被其他用户共享,并且适用于您在计算机上签出的所有存储库。C:\Users\{you}\AppData\Roaming\Subversion\config
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
在这两个HKLM
和HKCU
。~/.subversion/config
svn:ignore
在目录(不是文件)上设置的属性:.gitignore
工作原理。svn:ignore
适用于目录,并且是非递归或继承的。父目录中与文件模式匹配的任何文件或直接子目录将被排除。SVN 1.8添加了“继承的属性”的概念时,该svn:ignore
属性本身在非直接后代目录中被忽略:
cd ~/myRepoRoot # Open an existing repo.
echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt".
svn status # Check to see if the file is ignored or not.
> ? ./ignoreThis.txt
> 1 unversioned file # ...it is NOT currently ignored.
svn propset svn:ignore "ignoreThis.txt" . # Apply the svn:ignore property to the "myRepoRoot" directory.
svn status
> 0 unversioned files # ...but now the file is ignored!
cd subdirectory # now open a subdirectory.
echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt".
svn status
> ? ./subdirectory/ignoreThis.txt # ...and is is NOT ignored!
> 1 unversioned file
(因此./subdirectory/ignoreThis
,即使ignoreThis.txt
在.
回购根目录上应用了“ ” ,也不会忽略该文件)。
因此,要递归应用忽略列表,必须使用svn propset svn:ignore <filePattern> . --recursive
。
<filePattern>
子目录中的值不同,则子目录的值将完全覆盖父目录,因此不会产生“累加”效果。<filePattern>
在根目录上更改了.
,则必须使用进行更改,--recursive
以覆盖子目录和子目录中的目录。我注意到命令行语法是违反直觉的。
svn ignore pathToFileToIgnore.txt
但这不是SVN的忽略功能的工作方式。svn:global-ignores
财产。需要SVN 1.8(2013年6月):svn:ignore
,除了它利用SVN 1.8的“继承的属性”功能。svn:ignore
,文件模式会自动应用于每个后代目录(不仅仅是直接子目录)。
svn:global-ignores
该--recursive
标志,因为继承的忽略文件模式会在继承时自动应用。运行与上一个示例相同的命令集,但svn:global-ignores
改用:
cd ~/myRepoRoot # Open an existing repo
echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt"
svn status # Check to see if the file is ignored or not
> ? ./ignoreThis.txt
> 1 unversioned file # ...it is NOT currently ignored
svn propset svn:global-ignores "ignoreThis.txt" .
svn status
> 0 unversioned files # ...but now the file is ignored!
cd subdirectory # now open a subdirectory
echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt"
svn status
> 0 unversioned files # the file is ignored here too!
整个安排让我感到困惑,因为TortoiseSVN的术语(在Windows资源管理器菜单系统中使用)最初误导了我-我不确定忽略菜单的“递归添加”,“添加*”和“添加”的意义是什么选项。我希望本文能解释忽略功能如何与SVN属性功能联系在一起。就是说,我建议您使用命令行来设置被忽略的文件,这样您就可以感觉到它是如何工作的,而不是使用GUI,并且只有在熟悉命令行后才使用GUI来操纵属性。
该命令svn status
将隐藏被忽略的文件(即,与RGA global-ignores
模式匹配,或与直接父目录的svn:ignore
模式匹配或与任何祖先目录的svn:global-ignores
模式匹配的文件。
使用该--no-ignore
选项查看列出的那些文件。被忽略的文件的状态为I
,然后将输出通过管道传输grep
到仅显示以“ I”开头的行。
该命令是:
svn status --no-ignore | grep "^I"
例如:
svn status
> ? foo # An unversioned file
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore
> ? foo # An unversioned file
> I ignoreThis.txt # A file matching an svn:ignore pattern
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore | grep "^I"
> I ignoreThis.txt # A file matching an svn:ignore pattern
ta-da!
svn propedit svn:ignore .
并且未配置任何文本编辑器,则会收到一条错误消息,显示svn:E205007:没有设置任何环境变量SVN_EDITOR,VISUAL或EDITOR,并且未设置任何“ editor-cmd”运行时配置选项找到而不是打开编辑器。因此,只需像这样指定--editor-cmd nanosvn propedit svn:ignore . --editor-cmd nano
svn status | grep '^?'
使用以下命令创建不在版本控制文件下的列表。
svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt
然后编辑文件,只保留您实际上要忽略的文件。然后使用此选项忽略文件中列出的文件:
svn propset svn:ignore -F ignoring.txt .
注意行尾的点。它告诉SVN该属性是在当前目录上设置的。
删除文件:
rm ignoring.txt
最后提交,
svn ci --message "ignoring some files"
然后,您可以通过以下方法检查忽略哪些文件:
svn proplist -v
svn status | awk "/^?/ {print \$2}" > ignoring.txt
。
svn pg svn:ignore . >> ignore.txt
在将当前忽略项附加到文件的第一个命令之后。
您可以忽略.gitignore之类的文件或目录。只需创建要忽略的目录/文件列表的文本文件,然后运行以下代码:
svn propset svn:ignore -F ignorelist.txt .
或者,如果您不想使用文本文件,则可以这样操作:
svn propset svn:ignore "first
second
third" .
svn:ignore
命令(见stackoverflow.com/a/58380306/189518)
如果您使用的是TortoiseSVN,请右键单击一个文件,然后选择TortoiseSVN /添加到忽略列表。这会将文件/通配符添加到svn:ignore
属性中。
svn:ignore
检入文件时将选中,匹配的文件将被忽略。对于Visual Studio .NET项目,我具有以下忽略列表:
bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo
您可以在TortoiseSVN / Properties的上下文菜单中找到此列表。
似乎没有人提到它...
svn propedit svn:ignore .
然后编辑文件的内容以指定要忽略的模式,退出编辑器,一切都完成了。
我找到了.svnignore示例Java文章 。
范例:.svnignore for Ruby on Rails,
/log
/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif
*.*~
在那之后:
svn propset svn:ignore -F .svnignore .
.gitignore的示例。您可以将.svnignore用于
使用propedit时,请确保没有任何尾随空格,因为这将导致文件从忽略列表中排除。
如果您已经在Linux上使用tab-autocomplete来创建文件,这些文件将自动插入:
svn propset svn:ignore 'file1
file2' .
另一个解决方案是:
svn st | awk '/^?/{print $2}' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txt
或逐行
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
它能做什么:
config
文件的答案。
bkbilly的答案的可读性更高:
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
它能做什么:
在工作副本上使用命令svn status显示文件的状态,尚未受版本控制(并且未被忽略)的文件旁边将带有问号。
至于忽略文件,您需要编辑svn:ignore属性,请阅读svnbook中的忽略未版本化项目一章,网址为http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore。 html。该书还介绍了有关使用svn状态的更多信息。
SVN ignore
在TortoiseSVN中易于管理。打开TortoiseSVN,右键单击文件菜单,然后选择添加以忽略列表。
这将在svn:ignore
属性中添加文件。当我们检入文件时,与之匹配的那些文件svn:ignore
将被忽略并且不会提交。
在Visual Studio项目中,我们添加了以下文件来忽略:
bin obj
*.exe
*.dll
*.pdb
*.suo
我们对SVN管理源代码Comparetrap成功地使用这种方法
对我有用的是:
如何在Subversion中忽略文件?
1.在文件资源管理器中,右键单击SVN项目的文件夹名称
2.单击“ SVN提交...”
3.将出现“提交”窗口
4.右键单击要忽略的文件夹/文件
5.单击“添加以忽略列表”。6.
选择文件夹/文件
。7.将“属性更改”提交给SVN
另外,如何查找不受版本控制的文件?
完成上述步骤3之后,点击“显示未版本化的文件”