0

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

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

4

3 回答 3

1

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

于 2013-03-04T21:25:32.607 回答
1

HEAD除了主干或分支之外,您不能提交更改。这适用于所有版本控制系统。否则,人们将覆盖他们想要保留的更改。

你可以做两件事:

  1. 继续前进并更新到最新版本。Subversion 不会覆盖您的更改,而是会简单地更新它可以的地方。可能会有一些冲突。这完全取决于您修改的代码有多旧。例如,我们目前处于修订版 12,001,我检查了修订版 11,980,因为那是我们服务器上的内容,我正在调试它。我在两个文件中修复了一些小问题。更新到最新版本将更新所有文件,甚至是我处理过的文件,但不会更新我处理过的那些文件的区域。很可能,这确实是我想要做的。(当然,更新后要彻底测试!)。
  2. 根据您的修订创建一个新分支。Subversion 可以在一毫秒内完成。然后,在该新分支上提交您的更改。

让我们再次假设,我检查了修订版 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

现在,我有了作为一个分支的工作基础。现在,我要切换到那个分支:

$ 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
于 2013-03-04T22:48:47.640 回答
0

1)在硬盘的其他地方备份您的最终代码库。
2) 进行更新
3) 从 SVN 中删除所有内容
4) 从备份驱动器复制粘贴所有代码库
5) 提交

或者

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

于 2013-03-04T19:28:07.837 回答