使用一个Linux命令将所有未版本控制的文件添加到Subversion

52 svn

有时我在项目的不同目录中包含许多文件.现在我在提交之前将所有文件逐个添加到我的项目中.是否有任何Linux终端命令可以将所有未版本控制的文件添加到Subversion?

如果我想添加除一个或两个文件之外的所有文件怎么办?

cle*_*tus 79

svn add --force <directory>
Run Code Online (Sandbox Code Playgroud)

添加已经是递归的.您只需强制它遍历版本化的子目录.


Jam*_*ore 27

添加任何旁边带有问号的文件,同时仍然排除被忽略的文件:

svn status | grep -v "^.[ \t]*\..*" | grep "^?" | awk '{print $2}' | xargs svn add
svn commit
Run Code Online (Sandbox Code Playgroud)

http://codesnippets.joyent.com/posts/show/45


小智 23

这将尝试添加所有文件 - 但实际上只添加尚未包含在SVN中的文件:

svn add --force ./* 
Run Code Online (Sandbox Code Playgroud)


pet*_*gnz 13

此命令将在svn st命令输出中列出的任何未版本控制的文件添加到subversion.

请注意,不会添加在svn stat输出中包含空格的任何文件名.此外,如果任何文件名包含'?',则可能会出现奇怪的行为.

svn st | grep ? | tr -s ' ' | cut -d ' ' -f 2 | xargs svn add
Run Code Online (Sandbox Code Playgroud)

或者如果你擅长awk:

svn st | grep ? | awk '{print $2}' | xargs svn add
Run Code Online (Sandbox Code Playgroud)

说明:

第1步: svn st命令

[user@xxx rails]$svn st
?       app/controllers/application.rb
M       app/views/layouts/application.html.erb
?       config/database.yml
Run Code Online (Sandbox Code Playgroud)

第2步:我们使用grep命令grep未版本控制的文件:

[user@xxx rails]$svn st | grep ?
?       app/controllers/application.rb
?       config/database.yml
Run Code Online (Sandbox Code Playgroud)

步骤3:然后?使用tr命令删除挤压文件路径和文件路径之间的空格:

[user@xxx rails]$svn st | grep ? | tr -s ' '
? app/controllers/application.rb
? config/database.yml
</pre>
Run Code Online (Sandbox Code Playgroud)

步骤4:然后使用cut命令从输出中选择第二列:

[user@xxx rails]$svn st | grep ? | tr -s ' ' | cut -d ' ' -f 2
app/controllers/application.rb
config/database.yml
Run Code Online (Sandbox Code Playgroud)

步骤5:最后,将这些文件路径作为标准输入传递给svn add命令:

[user@xxx rails]$svn st | grep ? | tr -s ' ' | cut -d ' ' -f 2 | xargs svn add
A       app/controllers/application.rb
A       config/database.yml
Run Code Online (Sandbox Code Playgroud)


Amb*_*ber 10

默认情况下,该svn add命令是递归的.只需将它指向项目的顶级目录,它应该添加任何尚未存在的文件.

您可能希望包含该--force选项,但请记住,这也会添加由于svn:ignore而被排除的文件(如果您不使用svn:ignore,那么您将不会遇到任何问题).