Pet*_*tai 167
如果您使用的是Mac(Darwin)或Linux,则可以将以下命令的输出通过管道传输svn rm给所有丢失的文件.您可以在运行这些目录之前将当前工作目录设置为相应的目录或子目录 - 这取决于您是要运行整个工作副本还是仅运行子集.
svn rm使用#3作为参数输出所以完整的命令是:
svn st | grep ^! | awk '{print " --force "$2}' | xargs svn rm
Run Code Online (Sandbox Code Playgroud)
参考文献:
Mic*_*ens 94
如果您正在使用TortoiseSVN,只需执行检查修改,按状态列排序,选择标记的所有条目missing,右键单击以打开上下文菜单,然后选择删除.最后,提交将更改发布到存储库.
如果您使用的是Windows,但更喜欢命令行并喜欢在PowerShell中使用,那么这个单线程就能解决问题:
svn status | ? { $_ -match '^!\s+(.*)' } | % { svn rm $Matches[1] }
Run Code Online (Sandbox Code Playgroud)
也就是说,将输出过滤为仅显示缺少文件的行(由行开头的感叹号表示),捕获关联的文件名,并svn rm对该文件名执行操作.
(博客文章从SVN工作副本中删除所有"丢失"文件对Unix/Linux执行类似操作.)
ivr*_*rin 50
svn st | grep ! | cut -d! -f2| sed 's/^ *//' | sed 's/^/"/g' | sed 's/$/"/g' | xargs svn rm
Run Code Online (Sandbox Code Playgroud)
svn statussvn remove 每个文件whe*_*hys 29
我刚刚找到了这个,它可以解决这个问题,从SVN工作副本中删除所有"丢失"的文件:
svn rm $( svn status | sed -e '/^!/!d' -e 's/^!//' )
Run Code Online (Sandbox Code Playgroud)
小智 15
感谢Paul Martin的Windows版本.
以下是对脚本的略微修改,因此也考虑了带空格的Windows文件.该missing.list文件也将在最后删除.
我在svndel.bat中将以下内容保存在我的SVN bin目录中(在我的%% PATH环境中设置),因此可以在命令提示符下从任何文件夹中调用它.
### svndel.bat
svn status | findstr /R "^!" > missing.list
for /F "tokens=* delims=! " %%A in (missing.list) do (svn delete "%%A")
del missing.list 2>NUL
Run Code Online (Sandbox Code Playgroud)
实际上可以missing.list从 user3689460 和 Paul Martin 中完全删除
for /F "tokens=* delims=! " %%A in ('svn status ^| findstr /R "^!"') do (svn delete "%%A")
Run Code Online (Sandbox Code Playgroud)
小智 6
我喜欢PowerShell选项...但是如果您使用的是Windows批处理脚本,这是另一个选项:
svn status | findstr /R "^!" > missing.list
for /F "tokens=2 delims= " %%A in (missing.list) do (svn delete %%A)
Run Code Online (Sandbox Code Playgroud)
这个 shell 脚本递归地检查svn status项目中的( ) 目录,删除丢失的文件(根据问题的要求)并将新文件添加到存储库中。它是某种“将项目的当前快照存储到存储库中”。
if [ $# != 1 ]
then
echo "usage: doSVNsnapshot.sh DIR"
exit 0
fi
ROOT=$1
for i in `find ${ROOT} -type d \! -path "*.svn*" `
do
echo
echo "--------------------------"
( cd $i ;
echo $i
echo "--------------------------"
svn status | awk '
/^[!]/ { system("svn rm " $2) }
/^[?]/ { system("svn add " $2) }
'
)
echo
done
Run Code Online (Sandbox Code Playgroud)
小智 5
命令行的轻微修改,它适用于 Mac OS(希望甚至在 Linux 上)并处理命令“svm sr”报告的文件,如“!M”(丢失和修改)。
它处理文件中的空格。
它基于对先前答案的修改:
svn st | grep ! | sed 's/!M/!/' | cut -d! -f2| sed 's/^ *//' | sed 's/^/"/g' | sed 's/$/"/g' | xargs svn --force rm
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91214 次 |
| 最近记录: |