SVN:在Repo浏览器中重命名,同时保持工作副本同步

时间:2012-04-22 11:38:14

标签: svn tortoisesvn

我已经在repo中重命名了一个分支,并且不小心保持使用相同的工作副本(在重命名之前从该分支检出)。当我后来尝试提交时,我注意到工作副本仍然是针对旧路径。我想将更改提交到repo中的新路径,当然还要保留历史等等......

SVN是否有一种优雅的方式?

我读到了关于Switch和Relocate的命令,但我不确定它们中的任何一个是否完全适合我的问题(描述的场景是不同的),而且我总是对在SVN中尝试命令感到有些害怕...有没有人有这些命令的经验?

我想我可以绕过这个问题,例如,将重命名的项目签出到另一个工作副本,然后用更改覆盖它(除了SVN元数据之外)。我还可以编写一些脚本来查找旧路径的所有出现并将它们粗暴地更改为新路径,但我认为必须有某种SVN命令。

谢谢!

2 个答案:

答案 0 :(得分:6)

如果存储库网址发生更改,则需要重新定位您的工作副本。 开关命令用于更改工作副本指向的分支。概念本身很清楚。

但是你谈到项目,我想这就是你面临的问题:你不会在Subversion文档中找到任何项目的引用,因为那不是Subversion的概念。

在Subversion中实现项目有两种基本方法:

  1. 为每个项目创建一个存储库:

    • https://example.com/svn/foo/trunk
    • https://example.com/svn/bar/trunk
  2. 在同一存储库中为每个项目创建一个分支:

    • https://example.com/svn/projects/foo/trunk
    • https://example.com/svn/projects/bar/trunk
  3. 因此,当您说“重命名项目”时,您的意思是“重命名存储库”(#1)或“重命名分支”(#2),解决方案是:

    1. svn relocate将您的工作副本再次与存储库
    2. 相关联
    3. svn update将更改带到您的工作副本(如果更改位于工作副本目录树中)或svn switch更改工作副本指向的分支(如果您有效删除了当前分支)。
    4. 更新:到目前为止,我的建议是从头开始。重命名当前的工作副本,检查一个新的副本并使用常规文件比较工具(如WinMerge或Kdiff3(或TortoiseMerge))重新应用挂起的更改。如果从日志中看不出来,那么试图找出你所做的确切改变是没有好处的。

      对于未来......你不需要用心学习完整的Subversion书籍,但你应该了解基本概念,尤其是。当他们被证明是你日常工作中的一个问题时。

答案 1 :(得分:0)

您是否尝试过使用svn开关..

switch --relocate OLDURL TO NEWURL

哪个可以解决你的问题。