代码之家  ›  专栏  ›  技术社区  ›  Duncan C

如何修复Subversion/XCode问题

  •  1
  • Duncan C  · 技术社区  · 15 年前

    我在XCode中有一个Mac项目,它位于subversion存储库中。

    Subversion是使用svn+ssh在远程服务器上设置的。

    我曾多次尝试向项目中添加一组嵌套的目录,但为了使其正常工作,我不得不删除并重新添加顶级目录几次。

    这样做时,我忘记了subversion在项目层次结构的每个级别上留下的“.svn”文件,以便跟踪存储库中签出的状态。

    我使用XCode“add to repository”命令将子目录的第一个版本添加到我的工作副本中。

    现在,当我尝试签入一轮更改时,会出现一个非常不有用的错误:

    “错误:155005(工作副本未锁定;这可能是个错误,请报告)描述:提交失败(详细信息如下): 错误:155005(工作副本未锁定;这可能是个错误,请报告)描述:缺少包含工作副本管理区域的目录'/Development/FractalWorks/FractalWorks Plots/.svn'”

    我需要弄清楚如何退出add命令并将工作副本设置为状态,以便可以签入对存储库的更改。

    我在终端工作并在那里发出svn命令相当舒服。我也有一个注册版本的“版本”应用程序,虽然我目前没有使用它来管理这个项目。

    有人能告诉我一些关于如何清理工作副本的信息,删除我所做的“添加到存储库”命令的痕迹,这样我就可以将文件的最后一个子目录添加到我的项目中并让它提交吗?

    我发现svn不透明,很难导航,而且手册的内容也不是很丰富。当工作副本与存储库不同步时,我没有看到任何有关如何处理这种情况的信息。任何帮助都将不胜感激。

    1 回复  |  直到 15 年前
        1
  •  2
  •   JeremyP    15 年前

    svn revert file-i-added 将退出添加。

    然而,摆脱这种情况最简单的方法就是检查一份干净的工作副本。你应该做的是:

    1. 把你现在的工作副本移到别的地方。
    2. 在工作副本所在的位置签出项目层次结构的干净副本。
    3. 将移动的工作副本中的任何更改复制回新副本。

    执行第三步时,请注意不要将新工作副本中的目录替换为旧工作副本中的目录。改为复制内容。如果发现新工作副本中缺少整个目录,可以递归地从旧工作副本复制该目录,然后 svn add 整棵树。但要确保你没有抄袭 .svn 旧工作副本中的目录。实际上,您可能希望在旧的工作副本上运行以下命令( 先备份 )

    find old-working-copy-dir -name '.svn' -type d -exec rm -rf {} \;