我正在使用从CLI生成大量文件的ORM。有一种简单的方法可以在我运行svn add
时显示为?
的目录中的所有文件上运行svn status
吗?
编辑这些文件存在于目录树中,因此为一个目录添加*
将不起作用。
答案 0 :(得分:130)
这将在指定的目录树下添加所有未知(除了忽略)文件:
svn add --force path/to/dir
这将在当前目录及其下方添加所有未知(被忽略的)文件:
svn add --force .
答案 1 :(得分:66)
这些对我来说似乎最有效。它们也适用于空格,不会重新添加被忽略的文件。我没有看到他们在我看到的任何其他答案中列出。
中加入:
svn st | grep ^? | sed 's/? //' | xargs svn add
去除:
svn st | grep ^! | sed 's/! //' | xargs svn rm
编辑:如果您想保留被忽略的文件,请不要使用“add *”,否则将重新添加所有被忽略的内容。
答案 2 :(得分:28)
你可以做一个svn add path/to/dir/*
你会收到有关版本控制中已有内容的警告,但它会添加所有不是。
答案 3 :(得分:8)
svn status | grep "^\?" | awk '{print $2}' | xargs svn add
从网络上的某个地方拍摄,但我已经使用了一段时间,效果很好。
答案 4 :(得分:5)
如果svn add whatever/directory/*
不起作用,您可以采取强硬措施:
svn st | grep ^\? | cut -c 2- | xargs svn add
答案 5 :(得分:4)
解决方案
svn status | grep ^? | sed 's/? //' | xargs svn add
不适用于空格。相反,可以使用
svn status | grep ^? | sed 's/^? //' | xargs -I fn svn add "fn"
(好像我的系统中前导空白的数量不同 - 只需调整它)。
答案 6 :(得分:3)
您应该可以运行:
svn add *
它可能会抱怨已经受版本控制的文件,但它也会添加新文件。
但是,您可能想要考虑是否确实要将这些生成的文件添加到版本控制中。它们可以被认为是派生工件,有点像编译代码,因此不应该添加。当然,这取决于你,但需要考虑的事情。
答案 7 :(得分:3)
svn add *
应该做的工作。请确保:
svn commit
之后:)
答案 8 :(得分:1)
在像fish这样的shell中你可以使用**
globbing来做到这一点:
svn add **
答案 9 :(得分:1)
svn status | grep "^\?" | awk '{ printf("\""); for (f=2; f <= NF; f++) { printf("%s", $f); if (f<NF) printf(" "); } printf("\"\n");}' | xargs svn add
这是基于马克的答案......以及在互联网上的一点点狩猎。它看起来很难看,但它似乎对OS X有用(包括带空格的文件)。
答案 10 :(得分:1)
即使它包含空格
,也会添加所有未版本控制的文件svn status | awk&#39; {$ 1 =&#34;&#34 ;;打印$ 0}&#39; | xargs -i svn add&#34; {}&#34;
答案 11 :(得分:0)
我喜欢这些命令,因为他们使用svn status
来查找新的或丢失的文件,这些文件会忽略被忽略的文件。
svn add $( svn status | sed -e '/^?/!d' -e 's/^?//' )
svn rm $( svn status | sed -e '/^!/!d' -e 's/^!//' )
答案 12 :(得分:0)
在bash one-liner中,我认为这是最漂亮的:
svn status | tee >(awk '/^?/{print $2}' | xargs -r svn add >&2) | awk '/^!/{print $2}' | xargs -r svn delete
它将添加所有新文件并删除所有丢失的文件。请谨慎使用,可能需要设置别名以便快速访问。
适用于Mac的注意事项:在xargs中-r
是GNU扩展名:可能不受支持。在这种情况下,只删除它并在没有要添加或删除的文件时忽略警告
答案 13 :(得分:0)
我是svn版本控件的新手。但是,对于人们想要添加文件而不忽略已设置的svn:ignore属性的情况,我解决了以下问题
以上步骤有效。
答案 14 :(得分:0)
在Alpine Linux OS上,我根据其他答案使用了此代码:
svn st | grep ^? | sed 's/? *//' | xargs -I fn svn add "fn"