有时您正在开发并且决定提交,而忘记了在项目中创建了一些文件。然后几天后,您的好友将您的构建移出Subversion,并抱怨某些文件似乎丢失了。您意识到啊,废话,我忘了添加那些文件!
我如何从Subversion获取不受版本控制的文件列表,因此我确定已将所有内容添加到存储库中?
Answers:
使用svn status
命令:
svn status | grep ^?
未版本控制的文件以?表示。在该行的开头。
如果发现始终有一些不应添加到存储库的特定文件(例如,生成的二进制文件),则应svn:ignore
在包含目录中设置该属性,以便在使用时这些文件不会一直显示svn status
。
svn st | grep ^? | awk '{print $2} | xargs svn add
这将首先查找未版本控制的文件,awk将仅打印该行中的第二项(即文件路径),而xargs将使该路径成为svn的参数。加。
svn st | grep ^? | awk '{print $2}' | xargs svn add
如果您在Windows上运行,则可以使用PowerShell执行类似于Greg Hewgill的回答。
(svn stat) -match '^\?'
可以很容易地扩展它,以找到所有未版本控制和忽略的文件并删除它们。
(svn stat "--no-ignore") -match '^[I?]' -replace '^.\s+','' | rm
希望对某人有帮助!
() -math
称呼?
您可以使用此命令列出未版本控制文件的所有路径:
svn status | awk '/^?/ {print $2}'
第一部分将执行svn status
,然后将输出重定向到AWK,后者将执行简单的过滤器“第一个字符应为'?'”,然后将打印第二个参数“这是文件路径”。
svn status
始终不会打印忽略的文件。您可以使用以下方式添加文件或路径:
svn propset svn:ignore "PATH OR PATERN"
svn status
,而不仅仅是非版本化文件。我相信命令应该svn status | awk '/^\?/ {print $2}'
转义?
,因为过滤器是一个正则表达式。