如何在Visual Studio中使用Perforce重命名文件时保留更改历史记录

1cklez4t  于 2022-11-17  发布在  其他
关注(0)|答案(4)|浏览(93)

我知道关于使用版本控制系统重命名文件已经有几个问题。但是我没有找到一个令人满意的答案特殊的版本控制系统**Perforce***。
我的问题:当我 * 在 * Visual Studio中重命名C#代码文件时,是否有一个插件/解决方案可以保留它的版本历史记录?
编辑:目前我使用的是VS 2 P4插件。
Edit 2:我找到了一个更短的方法来重命名文件:
1.在资源管理器中打开包含文件夹(在解决方案资源管理器中右键单击“在Windows资源管理器中打开”)。
1.选择文件并右键单击Perforce-〉在P4 V中显示。
1.对所选文件执行正常的重命名/移动操作。
这个场景比在P4 V中的Perforce Depot中导航要短,直到我找到正确的文件。但当然我正在寻找一种更短的方法。
Edit 3:有没有办法直接在VS中使用文件选择 * 来执行“Show in P4 V”

oiopk7p5

oiopk7p51#

Perforce有一个新的Visual Studio插件,它将很快推出beta版。它确实支持内置的Visual Studio重命名操作,并且也能很好地与Resharper一起工作。
在它问世之前,我担心现有的解决方案有点笨拙。

gudnpqoy

gudnpqoy2#

你可以在VS(Tools-〉External Tools)中设置一个外部工具来打开你已经打开的文档,这样你就可以保存一步。虽然不是很理想,但更接近你想要的。

Command: p4v.exe
Arguments: -s $(ItemPath)
Initial Directory: $(ItemDir)
3ks5zfa0

3ks5zfa03#


我现在有一个很好的解决方案。只是处理宏事件SolutionItemsEvents_ItemRenamed。
这是通过点击 Tools-〉Macros-〉Macros IDE 打开Macros IDE完成的。然后将以下事件处理程序添加到您的宏项目中:

Private Sub SolutionItemsEvents_ItemRenamed(ByVal ProjectItem As EnvDTE.ProjectItem,
                                                ByVal OldName As String)
                Handles SolutionItemsEvents.ItemRenamed

        Dim process As System.Diagnostics.Process

        process.Start("p4", "move -k " & ProjectItem.Properties.Parent.Document.Path &
                      "\\" & OldName & " " & ProjectItem.Document.Path)
    End Sub

请参见屏幕截图:

正如您所看到的,它只调用了“p4 move -k”。需要“-k”选项是因为在重命名之后,旧文件已经被删除,因此Perforce将抛出一个没有“-k”的错误。“-k”导致Perforce只重命名服务器上的文件。
如果出现Perforce连接错误,则需要添加一个定义连接的P4 CONFIG文件。此操作通过以下方式完成:

  • 将文件 p4config.txt 添加到项目的目录(或其任何父目录),其内容为:

P4 CLIENT =您的工作区
P4 USER =用户
P4端口= p4服务器:1234

  • 设置环境变量P4 CONFIG =p4config.txt

现在您可以通过任何方式更改您的文件(解决方案资源管理器项-〉重命名,解决方案资源管理器项-〉F2,ReSharper的 * 重命名文件以匹配类型名称 *,ReSharper的类 * 重命名 *(Ctrl+R,R),...)。

**但请记住:**如果我尝试在一次签入中编辑和重命名同一文件,或者在其他人 checkout 同一文件时重命名该文件,我会遇到问题。

pprl5pva

pprl5pva4#

Visual Studio Plugin提供了与Visual Studio的出色集成。所有重命名操作都运行良好,历史记录也跟踪良好。

相关问题