SVN提交失败,因为我没有签出

时间:2009-10-31 20:58:59

标签: svn version-control

我有一些源代码,我将其导入SVN。我忘记更新或检查它并对文件进行了一些更改。

现在(可以理解)SVN不允许我提交这些更改。它说:

  

的svn:   '/ home / name / folder'是   不是工作副本

我现在可以做些什么来提交这些更改?

5 个答案:

答案 0 :(得分:4)

您看到的错误:“svn:'/ home / name / folder'不是工作副本”与没有运行更新无关。这意味着什么:

  

/ home / name / folder 不是工作副本

以下是对正在发生的事情的猜测:

  1. 您导入了一个项目(我们将其称为“文件夹”)为subversion。
  2. 你忽略了检查它(svn chekout svn:// MYREPO / FOLDER文件夹)。
  3. 您使用的是最初导入的文件夹,该文件夹不是正常工作的副本。
  4. 现在你被卡住了。
  5. 以下是我对解决方案的建议:

    1. 从svn查看你的“文件夹”!
    2. svn co svn://MYREPO/FOLDER folder.svn 
      
      1. 将您编辑过的文件从'folder'复制到'folder.svn',替换那里的副本。
      2. rsync -r folder/ folder.svn
        
        1. 运行svn status。你应该看到有局部的变化。

        2. 不要忘记使用svn add添加任何新文件。

        3. svn commit您的更改。

        4. 扔掉'文件夹'。从现在开始在'folder.svn'工作。

答案 1 :(得分:1)

将文件放入svn后,需要检查它们以创建工作树。您可以将编辑过的文件保留在原来的位置,并在其他地方签出工作树。然后在工作树和编辑过的文件之间进行差异处理,您应该看到所做的更改。将编辑过的文件复制到工作树上,然后将其签入。

答案 2 :(得分:0)

你应该有冲突。

如果您遇到冲突,则需要执行以下三项操作之一:

  • “手动”合并冲突的文本(通过检查和编辑文件中的冲突标记)。
  • 将一个临时文件复制到工作文件的顶部。
  • 运行svn revert以丢弃所有本地更改。

你必须尝试解决它! 看看

http://www.linxit.de/svnbook/en/1.2/svn.tour.cycle.html#svn.tour.cycle.resolve

答案 3 :(得分:0)

bendin的回答是正确的。但是,如果您不关心保留原始版本,您也可以重新开始并重新导入文件夹,就像现在一样。您必须先删除旧版本(svn rm -m '' oldFolder)。

答案 4 :(得分:0)

要将常规目录转换为工作副本,您可以执行以下操作:

svn checkout --force svn://MYREPO/FOLDER /home/name/folder
svn add --depth infinity /home/name/folder/*

现在,您导入后对文件所做的所有修改都将显示为本地修改,文件夹中的其他所有内容都将添加到版本控制中。

这使得无需进行任何复制/粘贴/删除。