在单个签入中提交一组svn文件/目录操作

在单个签入中提交一组svn文件/目录操作,svn,version-control,tortoisesvn,Svn,Version Control,Tortoisesvn,我最近决定重新构建我的svn存储库。此作业包括我的存储库中的许多文件/目录操作(重命名、复制、移动和删除)。默认情况下,每个操作都需要在签入上下文中提交。是否有任何方法可以在一次签入中提交大量这些操作?我使用了OrtoiseSVN和Collabnet Subversion 1.6.x TortoiseSVN有两种不同的工具可供使用: SVN windows资源管理器,并提供集成的OrtoiseSVN菜单 陆龟资源库浏览器 存储库浏览器是直接在存储库上工作的UI工具,它不知道您何时“开始和结束

我最近决定重新构建我的svn存储库。此作业包括我的存储库中的许多文件/目录操作(重命名、复制、移动和删除)。默认情况下,每个操作都需要在签入上下文中提交。是否有任何方法可以在一次签入中提交大量这些操作?我使用了OrtoiseSVN和Collabnet Subversion 1.6.x

TortoiseSVN有两种不同的工具可供使用:

  • SVN windows资源管理器,并提供集成的OrtoiseSVN菜单
  • 陆龟资源库浏览器
存储库浏览器是直接在存储库上工作的UI工具,它不知道您何时“开始和结束事务”。因此,如果需要提交,每个命令本身就是一个提交。例如,我不知道有什么可能说

  • 我现在宣布提交会话的开始
  • 然后我做一些改变,移动文件,重命名目录
  • 然后完成提交会话
当您使用集成到windows资源管理器中的TortoiseSVN windows菜单时,首先必须签出整个存储库。然后您可以在本地工作一段时间,使用SVN变体进行重命名、移动和复制,一段时间后,立即提交所有更改

命令行版本允许您执行这两项操作,但其行为相同。从:

此命令移动工作副本或存储库中的文件或目录。。。在存储库中移动文件(这是一个立即提交,因此需要提交消息):

因此,即使您编写一个批处理文件来完成所有工作并调用它,如果您使用直接在存储库上工作的变体,则每个
svn move
(和
svn copy
…)本身也必须有一条提交消息

因此,没有任何选项可以通过一次提交来重构存储库(仅使用存储库浏览器)。您必须签出整个存储库(至少是要重组的部分),在本地执行
svn something
命令,然后在最后提交。这样做的缺点是,您有大量的网络流量,您需要一些本地位置,而且花费的时间要多得多。但这是进行一次提交的唯一方法


也许可以使用
svnadmin
选项,但这本身有很多缺点。

本地移动、复制或删除不应该在单独的提交中完成。检查整个存储库就是一种方法。移动工作副本中的东西是用鼠标右键拖放完成的。@mliebelt:看来虫族和方言是对的。通过右键单击拖放文件时,TortoiseSVN允许您执行一组操作(移动、复制、重命名),然后在一次签入中提交所有更改。请修改您的答案或添加其他答案以涵盖此信息。然后我接受你的回答,我已经添加了更多的文档,以区分在存储库浏览器中工作或在本地副本上工作。我希望现在已经清楚了区别是什么。因此,您应该从您的答案中删除此类错误信息:“因此,不,没有选择(仅)通过一次提交来重组存储库”已经纠正了它。在我看来,这是subversion中的一个bug,因为要重构存储库,应该有一个工具(仅在存储库上)来完成它,所以不必检查所有内容。示例:您有50个标记(带有发行版的内容,每个10 GB大),并且希望在一次提交中重命名它们。要在本地做好这件事并不容易。。。
$ svn move -m "Move a file" http://svn.red-bean.com/repos/foo.c \
                            http://svn.red-bean.com/repos/bar.c