如何移动文件?

222

我正在使用TortoiseSVN连接SourceForge SVN库。我想将一个文件从一个文件夹移动到另一个文件夹以保留其修订历史记录。这是否可行?如果是,如何操作?

(我的当前策略是将文件复制到新文件夹中,然后检入它,最后从当前文件夹中删除该文件。)

13个回答

315
请查看TortoiseSVN帮助中的第5.14.2.移动文件和文件夹部分(或在索引中查找“move”)。您可以通过右键拖动来移动。它还提到您需要从父文件夹提交以使其成为“一个”修订版。这适用于在工作副本中进行更改。请注意,如果目标文件夹已添加到存储库中,则以下图像中的SVN项目才会显示。

tortoise move menu

您也可以通过仓库浏览器(帮助中的5.23. 仓库浏览器部分)进行此操作。


当我突出显示了所有文件并右键拖动时,常规的Windows资源管理器菜单出现了。它让我选择“移动”,但这不是一个SVN选项,所以我不确定是否发生了任何事情。当我检查是否有修改时,它说有300个文件被删除,300个文件未被版本控制。这似乎没有正确工作。我不知道这是否是它应该工作的方式,所以我不敢提交它。 - Joe Phillips
48
我刚才意识到可能没有成功是因为我还没有添加/提交新目录。 - Joe Phillips
我知道这已经过去好几年了,但是Joe的评论很重要。我也曾经遇到过这个问题——我忽略了答案中的那个小提示。目标文件夹必须在SVN控制下,否则这个方法行不通。幸运的是,SVN允许添加空文件夹。将文件夹置于SVN控制下后,右键拖动操作就可以像上面描述的那样进行了。否则,会出现通用的Windows“复制到此处/移动到此处/取消”菜单(即缺少SVN选项)。 - ripvlan
这很完美。我在一次性移动1,500个文件时遇到了一些问题。然而,逐个目录移动它们似乎解决了这个问题。 - Michael Murphy

97

Subversion原生支持移动文件。

svn move SOURCE DESTINATION

请参阅在线帮助(svn help move)以获取更多信息。


或者另一种说法是:svn move <当前路径/文件名> <目标路径/文件名> - Joe

82

使用TortoiseSVN,我只需在磁盘上移动文件。

当我要提交我的更改时,我选择缺失的文件和新文件,并从右键菜单中选择“修复移动”:

enter image description here

这意味着我可以让我的IDE移动文件并使用重构工具而不会丢失历史记录。


3
这是我现在移动文件的首选方式。需要注意的是:每次提交之间最好只处理少于20个文件,否则会很耗时间去找到彼此相关的文件。 - DarrenMB
@DarrenMB是正确的:我即将从Eclipse迁移一个Android项目到Android Studio。所有文件都必须被移动。这种方法不是我想在这里使用的。 - Bondax
@Bondax 是的,对于整个项目的迁移,最好从 SVN 内部进行移动 - 这应该是你偶尔要做的事情。我发现这是大多数开发人员在项目期间完成的大多数文件移动的更好方式。 - Keith
1
我也没有修复移动功能,使用的是Tortoise SVN 1.9.4。 - Mark Patterson
@Mark Patterson:我看到了这个选项,而且我也在使用1.9.4版本(TortoiseSVN 1.9.4,Build 27285和Subversion 1.9.4 - release)。我认为你的问题与版本无关... 这是此功能的官方文档:https://tortoisesvn.net/repairmoves.html - Yosko
提示:在查看存储库的SVN日志时,日志窗口底部有一个“停止复制/重命名”的复选框。如果您想要在日志中显示移动之前目录的历史记录,则需要取消选中该复选框。 - Nick

37
在TortoiseSVN中右键单击某个位置,然后选择 TortoiseSVN > Repo Browser 打开代码库。 接下来您只需要将文件从一个文件夹拖放到您想要的位置。它会提示您添加提交信息,并将其默认设置为“远程移动文件/文件夹”。

22

使用TortoiseSVN,我只需右键拖动文件夹从一个位置到另一个位置。当你松开鼠标右键时,你会有“SVN移动版本文件”的选项。然而,我相信SVN在那里并没有做任何“花哨”的事情,只是简单地删除了以前位置的文件,并将其添加到新位置。


19

对于TortoiseSVN客户端:

  1. 选择您想要移动的文件,
  2. 右键单击并拖动文件到您希望将它们移动到的文件夹中,
  3. 当您在文件夹上释放拖放时,会弹出一个窗口。单击 "SVN 在此处移动版本化项目"
  4. 在您单击上述内容后,提交窗口消息框将出现。输入一条消息并提交。

现在您完成了。


8

按照平常操作系统上下文菜单的方式剪切文件,然后不要进行常规粘贴,右键点击以打开上下文菜单,然后选择 TortoiseSVN -> 粘贴(确保从根目录提交以包括旧文件和新文件在提交中)。


4
我认为在TortoiseSVN的SVN浏览器中,您只需将其从一个位置拖动到另一个位置即可。

2

3
由于该链接可能会损坏,您可能需要将相关信息复制到您的回答中。 - Cees Timmerman
3
链接已经失效。就是这样。 - Stuart.Sklinar

1

使用TortoiseSVN传输文件:

步骤一: 请选择要移动的文件, 右键并拖动文件到您想要将它们移动到的文件夹中, 按照以下说明进行操作后,将弹出一个窗口。

SVN option

步骤2: 点击上述内容后,按照下面的说明提交文件。

SVN Commit


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,