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


110

进行时我得到波浪符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

知道这意味着什么吗?似乎无法在Google或任何svn备忘单上找到它。

有趣的是,我只编辑了main.m,但是有很多修改过的文件。邓诺为什么会这样。任何人都有使用SVN和XCode的任何提示吗?我应该只将源文件置于版本控制之下吗?

编辑: -由已经在版本控制下的文件替换为另一类型的文件引起。在这种情况下,strings.pbxstrings曾经是一个文件,现在变成了目录。故事的寓意是不要将构建文件夹放入版本控制中。


嗯,我不确定是否有办法“修复”它,而不是重新添加。您可能想发布另一个问题,询问是否有解决此问题的好方法,您会得到更多关注(因为当前问题已得到回答)。
乍得桦木

Answers:


88

SVN书说:

项目被版本化为一种对象(文件,目录,链接),但已被另一种对象替代。

所以也许它最初是一个文件,但是您将其更改为目录,或者类似的内容?


1
看来您是对的。它是一个现在没有.svn文件的目录。关于如何解决这个问题的任何想法?我是否需要从Subversion中删除它并再次添加它?
尔加森,2009年

您有没有找到解决此问题的方法?
Phill Pafford 2010年

48
最好的解决方案是重命名新对象(在您的情况下为目录);从存储库中“ svn remove”导致冲突的对象(可能是您已删除的文件),提交,然后重新命名新对象并将其“ svn add”到存储库中。再次提交。您将有3个修订的序列,其中分别存在,删除了旧对象,并添加了新对象。
Brian Lacy 2010年

8
如果有人阅读此线程有相同的问题:这发生在我身上,并且状态为〜的原因是我在存储库中有一些符号链接,这些链接已由标准文件通过sed -i操作覆盖。我重新创建了符号链接,“〜”消失了。
jb

5
@JamieBullock今天出于同样的原因我也发生了同样的事情。我什至不知道出了什么问题之前就尝试了该命令:svn status | grep ^~ | grep -o [^[:space:]]\*\$ | xargs svn revert它能够恢复所有符号链接。
Paul

34

这是我所做的:

如果文件夹是Test

  1. mv测试Test1
  2. svn删除测试
  3. mv Test1测试

5
只要我致力于删除和添加之间的工作,这对我就可以工作。1. mv测试Test1 2. svn删除测试3. svn提交-m“已删除的测试” 4. mv Test1测试5. svn添加测试6. svn提交-m“添加的测试”
布兰登·布罗杰斯基

1
@sancelot的答案要好得多;如果使用,则无需重命名svn delete --keep-local fileName
DawnSong

15

svn help status

'〜'版本版本的项目被其他种类的项目阻塞

我只看到文件权限已更改并且svn没有执行权限的地方,我相信。

希望这可以帮助。


12

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


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

无需重命名。您给出了最佳答案。
DawnSong

最佳答案!这样可以解决此问题。就我而言,这是一个作为常规文件提交的软链接。

10

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

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

$ 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添加/删除并再次提交更改的问题


3

遇到类似问题,SVN抱怨锁。这是我们所做的:

  • 备份文件
  • 使用rm -r删除了相关目录(linux)
  • 清理命令的目录
  • svn的了--force上的目录

3

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

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

2

Windows下的符号链接也可能与此有关。当您将符号链接提交到SVN中,然后在Windows下将其签出时,链接将更改为常规文件,并且也报告为〜。


1
那么如何解决这个问题?

2

在升级(例如)Joomla!,Wordpress或Drupal下的模块时,我经常遇到这个问题。有时.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"

0
~ versioned item obstructed by some item of a different kind
    Second column: Modifications of a file's or directory's properties
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.