Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SVN跨文件跟踪更改 我正在研究一个遗留C++项目,其中单个文件中有很多类,有些文件最终是8K+行。我计划将其中一些类移动到单独的文件中。该项目使用SVN。我想知道SVN是否能够跟踪这种变化的历史,因为如果不能,我可能不会进行重构_C++_Svn - Fatal编程技术网

SVN跨文件跟踪更改 我正在研究一个遗留C++项目,其中单个文件中有很多类,有些文件最终是8K+行。我计划将其中一些类移动到单独的文件中。该项目使用SVN。我想知道SVN是否能够跟踪这种变化的历史,因为如果不能,我可能不会进行重构

SVN跨文件跟踪更改 我正在研究一个遗留C++项目,其中单个文件中有很多类,有些文件最终是8K+行。我计划将其中一些类移动到单独的文件中。该项目使用SVN。我想知道SVN是否能够跟踪这种变化的历史,因为如果不能,我可能不会进行重构,c++,svn,C++,Svn,例如,我有3个类A B C的old.cpp。我想将其重构为A.cpp B.cpp C.cpp。如果我选择C.cpp的历史记录,我希望看到old.cpp中使用的类以及old.cpp中对C的所有更改。因为您在SVN中的项目-您将始终能够返回到原始版本。 我强烈建议在更改之前编写单元测试,这样您就可以在每次更改之后跟踪程序的健全性 我过去经历过这样的变化,我是如何做到的: 在SVN中创建一个单独的分支 从该分支签出源 对于每个类,请执行以下步骤: 将类移动到单独的(新)文件而不更改它。自创建以来,您将

例如,我有3个类A B C的old.cpp。我想将其重构为A.cpp B.cpp C.cpp。如果我选择C.cpp的历史记录,我希望看到old.cpp中使用的类以及old.cpp中对C的所有更改。

因为您在SVN中的项目-您将始终能够返回到原始版本。 我强烈建议在更改之前编写单元测试,这样您就可以在每次更改之后跟踪程序的健全性

我过去经历过这样的变化,我是如何做到的:

  • 在SVN中创建一个单独的分支
  • 从该分支签出源
  • 对于每个类,请执行以下步骤:

  • 将类移动到单独的(新)文件而不更改它。自创建以来,您将能够控制SVN中的每个更改
  • 将更改提交给SVN—这样您就知道文件内容没有任何更改
  • 对新创建的文件进行必要的更改
  • 运行单元测试
  • 提交更改

  • 我从未尝试过使用单个文件(仅使用完整的文件夹,这基本上是分支),但在OrtoiseSVN中,您可以使用鼠标右键拖放文件。当您在显示的上下文菜单中删除文件(在同一工作文件夹中)时,请选择“SVN复制并重命名此处的版本项目”。在此之后(以及其他更改),提交工作副本

    另一个选择是做同样的事情,但从存储库浏览器。与上一个选项的不同之处在于,这里的每个操作都会自动成为一个新版本。我喜欢第一种选择


    复制文件后,对其进行编辑以删除无关内容。使用第一个选项,您可以在与复制相同的版本中进行复制。

    不能直接进行。我还没有尝试过,但您可以尝试执行svn复制,而不只是创建一个新文件(即svn复制,然后从源代码中删除“移动的”代码,从目标代码中删除所有其他内容)。从技术上讲,您也在使用此技术对单个文件进行分支。