如何在恢复后强制在SVN中提交工作副本

时间:2013-03-04 18:14:00

标签: svn

我不得不将我的受SVN保护的代码恢复到早期版本,然后我对其进行了大量修改。我想将修改后的版本提交给SVN,但是当我尝试提交时,SVN告诉我必须先更新。我不想这样做。

是否可以指定我的本地版本(工作副本)是新的当前版本,而没有来自SVN的更新?

3 个答案:

答案 0 :(得分:1)

答案似乎是svn up --accept mine-full

答案 1 :(得分:1)

除了在主干或分支的HEAD之外,您无法提交更改。这是所有版本控制系统的尝试。否则,人们将覆盖他们想要保留的变化。

您可以做两件事:

  1. 转发并更新到最新版本。 Subversion不会覆盖您的更改,而只会更新它的位置。可能存在一些冲突。这一切都取决于您修改的代码的年龄。例如,我们目前处于修订版12,001,我检查了修订版11,980,因为这是我们服务器上的内容,我正在调试它。我在两个文件中修复了一些小问题。更新到最新版本将更新所有文件,甚至是我工作的文件,但不会更新我正在处理的文件的区域。很可能,这真的是我想要做的。 (当然,一旦你更新就彻底测试!)。
  2. 根据您的修订创建一个新分支。 Subversion可以在一毫秒内完成。然后,在新分支上提交更改。
  3. 让我们再次假设,我检查了修订版11,980,最新版本是12,0001:

    $ svn co -r 11980 http://path/to/my/project workdir
    $ cd workdir
    ...a bunch of changes
    $ svn commit -m"My changes"
    SVN Error: you need to update first...
    $ svn copy -r11900 http://path/to/my/project@11900 http://path/to/branches/my_branch/project
    

    现在,我将 base 作为分支工作。现在,我要切换到那个分支:

    $ svn switch http://path/to/branches/my_branch/project
    

    我的工作目录位于新分支上,该分支基于我正在处理的旧版本。我的所有更改都未触及开关。我现在可以毫无问题地提交我的更改。

    $ svn commit -m"My changes"
    $ It worked!
    

    现在,如果我愿意,我可以将我的更改合并回原始项目:

    $ svn co http://path/to/my/project workdir2
    $ cd workdir2
    $ svn merge http://path/to/branches/my_branch/project
    

答案 2 :(得分:0)

1)将最终代码库备份到硬盘中的其他位置 2)采取更新
3)从SVN中删除所有内容 4)从备份驱动器复制粘贴所有代码库 5)提交

OR

如果有帮助,你可以进行清理,我不这么认为......