如何在svn中添加所有未跟踪的文件?像git add -i之类的东西?

use*_*200 9 svn version-control

我一直在使用这个长命令:

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

同样,对于svn rm文件我意外删除了正常的rm:

svn st | awk '/\!/ {print $2}' | xargs svn rm --force
Run Code Online (Sandbox Code Playgroud)

我想我可以写一个bash函数来做这两个,但我更喜欢像git那样的交互式add/rm.

小智 8

有一个更容易的线...

svn add `svn status | grep ?`
Run Code Online (Sandbox Code Playgroud)

然后你可以把它设置为〜/ .bashrc中的别名,例如

alias svn-addi='svn add `svn status | grep ?`'
Run Code Online (Sandbox Code Playgroud)

  • 我最终这样做了:在`svn状态|中 grep?| nawk'{print $ 2}'`; svn添加$ a; DONE (2认同)

Bra*_*tte 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 "$@" '{}'
Run Code Online (Sandbox Code Playgroud)

根据注释,该脚本允许您对具有相同状态的所有文件运行任意命令.

更新:

编写一个以文件路径作为参数的脚本并提示用户添加/删除然后为该文件执行适当的操作并不困难.将上述脚本链接起来可以得到你想要的东西.


Joh*_*ahh 6

这会在当前目录中添加所有svn-untracked和-unversioned文件,并在所有子目录中递归:

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

适用于MacOS 10.6+和Ubuntu 10+,svn 1.6+.这不提供任何每个文件,用户交互性; 我不知道该怎么做.

这也将添加svn-ignored文件,无论好坏.