我正在使用一个ORM,它通过CLI生成大量文件。 有没有一种简单的方法在运行svn status
命令时,对于目录内出现的所有以?
形式显示的文件,运行svn add
操作?
编辑:这些文件存在于一个目录树中,因此为一个目录添加*
将无法起作用。
我正在使用一个ORM,它通过CLI生成大量文件。 有没有一种简单的方法在运行svn status
命令时,对于目录内出现的所有以?
形式显示的文件,运行svn add
操作?
编辑:这些文件存在于一个目录树中,因此为一个目录添加*
将无法起作用。
这将会添加指定目录树下的所有未知文件(除了被忽略的文件):
svn add --force path/to/dir
这将会把当前目录及其子目录下所有未被忽略的文件全部添加:
svn add --force .
xargs
似乎不接受-d
标志。 - amacleodawk {'print $2'}
替代 sed 's/? //'
。 - Jijo你只需执行 svn add path/to/dir/*
命令,会收到任何已在版本控制中的警告,但它将添加所有未被版本控制的文件。
svn status | grep "^\?" | awk '{print $2}' | xargs svn add
这段代码来自某个网站,不过我已经使用它一段时间了,效果很好。
awk
并且免除了你计算空格的麻烦。 - Alex Chesvn 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 add *
svn commit
svn st | grep ^? | sed 's/? *//' | xargs -I fn svn add "fn"
svn status | grep "^\?" | awk '{ printf("\""); for (f=2; f <= NF; f++) { printf("%s", $f); if (f<NF) printf(" "); } printf("\"\n");}' | xargs svn add
svn add dir1/* dir2/* dir3/*
,或者像许多人提到的那样,从根目录中使用grep
命令筛选svn stat
的输出,并将其传递给cut
或awk
来进行添加操作。 - prodigitalson