我最近决定重新构建我的svn存储库。此作业包括我的存储库中的大量文件/目录操作(重命名,复制,移动和删除)。默认情况下,每个操作都需要在签入的上下文中提交。是否有任何方法可以在一次签到中提交大量这些操作?我使用TortoiseSVN和Collabnet Subversion 1.6.x.
答案 0 :(得分:3)
TortoiseSVN有两种不同的工具可供使用:
存储库浏览器是一个直接在存储库上工作的UI工具,它不知道何时“开始和结束事务”。因此,如果需要提交,则每个命令本身都是提交。我不知道有什么可能说的。
当您使用集成到Windows资源管理器中的TortoiseSVN Windows菜单时,首先必须签出整个存储库。然后你可以在本地工作一段时间,使用SVN变体进行重命名,移动和复制,一段时间后,立即提交所有更改。
命令行版本允许您同时使用,但行为相同。来自documentation for move
:
此命令可移动工作副本或存储库中的文件或目录。 ...在存储库中移动文件(这是立即提交,因此需要提交消息):
$ svn move -m "Move a file" http://svn.red-bean.com/repos/foo.c \
http://svn.red-bean.com/repos/bar.c
因此,即使您编写批处理文件来执行所有操作,并调用它,每个svn move
(和svn copy
...)本身也必须有一个提交消息,如果您使用直接在存储库上工作的变体。
因此,没有选项可以使用单个提交重构您的存储库(仅使用存储库浏览器)。您必须检查整个存储库(至少是要重构的部分),在本地执行svn something
命令,然后在最后提交。这样做的缺点是你有很多网络流量,你需要在本地使用一些地方,而且花费的时间要多得多。但这是进行单次提交的唯一方法。
也许svnadmin
可能有一个选项,但这本身就有很多缺点。