svn一次提交(队列)?

时间:2011-05-16 16:48:01

标签: svn queue tortoisesvn

我在Windows上使用Tortoise svn客户端,我需要能够在一次提交中同时提交来自不同子文件夹的已更改文件。就像在提交之前将文件添加到队列或类似的东西?我怎么能做到这一点?

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

8 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

如果它们都是同一个存储库的一部分,那么您只需从该存储库的根文件夹提交。如果它们来自不同的存储库,那么这个概念在某种程度上没有意义,因为您将单独提交到单独的存储库,因此它实际上不能是“一次提交”。如果您的子文件夹都是不同的存储库,但您只想在客户端上执行1次提交操作以提交它们,那么您可以制作某种.bat脚本来迭代子文件夹并运行相同的提交命令相同的提交消息。

也许添加更多关于这些“子文件夹”的细节?

答案 2 :(得分:1)

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

答案 3 :(得分:1)

已提供的几个答案基本上提供了相同的(正确的)答案 - 来自您的工作副本根目录。但我认为只提供更多细节是有用的。

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

其次,也许与您的问题最相关,无论您选择提交多少文件,提交操作都是原子,即它提交所有文件或,如果其中任何一个或多个出现问题,则提交。因此,Subversion保证将您的更改组合在一起作为单个更改集。

第三,需要注意的一点是不那么直接,但在这里仍然值得一提:重要的是要注意Subversion操作(外部 repo-browser)在两阶段流程:首先进行本地更改,然后提交更改。对于编辑操作,这似乎几乎是一个重言式:首先编辑,然后提交;编辑本身的行为不会影响存储库。很明显,对吧?当您考虑添加操作时,这并不是那么明显:首先添加,然后提交;添加的行为不会影响存储库!因此,在构建更改集<时,将此问题与您的问题相关联,编辑各种文件,添加各种文件,删除各种文件等/ strong>即可。完成后,从工作副本的根目录打开提交对话框,选择更改集中的所有文件,并在一个原子操作中提交它们。

答案 4 :(得分:1)

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

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

Araxis Merge context menu selections - Queue for Comparison

然后当您右键单击另一个文件夹/文件时,它允许您与排队的一个或多个项目进行比较:

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

我真的很喜欢Tortoise shell支持“Queue for Commit&#39;”,然后添加一个&#39; Commit(在队列中加上+ n)&#39;如果队列不空,则显示菜单。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

从子目录上升1个目录,右键单击,然后从那里“SVN Commit ..”。然后在“已更改”窗格中,仅选择(和所有)您想要一次提交的子目录。

答案 7 :(得分:0)

您可以使用changelist feature的subversion(TortoiseSVN > 1.5中也可用),它允许您创建与同一功能相关的提交文件列表。