在我的项目中,我有一个包含资源的文件夹,当我向我的工作副本添加或删除它们时,我不想手动将它们添加或删除到存储库。
我编写了一个简单的bash脚本,用于检查svn state,并为标记为?的文件调用svn add,为具有!的文件调用svn remove。我将此bash脚本添加到我的构建脚本中。问题是,当使用本地不存在的文件调用svn remove时,会返回一个错误。这会导致我的构建脚本被中止并返回一个错误。
有没有办法抑制这些错误?我试过--force和--quiet。没帮上忙。
示例:
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发布于 2012-05-20 04:02:31
在(至少)两种不同的情况下,svn stat会打印带有感叹号的行:
svn rm。svn add,并且该文件不再存在于工作目录中。svn rm在第一种情况下有效,但在第二种情况下退出时出现错误。有几种方法可以解决这个问题-取决于您想要实现的目标:
touch "$filename" ; svn rm --force "$filename".
svn revert "$filename".
发布于 2012-05-20 03:57:50
所以,为了回答我的问题,使用--keep-local解决了这个问题。
这是我最终使用的脚本。这将检查标记为未版本化(?)的文件,并为它们调用svn add。然后,它检查标记为丢失(!)的文件,并为它们调用svn rm。
svn st "$Resources" | grep '^?' | sed 's_^? \(.*\)$_svn add "\1"_g' | sh
svn st "$Resources" | grep '^!' | sed 's_^! \(.*\)$_svn rm --keep-local "\1"_g' | shhttps://stackoverflow.com/questions/10667973
复制相似问题