英文:地址  Delivers changes in a source stream to the target stream within or across projects

英文: 地址2 (含PDF) Understanding ClearCase UCM Deliver Dependencies

英文:地址3 Workaround for UCM activity dependencies during a deliver

英文:地址4 Troubleshooting UCM deliver problems

 

Deliver : UCM的概念,是一个从开发流向 UCM Project 集成流或其他开发流提交工作的一个动作。

 

Description


deliver

交付命令让你可以在相同或者不同的项目中从一个源流交付工作到一个目标流。交付可能有下面几步:



  •  Previewing the changes to be delivered
  •  Identifying the activities, stream, or baselines you want to deliver
  •  Resolving merge conflicts
  •  Testing and building work in the target stream
  •  Completing a deliver operation, which checks in new versions and records other information
  • 预览将要交付的变更
  •  确定要交付的活动,流,或者基线
  •  解决归并冲突
  •  在目标流觞测试和构建
  •  检查新的版本集和记录其他信息,完成一个交付操作

 If a deliver operation is interrupted through a system interrupt or user action, you must explicitly resume or cancel it.

 In general, it is good practice to check in all work to your source stream before beginning a deliver operation.You may not deliver when a rebase operation is in progress.

如果一个交付操作被系统中断或者人为操作中断,你必须明确地恢复或取消它。 一般来说,最佳实践是,在你开始支付操作之前,检入所有的工作到你的源流。 您可能无法交付当一个变基操作正在进行。


The integration activity



集成活动

The deliver operation creates a UCM activity called the integration activity, which records a change set for the deliver operation. The activity name is of the form deliver.stream-name.date-stamp

交付操作创建一个名为集成活动的UCM活动,该活动记录了交付操作中的一个变更集。该活动的名称是格式deliver.stream - name.date -stamp。当交付操作开始,集成活动成为了使用中的集成视图中的当前活动。


One-step deliver operation一步交付操作



–complete and –force options. The –force option suppresses prompting for user input during the deliver operation. The –complete

你能够选择–complete 和 –force来 一步交付你的工作, –force 选项取消用户在交付操作中输入提示。–complete


Handling of elements of nondefault merge types



user or never merge types were set for the elements. For information about setting merge behavior for an element type, see mkeltype

user

never


Setting policies



mkproject or mkstream or at a later time with chproject or chstream . For information about project and stream policies, see the reference pages for mkproject and mkstream


Delivering changes with MultiSite(不翻译了)



deliver command determines whether the target stream and source stream are mastered at different replicas. If they are, a remote deliver operation is put into effect. The source stream is assigned a posted status.

 In a remote deliver operation, the source stream must be a development stream. If you want to deliver changes from an integration stream, you can do so by delivering to a development stream on the same replica, and then delivering from the development stream to the remotely mastered stream.

posted

–to integration-view-tag is not accepted when starting a remote deliver operation. The remote post goes to the default target stream or an alternative target stream, if specified. The deliver –status command reports on any remote deliver operation in progress for the specified stream. The project integrator can then cancel or continue the deliver operation, using the –cancel option to halt it, or the –resume or –complete

 While the remote deliver is in progress, you can create activities and perform checkins and checkouts for your source stream, but you cannot perform any of these operations:



  •  Add, remove, or create baselines
  •  Add or remove components
  •  Rebase the source stream
  • deliver
  • Receive changes (as the target stream of a local deliver


Delivering selected activities to a nondefault target



Delivering selected activities to a nondefault target is subject to the following restrictions:

交付选定的活动到一个非默认的目标要受以下限制:



  •  If the full set of activities in the stream violates one of the policy settings, you will not be allowed to proceed with the selected activity delivery, even if the selected activities would not violate the policies.
  •  If the full set of activities in the stream contains changes from a foundation baseline, you will not be allowed to deliver selected activities from this stream, regardless of the deliver policy settings.
  •  If the set of activities you want to deliver contain versions in components that are not visible in the target stream or are not modifiable by the target stream, you will not be allowed to deliver the set of activities. Delivering an activity requires that you deliver all versions in all components in the change set. You can move the versions of the missing or nonmodifiable components into another activity.
  • 如果流中的活动集违反了策略设置中的一个,你将不能进行选定活动交付,即使选定的活动不会违反策略。
  • 如果在流活动集包含从基础基线的更改,您将不能进行选定活动交付,即使交付策略设置允许了。 
  • 如果你想交付的活动集,包含构件中的版本集是在目标流不可见或不被修改目标流,你将不会被允许交付这个活动集。交付一个活动需要您交付变更集中所有构件中的所有版本。你可以移动丢失或未修改的构件的版本集到另一个活动的。


 



update:2010-08-03: 文章

在ClearCase 7.0文档中的官方解释如下(简单的翻译,不保证完全无误,另需要注意的是这份文档针对的ClearCase 7.0,并不一定对ClearCase 6.0兼容):

   1. 启动Deliver操作后,将要Deliver的流的状态将会被置为deliver-in-progress,注意不是目标流。
   2. 检查所有提交的活动之前的依赖关系
   3. 检查所有的目录配置项,如果发现提交流与目标流有不同,则在目标流上Checkout并进行Merge,如果由于目标流上已经对目标项进行了Reserved Check out ,Merge失败,则提交停止;这时所有已经归并成功的目录配置项在目标流上保存Merge结果。
   4. 对所有需要归并的配置项进行Checkout,如果不能进行Reserved类型的Check out,跳过该配置项,继续尝试对其他需要归并的配置进行Check out
   5. 如果不能将所有的配置项Checkout,则以下步骤不会进行,有两种选择
         1. 回退你的Deliver
         2. 解决不能Checkout的问题,例如由于其他人正在进行Deliver操作,所以不能Checkout,则等其他人Deliver完成或回退后再执行Deliver
   6. 所有需要提交的配置项都要Checkout成功后,开始Merge,如果自动Merge不成功,则需要手工Merge
   7. 所有Merge成功后,建议在目标流是进行Build并测试
   8. Build没有问题,Complete提交流,将提交流的状态deliver-in-progress取消

从新的ClearCase文档来看,我的描述基本正确,但是有些深层的,如提交流的状态我没有注意,还有许多需要学习