我正在使用从CLI生成大量文件的ORM。有没有一种简单的方法可以svn add
在目录中的所有文件上运行它们,就像?
我运行时一样svn status
?
编辑 这些文件存在于目录树中,因此*
无法添加一个目录。
我正在使用从CLI生成大量文件的ORM。有没有一种简单的方法可以svn add
在目录中的所有文件上运行它们,就像?
我运行时一样svn status
?
编辑 这些文件存在于目录树中,因此*
无法添加一个目录。
Answers:
您可以这样做,svn add path/to/dir/*
就会收到有关版本控制中已有内容的警告,但会添加所有未包含的内容。
这将在指定的目录树下添加所有未知(忽略的文件)文件:
svn add --force path/to/dir
这将在当前目录及以下目录中添加所有未知(忽略的文件)文件:
svn add --force .
svn status | grep "^\?" | awk '{print $2}' | xargs svn add
从网络上的某个地方获取,但我已经使用了一段时间,并且效果很好。
awk
并免除您对空格的计数。
如果svn add whatever/directory/*
不起作用,则可以采用艰难的方法:
svn st | grep ^\? | cut -c 2- | xargs svn add
解决方案
svn status | grep ^? | sed 's/? //' | xargs svn add
不适用于空格。相反,可以使用
svn status | grep ^? | sed 's/^? //' | xargs -I fn svn add "fn"
(似乎在我的系统上,前导空白的数量不同-只需对其进行调整即可)。
svn add *
应该做的工作。只要确保:
svn commit
之后:)
这将添加所有未版本控制的文件,即使它包含空格
svn状态| awk'{$ 1 =“”; 打印$ 0}'| xargs -i svn添加“ {}”
我喜欢这些svn status
用于查找新文件或丢失文件的命令,这些命令尊重被忽略的文件。
svn add $( svn status | sed -e '/^?/!d' -e 's/^?//' )
svn rm $( svn status | sed -e '/^!/!d' -e 's/^!//' )
在bash一线游戏中,我认为这是最漂亮的:
svn status | tee >(awk '/^?/{print $2}' | xargs -r svn add >&2) | awk '/^!/{print $2}' | xargs -r svn delete
它将添加所有新文件,并删除所有丢失的文件。谨慎使用,可能设置别名以快速访问。
对于Macs的注释:xargs中-r
是GNU扩展:可能不受支持。在这种情况下,只要没有文件要添加或删除,只需将其删除并忽略警告即可
我是svn版本控制的新手。但是,对于人们想要添加文件而不忽略已经设置的svn:ignore属性的情况,我解决了以下问题
以上步骤有效。
svn add dir1/* dir2/* dir3/*
或有许多提到根目录grep
的输出svn stat
并将其通过管道传递到cut
orawk
,然后添加。