我一直在使用这个长命令:
svn st | awk '/\?/ {print $2}' | xargs svn add
同样,对于svn rm文件,我意外删除了正常的rm:
svn st | awk '/\!/ {print $2}' | xargs svn rm --force
我想我可以写一个bash函数来做这两个,但我更喜欢像git那样的交互式add / rm。
答案 0 :(得分:7)
有一条更简单的路线......
svn add `svn status | grep ?`
然后您可以将其设置为〜/ .bashrc中的别名,例如
alias svn-addi='svn add `svn status | grep ?`'
答案 1 :(得分:6)
我使用了您运行的命令行的一般化,称为svnapply.sh
。我没有写它,但我不记得我在哪里找到它。希望原作者原谅我在此重新发布:
#!/bin/bash
#
# Applies arbitrary commands to any svn status. e.g.
#
# Delete all non-svn files (escape the ? from the shell):
# svnapply \? rm
#
# List all conflicted files:
# svnapply C ls -l
APPLY=$1
shift
svn st | egrep "^\\${APPLY}[ ]+" | \
sed -e "s|^\\${APPLY}[ ]*||" | \
sed -e "s|\\\\|/|g" | \
xargs -i "$@" '{}'
根据注释,该脚本允许您对具有相同状态的所有文件运行任意命令。
更新:
编写一个以文件路径作为参数的脚本并提示用户添加/删除然后为该文件执行适当的操作并不困难。将上述脚本链接起来可以得到你想要的东西。
答案 2 :(得分:6)
这会在当前目录中添加所有svn-untracked和-unversioned文件,并在所有子目录中递归:
svn add --force ./*
适用于MacOS 10.6+和Ubuntu 10+,svn 1.6+。这不提供任何每个文件,用户交互性;我不知道该怎么做。
这也将添加svn-ignored文件,无论好坏。
答案 3 :(得分:0)
使用可以显示所有未跟踪文件的GUI,然后选择全部并添加。任何体面的SVN gui都应提供此功能。
那就是说,小心你真的想要所有这些文件。
答案 4 :(得分:0)
TortoiseSVN可以选择在“提交”和“显示更改”对话框中显示未版本控制的文件。您可以右键单击文件以“添加”它或将其标记为忽略。
如果您使用的是Visual Studio: AnkhSVN的最新稳定版本具有类似的命令,但在大多数情况下,它仅显示您应添加的文件。 (该项目向SCC提供程序提供了版本的文件列表;其他文件将自动被忽略)
答案 5 :(得分:0)
有一个similar question,其中包含nice Ruby script,可让您选择添加,忽略或跳过新文件。我试过了,它对我有用。不需要GUI,只需要Ruby。