如何将所有新文件添加到SVN
我正在使用从CLI生成大量文件的ORM。 有没有一种简单的方法来运行svn add
目录中的所有文件显示为?
当我运行svn status
?
编辑这些文件存在于目录树中,因此为一个目录添加*
将不起作用。
你可以做一个svn add path/to/dir/*
你会得到有关版本控制中的任何东西的警告,但它会添加一切不是。
这将在指定的目录树下添加所有未知的(除了被忽略的)文件:
svn add --force path/to/dir
这将在当前目录和下面添加所有未知的(除了被忽略的)文件:
svn add --force .
作为参考, 这些 是非常类似的问题。
这些似乎对我来说是最好的。 他们也使用空格,并且不重新添加被忽略的文件。 我没有看到他们列出的任何其他答案,我看到。
添加:
svn st | grep ^? | sed 's/? //' | xargs svn add
删除:
svn st | grep ^! | sed 's/! //' | xargs svn rm
编辑:如果要保留忽略的文件,请不要使用“添加*”,否则所有被忽略的内容都将被重新添加。
svn status | grep "^\?" | awk '{print $2}' | xargs svn add
采取从网上的某个地方,但我已经使用了一段时间,它运作良好。
如果svn add whatever/directory/*
不起作用,你可以做到这一点艰难的方式:
svn st | grep ^\? | cut -c 2- | xargs svn add
解决scheme
svn status | grep ^? | sed 's/? //' | xargs svn add
不适用于空格。 相反,可以使用
svn status | grep ^? | sed 's/^? //' | xargs -I fn svn add "fn"
(看起来像我的系统中的主要空白数量是不同的 – 只需调整它)。
你应该可以运行:
svn add *
它可能会抱怨已经在版本控制下的文件,但它也会添加新的文件。
不过,您可能想要考虑是否真的想将这些生成的文件添加到版本控制中。 他们可以被认为是派生的工件,有点像编译的代码,因此不应该被添加。 当然,这取决于你,但它的东西要考虑。
svn add *
应该做这个工作。 只要确保:
svn commit
之后:)
在一些像鱼一样的贝壳中,你可以使用**
globbing来做到这一点:
svn add **
svn status | grep "^\?" | awk '{ printf("\""); for (f=2; f <= NF; f++) { printf("%s", $f); if (f<NF) printf(" "); } printf("\"\n");}' | xargs svn add
这是基于markb的答案…和在互联网上的一点点狩猎。 它看起来很丑,但它似乎在OS X(包括带空格的文件)上适用于我。
这添加所有未版本控制的文件,即使它包含空格
svn status | 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
它将添加所有新文件并删除所有丢失的文件。 谨慎使用,可能会设置别名以便快速访问。
注意Mac:在xargs -r
是一个GNU扩展:它可能不被支持。 在这种情况下,只要将其删除,并在没有要添加或删除的文件时忽略警告
我是svn版本控制的新手。 但是,当人们想添加文件而不忽略已经设置的svn:ignore属性的情况下,我解决了这个问题,如下
- svn add –depth空path/到/目录
- 从ignoreList.txt所在的位置执行“svn propset svn:ignore -F ignoreList.txt –recursive”。 在我的情况下,这个文件驻留在“path / to / directory”上面的两个目录中,我想添加它。 请注意,ignoreList.txt包含我希望svn忽略的文件扩展名,例如* .aux等
- svn add –force path / to / directory /。
以上步骤奏效。