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

时间:2011-09-25 07:42:55

标签: svn version-control tortoisesvn

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

1 个答案:

答案 0 :(得分:3)

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

  • SVN Windows资源管理器,还有集成的TortoiseSVN菜单。
  • 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可能有一个选项,但这本身就有很多缺点。