Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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
Version control 正在SVN中移动文件夹,有点麻烦_Version Control_Tortoisesvn - Fatal编程技术网

Version control 正在SVN中移动文件夹,有点麻烦

Version control 正在SVN中移动文件夹,有点麻烦,version-control,tortoisesvn,Version Control,Tortoisesvn,我有一个关于codeplex的项目,我正在尝试重新组织树结构,使它更有意义,更易于使用 这是我当前的布局: TopLevel |-->src |--->ProjectA //This is where all the files are held |-->Core //plus three more folders |-->MyProject.Core |--->trunk |-->src // I want t

我有一个关于codeplex的项目,我正在尝试重新组织树结构,使它更有意义,更易于使用

这是我当前的布局:

TopLevel
|-->src
   |--->ProjectA //This is where all the files are held
         |-->Core //plus three more folders 
|-->MyProject.Core
   |--->trunk
        |-->src // I want to move all the folders and files in ProjectA into here
所以我想将ProjectA下的所有文件夹和文件移动到ProjectA.Core/Trunk/src

我签出整个源代码树,右键单击并拖动ProjectA文件夹下的文件夹,并选择“将版本文件移到此处”到src文件夹中,该文件夹将项目中的文件夹标记为删除,但src中的新文件旁边仍有绿色勾号,而不是蓝色加号按钮

提交更改后,我查看了一下repo浏览器,发现文件夹没有移动,仍然在ProjectA文件夹中

如何在subversion中将文件夹和这些文件夹中的文件移动到其他文件夹?不丢失版本历史记录

我用的是乌龟


编辑:原来一定是codeplex,我把我的项目移到了google code,一切正常。

我不知道我建议导出和导入文件时在想什么。我想我离开乌龟太久了。我记得,乌龟svn实际上有移动整个目录的能力。这不仅仅是显而易见的。。。但不清楚为什么不能将结果正确提交到存储库。假设您确实提交了所有这些文件夹的父文件夹

总结如下: 必须选择要移动的文件夹和文件,然后用鼠标右键单击所选内容并用鼠标右键将其拖动到新位置。您将看到一个上下文菜单,询问您是否希望重新定位存储库中的文件。这保留了历史。现在,您的旧文件已标记为删除,而您的新文件应标记为已添加。(我发现状态图标…并不总是代表真实状态)。将此作为一个提交提交。我喜欢挑三拣四,在签出文件的根目录上使用“检查修改”,然后选择要提交的更改


如果只是像这样移动一个文件夹,请打开一个作为该文件夹父级的窗口,以及另一个作为该文件夹新父级的窗口。右键单击并在一个动作中拖动所有对象。我简直不敢相信,要用这么多文字来描述一个简单的鼠标操作。

我不知道当我建议导出和导入文件时我在想什么。我想我离开乌龟太久了。我记得,乌龟svn实际上有移动整个目录的能力。这不仅仅是显而易见的。。。但不清楚为什么不能将结果正确提交到存储库。假设您确实提交了所有这些文件夹的父文件夹

总结如下: 必须选择要移动的文件夹和文件,然后用鼠标右键单击所选内容并用鼠标右键将其拖动到新位置。您将看到一个上下文菜单,询问您是否希望重新定位存储库中的文件。这保留了历史。现在,您的旧文件已标记为删除,而您的新文件应标记为已添加。(我发现状态图标…并不总是代表真实状态)。将此作为一个提交提交。我喜欢挑三拣四,在签出文件的根目录上使用“检查修改”,然后选择要提交的更改


如果只是像这样移动一个文件夹,请打开一个作为该文件夹父级的窗口,以及另一个作为该文件夹新父级的窗口。右键单击并在一个动作中拖动所有对象。我不敢相信用这么多的文字来描述一个简单的鼠标操作。

处理恶意移动的标准策略是,在最坏的情况下,创建所有新目录,只将文件从旧目录移动到新目录,然后删除所有旧目录。这几乎可以解决您遇到的任何问题,您可以在可行的地方使用快捷方式(移动整个目录和/或树)


这将保留所有文件的历史记录。它不会保留目录创建的历史记录,但通常这是可以接受的,因为您确实有所有文件移动的历史记录,包括新旧目录名。

处理恶意移动的标准策略是,在最坏的情况下,创建所有新目录,仅将文件从旧目录移动到新目录,然后删除所有旧目录。这几乎可以解决您遇到的任何问题,您可以在可行的地方使用快捷方式(移动整个目录和/或树)


这将保留所有文件的历史记录。它不会保留目录创建的历史记录,但通常这是您可以接受的,因为您确实拥有所有文件移动的历史记录,其中包括旧目录名和新目录名。

使用Subversion命令行客户端,这种类型的重组很容易完成,这可能是一个可行的选项。以下是执行此操作的命令(从顶级目录):

还可以使用URL作为源和目标,将这两个命令合并为一个命令,有关详细信息,请参阅文档


我还没有找到一种简单的方法来使用TortoiseSVN做这类事情,所以当我需要的时候,我只需要使用命令行客户端就可以了。

使用Subversion命令行客户端进行这种类型的重组很容易,这对您来说可能是一个可行的选择。以下是执行此操作的命令(从顶级目录):

还可以使用URL作为源和目标,将这两个命令合并为一个命令,有关详细信息,请参阅文档


我还没有找到一种简单的方法来使用TortoiseSVN做这类事情,所以当我需要的时候,我只需要使用命令行客户端就可以了。

Subversion使文件甚至整个直接移动变得很容易
svn mv src/ProjectA MyProject.Core/trunk/src/
svn ci -m "relocate ProjectA"