首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抑制svn remove的文件不存在错误

抑制svn remove的文件不存在错误
EN

Stack Overflow用户
提问于 2012-05-20 02:47:33
回答 2查看 7.2K关注 0票数 3

在我的项目中,我有一个包含资源的文件夹,当我向我的工作副本添加或删除它们时,我不想手动将它们添加或删除到存储库。

我编写了一个简单的bash脚本,用于检查svn state,并为标记为?的文件调用svn add,为具有!的文件调用svn remove。我将此bash脚本添加到我的构建脚本中。问题是,当使用本地不存在的文件调用svn remove时,会返回一个错误。这会导致我的构建脚本被中止并返回一个错误。

有没有办法抑制这些错误?我试过--force--quiet。没帮上忙。

示例:

代码语言:javascript
复制
MacBook-Pro:proj Bill$ echo "test" > foo.bar
MacBook-Pro:proj Bill$ svn st
?       foo.bar
MacBook-Pro:proj Bill$ svn add foo.bar 
A         foo.bar
MacBook-Pro:proj Bill$ rm foo.bar 
MacBook-Pro:proj Bill$ svn st
!       foo.bar
MacBook-Pro:proj Bill$ svn rm foo.bar
D         foo.bar
svn: 'foo.bar' does not exist
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-20 04:02:31

在(至少)两种不同的情况下,svn stat会打印带有感叹号的行:

  1. 该文件存在于存储库中,不存在于工作目录中,并且未使用svn rm
  2. 该文件不存在于存储库中,对该文件使用了svn add,并且该文件不再存在于工作目录中。

svn rm在第一种情况下有效,但在第二种情况下退出时出现错误。有几种方法可以解决这个问题-取决于您想要实现的目标:

  • 如果在这两种情况下都要删除该文件,请执行以下操作:

touch "$filename" ; svn rm --force "$filename".

  • If如果只想在第二种情况下删除该文件,并在第一种情况下恢复,请执行以下操作:

svn revert "$filename".

票数 4
EN

Stack Overflow用户

发布于 2012-05-20 03:57:50

所以,为了回答我的问题,使用--keep-local解决了这个问题。

这是我最终使用的脚本。这将检查标记为未版本化(?)的文件,并为它们调用svn add。然后,它检查标记为丢失(!)的文件,并为它们调用svn rm

代码语言:javascript
复制
svn st "$Resources" | grep '^?' | sed 's_^?       \(.*\)$_svn add "\1"_g' | sh
svn st "$Resources" | grep '^!' | sed 's_^!       \(.*\)$_svn rm --keep-local  "\1"_g' | sh
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10667973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档