2008-10-19 132 views
71

有时候你正在开发,你决定提交,忘记你在你的项目上创建了几个文件。然后,几天后,您的好友将您的构建从Subversion中取出,并抱怨某些文件似乎缺失。你意识到,啊废话,我忘了添加这些文件!如何从SVN获取所有未版本控制文件的列表?

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

回答

94

使用svn status命令:未版本与指示

svn status | grep ^? 

文件?在线的开始。

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

+3

个人该路径添加文件或文件路径,我总是“SVN DIFF”之前“SVN词”,但由于有时很慢,我总是“SVN STAT”之前“SVN差异”,这是方便的,因为那样我不会忘记添加东西:) – ephemient 2008-10-23 19:05:57

+9

如果您有许多未版本控制的文件需要添加,请执行以下操作: `svn st | grep ^? | awk'{print $ 2} | xargs svn add` 这将首先找到未版本化的文件,awk将仅打印行中的第二项(即文件路径),并且xargs将使此路径成为svn add的参数。 – 2012-09-22 23:30:52

+6

在awk命令结尾缺少单引号。该命令应该是:`svn st | grep ^? | awk'{print $ 2}'| xargs svn add` – jplandrain 2014-01-20 13:20:56

15

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

(svn stat) -match '^\?' 

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

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

希望对某人有帮助!

36

如果某些文件已将'忽略'添加到其状态,它们将不会显示在'svn status'中。你需要:

svn status --no-ignore 
9

或者从Windows命令行:

svn stat | find "?" 
0

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

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

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

svn status将始终不是打印忽略的文件。您可以通过添加使用

svn propset svn:ignore "PATH OR PATERN" 
相关问题