颠覆大乱 - 现在如何提交?

时间:2012-07-26 16:10:26

标签: svn version-control

我一直在玩一个受源代码控制的项目已经有一段时间了。我添加了几个文件,删除了一些其他文件,并将另一个项目中的整个目录复制到这个文件中。我现在才意识到其中一些复制的文件夹里面有.svn目录,但是,目前我们无法弄清楚只看项目哪个.svn目录与当前项目有关,哪些没有。< / p>

我非常需要承诺,正如预期的那样,svn让我头疼。起初我遇到了那些唠叨的“丢失或未锁定”的错误,但是在经历了很多混乱之后,我想我真的搞砸了。

那么,我应该如何继续提交?我应该删除所有.svn文件夹(我不确定哪些文件夹对应于当前项目,哪些不符合)或者是否会删除将每个文件连接到svn服务器中旧版本的所有信息?< / p>

由于

3 个答案:

答案 0 :(得分:5)

我会尝试以下方法:

  1. 备份您的(损坏的)工作复印件
  2. 查看要提交内容的干净工作副本
  3. 删除此(干净)工作副本中的所有文件,但保留所有文件夹 .svn文件夹
  4. 删除(损坏的)工作副本中的所有.svn文件夹,但保留所有文件和文件夹
  5. 将您已损坏的工作副本(在删除.svn文件夹时不再是工作副本)复制到干净的工作副本中
  6. 将所有新文件添加到工作副本中(使用 svn status 进行检查)
  7. 删除工作副本报告为丢失的所有文件(空文件夹必须手动删除,抱歉!)
  8. 现在将所有更改提交到您的存储库
  9. 这应该在提交之前仔细检查svn状态是不可避免的,如果出现问题再次使用备份启动

答案 1 :(得分:1)

清除所有.svn个文件夹可能不是您需要的。在每个.svn文件夹中,有一个名为entries的文件。在该文件中,远程仓库的URL(自从使用Git以来不再记住正确的SVN措辞;对不起)。

假设您的常规仓库位于http://server1.com/myregularrepo并且您知道所有复制的文件夹(实际上并不属于您的仓库)来自http://otherserver.com/otherrepo,那么搜索entries就可以了。{ 1}}包含http://otherserver.com/otherrepo的文件,然后删除其父文件夹(即其.svn文件夹)。

如果您将多个外国仓库目录复制到您的工作副本,事情会变得更复杂,但我认为您已经掌握了该怎么做。

答案 2 :(得分:0)

如果您的代码符合您的要求,我相信您可以执行svn导出(删除所有.svn文件夹,然后将其作为补丁导入原始项目。