如何从SVN获取所有未版本控制的文件列表?

有时你正在开发,你决定提交,忘了你在你的项目上创build了几个文件。 然后,几天后,你的好友从Subversion获得你的构build,并抱怨有些文件似乎丢失了。 你意识到,啊废话,我忘了添加这些文件!

我如何从Subversion获得不受版本控制的文件列表,所以我确定我已经将所有内容添加到了存储库中?

使用svn status命令:

 svn status | grep ^? 

没有版本的文件用一个? 在线的开始。

如果您发现总是有一些不应该添加到存储库的特定文件(例如,生成的二进制文件),则应该在包含目录中设置svn:ignore属性,以便这些文件在使用时不会显示svn status

如果某些文件被添加到状态中,则不会显示在“svn status”中。 你需要:

 svn status --no-ignore 

如果你在Windows上运行,你可以使用PowerShell做类似于Greg Hewgill的回答。

 (svn stat) -match '^\?' 

这可以很容易地扩展find所有未版本控制和忽略的文件,并删除它们。

 (svn stat "--no-ignore") -match '^[I?]' -replace '^.\s+','' | rm 

希望对某人有帮助!

或者从Windows命令行:

 svn stat | find "?" 

您可以使用此命令来列出未版本化文件的所有path:

 svn status | awk '/^?/ {print $2}' 

第一部分将执行一个svn status ,然后它会将输出redirect到AWK ,它将执行简单的过滤“第一个字符应该是'?”,然后它将打印第二个参数“文件path”。

svn status将永远不会打印被忽略的文件。 您可以使用添加该path来添加文件或path

 svn propset svn:ignore "PATH OR PATERN"