如何将所有新文件添加到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属性的情况下,我解决了这个问题,如下

  1. svn add –depth空path/到/目录
  2. 从ignoreList.txt所在的位置执行“svn propset svn:ignore -F ignoreList.txt –recursive”。 在我的情况下,这个文件驻留在“path / to / directory”上面的两个目录中,我想添加它。 请注意,ignoreList.txt包含我希望svn忽略的文件扩展名,例如* .aux等
  3. svn add –force path / to / directory /。

以上步骤奏效。