2011-05-16 67 views
2

我在Windows上使用的是Tortoise svn客户端,我需要能够在一次提交中同时提交来自不同子文件夹的已更改文件。就像在提交之前将文件添加到队列中一样?我怎样才能做到这一点?svn一次全部提交(队列)?

在Windows上有另一个svn客户端可以做到这一点吗?

+0

你如何用龟来做到这一点?乌龟svn客户端允许提交子文件夹。也许你试图以错误的方式使用它。 – 2011-05-16 17:00:04

回答

0

它们全都在同一个存储库中吗?如果是这样,只要到工作副本的根目录并从那里提交

0

从子目录中右键单击目录,然后单击“SVN提交..”。然后在“更改已完成”窗格中,只选择(和全部)您想一次提交的子目录。

1

如果它们都是同一存储库的一部分,那么您只需从该存储库的根文件夹进行提交。如果它们来自不同的存储库,那么这个概念有点没有道理,因为你会分开提交来分离存储库,所以它不能真正成为“一个提交”。如果你有一些子文件夹都是不同的版本库,但你只想在客户端上执行1次提交操作来提交它们,那么你可以制作某种.bat脚本来遍历子文件夹,并运行相同的提交命令相同的提交消息。

也许增加更多这些“子文件夹”是什么的细节?

5

如果您的工作副本具有所有这些文件夹的根目录,则可以转到此根目录并提交。如果您已经在没有root的情况下单独检出这些子文件夹,则必须进行多次提交。

+0

我认为TortoiseSVN允许您在一个未版本化的目录中选择多个工作副本,并且如果它们都指向同一个存储库,请将它们一起提交。至少,我很确定我之前做过这些:-) – Ben 2014-09-11 01:57:14

1

尝试从您的顶级文件夹提交。它会向您显示修改和未更改的文件,即使它们位于子文件夹中。

1

已经提供的几个答案给出了基本相同(正确)的答案 - 从您的工作副本根提交。但我认为只给出几个更多细节是有用的。

首先,从根提交确认不是意味着您必须提交所有内容(如果您担心还没有提交一些不相关的编辑)。提交对话框允许您从所有已更改文件的集合中选择或取消选择。

其次,也许是最相关的问题,不管你选择多少文件提交,提交操作是原子,即它提交所有的文件,或者,如果有任何一个出现问题或更多,它承诺。因此,Subversion保证将您的更改作为一个更改集合组合在一起。第三,需要注意的一点是稍微不直接,但在这里仍然值得一提:需要注意的是,Subversion操作(以外的回购浏览器)在两阶段流程下运行:首先进行本地更改,然后执行更改。对于编辑操作,这似乎几乎是一种同义:首先进行编辑,然后提交;编辑本身的行为不会影响存储库。很明显,对吗?当你考虑增加操作时,这并不是那么明显:首先你添加,然后你提交;添加的行为不会影响存储库!因此,建立您的更改集时,请将此与您的问题相关联,编辑各种文件,添加各种文件,删除各种文件等。完成后,从工作副本的根目录打开提交对话框,并选择变更集中的所有文件,并在一次原子操作中提交它们。

1

因此,我经常使用TortoiseSVN的一个功能,我认为它可能与您的请求类似,只是将文件夹或文件拖动到提交对话框。只要他们都在一个单一的根目录工作文件夹下,它就会解决这个问题,并让您在一次提交中提交它们。这是一个非常方便的功能,我一直在使用。

此功能的进一步扩展,我希望看到的是Araxis Merge提供的功能。您可以右键点击一个文件或文件夹,然后选择“队列比较”:

Araxis Merge context menu selections - Queue for Comparison

然后用鼠标右键单击另一个文件夹/文件,它允许你做的一个或多个项目的比较该被排队:

Araxis Merge context menu selections - Compare with Araxis Merge (+n in queue)

我很想龟甲支持“队列为提交”,然后加入到“提交(带+ n的队列)”菜单,如果队列不为空。