在 SVN 中重命名多个文件

Rename Multiple Files in SVN

有没有办法在 SVN 中轻松重命名位于一个文件夹中的多个文件?最好使用命令行或 powershell 命令之类的基本命令。

例如,如果我只是在 windows 资源管理器中重命名它们,我会使用像 Get-ChildItem | Rename-Item -NewName {$_.name -replace "Rev A","RevB"} 这样的 powershell 命令将所有文件中的 "Rev A" 更改为 "Rev B"名字。有没有办法做类似的事情并让 SVN 识别它?

如果您直接在文件系统中更改文件的名称,例如将 file-revA 更改为 file-revB(如您的脚本建议的那样),SVN 将识别 file-revA 的删除。然后,您必须将新的文件-revB 添加到 SVN 中,让 SVN 知道它。

注意:从 SVN 的角度来看,file-revB 是一个全新的文件,因此您只能看到它从添加到 SVN 时开始的历史记录(您将失去 "link"前一个文件-revA).

为避免丢失历史记录,您可以使用特定的 svn move 命令。

在任何情况下,您都应该在项目开始时仔细选择文件名,或者最好仅在真正需要或历史记录无关紧要时才重命名它们,以避免在阅读历史记录时遇到麻烦。

使用 SVN move command 您可以重命名文件(基本上是 移动 )。 PowerShell 脚本可能如下所示:

Get-ChildItem | ForEach-Object {
    svn mv $_.Name $_.Name.replace("Rev a", "Rev B")
}

正如@salvolds 所说,您应该谨慎选择文件名。更重要的是,你应该小心使用你的版本控制系统,但我不会对此做出判断。

最后就是一个文件的删除和一个新的添加。