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

myD*_*ame 6 svn tortoisesvn

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

SVN有一个优雅的方式吗?

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

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

谢谢!

Álv*_*lez 7

如果存储库URL发生更改,则需要重新定位工作副本.该开关命令用于你的工作拷贝点改变分支.概念本身非常清楚.

但是你谈到项目,我想这是你面临的问题:你不会在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

因此,当您说"重命名项目"时,您的意思是"重命名存储库"(#1)或"重命名分支"(#2),解决方案是:

  1. svn relocate 将您的工作副本再次链接到存储库
  2. 要么svn update将更改带到工作副本(如果更改位于工作副本目录树中),要么svn switch更改工作副本指向的分支(如果您有效地删除了当前分支).

更新:到目前为止,我的建议是从头开始.重命名当前的工作副本,检查一个新的副本并使用常规文件比较工具(如WinMerge或Kdiff3(或TortoiseMerge))重新应用挂起的更改.如果从日志中看不出来,那么试图找出您所做的确切更改是没有任何好处的.

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