CVS Branch 和 Merge 在 Eclipse 中的使用


Branch:


我们在version Release_1_0建立一个branch,比如叫做“Release_1_0_Branch”, 这时CVS会同时建立一个regular tag “Root_of_Releas_1_0_Branch”,这个“Root_of_Releas_1_0_Branch” tag的用途是为了以后branch 合并到main trunk时提供一个参考点。


之后开发新版本的人员就基于main trunk工作,而fix bug的人员就基于Release_1_0_Branch工作。
一旦在Release_1_0_Branch上将Release_1_0的bug修复了,我们就可以将Release_1_0_Branch合并到main trunk中来,从而一次性remove the bugs。



Merge:


fix bug之后,这时我们要把 Brank  merge main trunk 了。


1、选择 project -> Right click your project name, choose Replace With > Another Branch or Version from the context menu,
 Then select the HEAD to replace with your current version in your workplace。


  


2、Select the project and choose Team > Merge.


在随后出现的对话框中,你首先选择regular tag ”Root_of_Releas_1_0_Branch”,然后在下一步中选择你的Branch“Release_1_0_Branch”。


3、Synchronize view中的操作


在第二步结束后,Synchronize view中将显示“all the differences between the branch and your workspace version(that is the HEAD version)”,你必须在Synchronize view中通过菜单中提供的“Update, Override and Update, or Mark as Merged”手工决定合并到你工作区的change。


4、在所有期望的changes都被merge到你的工作区后,你就可以“commit”the changes to the repository了。

 

=============================

http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Ftasks%2Ftasks-100b.htm

 

Merging from a branch

After creating and working in a CVS branch for some time, you may want to merge your changes from the branch into another branch, or into HEAD. To do this, you will need to know:

  1. The name of the branch or version that contains your changes.
  2. The version from which the branch was created. This is the version name that you supplied when branching.

To merge your changes:

  1. Ensure that the destination is loaded into your workspace. For example, if you wish to merge your changes into HEAD, make sure the project is shared with HEAD in your workspace. To do this, select the project and choose Replace With > Another Branch or Version from the context menu. Then select the branch to replace with.
  2. Select the project and choose Team > Merge.
  3. Enter the branch or version which contains the changes you want to merge.
  4. The merge dialog will try to guess an appropriate start point. If that fails, enter the start point of the merge. This is the version from which the branch was created. Click Finish.
  5. A CVS Merge synchronization will be added to the Synchronize view, showing all differences between your workspace and the branch with the changes.
  6. Load all of the desired changes into the workspace. This may be accomplished by either manually merging changes, or by choosing Update, Override and Update, or Mark as Merged from the tree's context menu.
  7. After all desired changes are in the workspace, choose Team > Synchronize with Repository. You may then commit all the changes to the repository.

Tip: If you don't know the start point of the merge, you can choose to perform the merge directly into the workspace. This relies on the CVS server to pick an appropriate start point. Because the merge is performed directly into the workspace, CVS may introduce a text based conflict markup into the file. This markup is typically hard to deal with so merging directly into the workspace should only be done when necessary.

Merge actions

The actions in the merge editor complement the manual merge toolbar actions that are available in the bottom half of the merge editor.

Merge

Running this action will bring the changes into the file in the workspace. Any conflicts that are not auto-mergeable will be skipped.

Override and Update

This action is enabled on files with conflicting changes. Running this action will discard any local changes you have and replace the file with the remote contents.

Mark as Merged

This action will remove the selected changes from the view. The changes will only reappear if the remote state of the resource changes and the CVS Merge Synchronization is refreshed.

Tip: You can perform ongoing merges by pinning a CVS Merge Synchronization in the Synchronize view. This will allow you to keep your workspace up-to-date with the changes released to a different branch.