Subversion状态符号“〜”是什么意思?

当我执行一个svn status时,我得到一个代字符号。

这是在XCode中编辑项目后的输出。

 svn status M build/Currency_Converter.build/Currency_Converter.pbxindex/imports.pbxbtree M build/Currency_Converter.build/Currency_Converter.pbxindex/pbxindex.header M build/Currency_Converter.build/Currency_Converter.pbxindex/symbols0.pbxsymbols ~ build/Currency_Converter.build/Currency_Converter.pbxindex/strings.pbxstrings M main.m //more changed files 

任何想法是什么意思? 似乎无法find它在谷歌或任何svn作弊表。

有趣的是,我只编辑main.m,但是有很多修改过的文件。 不知道为什么会这样。 任何人有任何使用SVN和XCode的技巧? 我应该只将我的源文件在版本控制下?

编辑: – 由已经在版本控制下的文件replace为另一种types的文件。 在这种情况下,strings.pbxstrings曾经是一个文件,现在成为一个目录。 故事的道德是不要把你的build立文件夹进入版本控制。

SVN书说:

Item被作为一种对象(文件,目录,链接)进行版本化,但被不同types的对象所取代。

所以也许它最初是一个单一的文件,但你把它改为一个目录,或者沿着这些线?

这是我做的:

如果该文件夹是testing

  1. mv Test Test1
  2. svn删除testing
  3. mv Test1testing

 svn help status 

'〜'版本的项目被某种不同types的项目所阻挡

我只看到这个文件权限已经改变,svn没有执行访问,我相信。

希望这可以帮助。

解决这个问题的最简单的方法是备份,然后删除具有这种状态的文件夹或文件,然后执行“svn up”:它不一定是一个被文件replace的文件夹,可能只是.svn文件夹丢失或损坏。

当您删除文件夹中的.svn文件夹(例如删除目录,然后再次创build相同的目录)时,或者用符号链接或具有相同名称的文件replace目录时,可能会发生这种情况。

假设它是一个名为“文件夹”的文件夹,可以通过在父文件夹中发出以下命令来解决此问题:

 $ find a-folder -type d -name '.svn' -print0 | xargs -0 rm -Rf $ svn up --force . svn: Directory 'logs/.svn' containing working copy admin area is missing $ svn up --force . E a-folder ... Updated to revision n. 

然后是svn添加/删除和再次提交更改的问题

 svn delete --keep-local x svn commit -m "del x" svn add x svn commit -m "blah" 

有类似的问题,SVN抱怨锁。 以下是我们所做的:

  • 备份文件
  • 使用rm -r(linux)删除相关目录
  • svn清理目录
  • svn up – 强制在目录上

我只是想分享一下,这是在Joomla中安装扩展时经常遇到的问题。 扩展程序通过CMS安装,由apache拥有,无需编写任何组。 一般来说,下一步是将文件添加到SVN,但是如果你没有sudo或者更改文件权限,那么当SVN不能写入.svn目录时,SVN会失败。 这是简单的解决scheme。

 mv foo foo-bak svn up foo svn revert foo # just for good measure. Foo should not show up in the two following commands. ls | grep foo svn st | grep foo mv foo-bak foo svn add foo 

这也可能是Windows下的符号链接的问题。 当你提交到SVN的符号链接,然后在Windows下检查出来,链接被改为常规文件,这也被报告为〜。

我经常在升级(例如)Joomla!,Wordpress或Drupal下的模块时有这个function。 有时。升级过程中会删除.svn目录。

 # rename updated directory mv foo foo.new # restore the old directory svn up foo # merge / update the old directory with new items # notice that the above command will preserve the obsolete files # so you should do a diff -r in order to remove them cp -r foo.new/* foo # Add files commit, etc svn add foo/* svn delete foo/xx svn commit -m "updated module" 
 ~ versioned item obstructed by some item of a different kind Second column: Modifications of a file's or directory's properties