GIT Multi-Branch Synchronization Support
CA Harvest 14.0.1 provides the capability of synchronizing all GIT branches into Harvest (formerly only supported on
masterbranch). Developers can now synchronize their private branch changes with Harvest and have Harvest versions created for the same.
- Eliminates the need to merge developer changes to ‘master’ branch before performing a “Push with Harvest-Version-Sync”. For more information, see Use GIT Front-End with Harvest.
- Advanced access control. Administrators can now control which user groups can access a particular branch in a Git project.
- Better visualization of GIT branch topology in Harvest Workbench. For more information, see Exploring GIT Projects Using Workbench.
- Improved GIT packages naming convention.
Exploring GIT Projects Using Workbench or Eclipse or Visual Studio
All branches in a GIT repository are shown like regular folders in Workbench/Eclipse/Visual Studio explorer view, under the repository folder. Expand a branch folder to see the actual content on that particular branch. The following diagram depicts how a GIT repository with multiple GIT branches looks like when expanded.
Developer: Synchronizing private branches to Harvest
You can now push your private branch changes to harvest and have Harvest versions created for the same. Perform the following steps:
- Clone the GIT repository you want to work on. For more information, see Use GIT Front-End with Harvest.
- Create a private branch in GIT.
- Work on your private branch.
- Perform GIT push / GIT harvest-commit action to synchronize your changes
Each time you push changes to Harvest, a new change package with the branch name prefix will be created to save your changes on Harvest. The branch name prefix helps you identify all packages pertaining to a particular GIT branch.
For the very first time, when you push a new GIT branch to Harvest, an additional package with “GIT BRANCH –“ prefix followed by branch name will be created. This package contains all the changes needed on Harvest for branch creation.
The following diagram illustrates the above two situations
- Always create a dummy commit on the new private branch (soon after its creation) and perform a push to Harvest before you start working on it. This helps to segregate your change versions effectively.
- Create a package group for every GIT branch and add all the Harvest packages created for that GIT branch to it. This helps identify all related changes of branches that needs to be grouped and promoted to the next state in a single step.
Administrator: Controlling access to GIT Branches
Administrators can now control as to which user groups can access a particular branch in a GIT repository. Perform the following steps:
- Click the Repositories tab of Administrator application.
- Locate the GIT repository (on which you want to exercise access control) and expand it. Immediately under the repository, you will find all the branches in the repository listed like normal folders.
- Right-click the branch for which you need to modify/control the access and select Properties from the menu.
- Go to the access tab and provide access like how it's provided for a typical folder in a Harvest repository.
If you already have GIT projects created using Harvest SCM V14.0 and if you would like to continue development on these using CA Harvest SM V14.0.1, reach out to Broadcom support to help you upgrade your projects.
Consider the following limitations:
- Only GIT projects with master branch can be loaded at the time of Git Repository load (during the repository load step). Other branches (that may exist in the GIT repository during the repository load step) will be created in Harvest, but cannot be synchronized later. However, after cloning the repository from Harvest, developers can create new branches and synchronize these branches to Harvest.
- Non-master branches that may exist at the time of repository load cannot be synchronized, whereas branches created after clone from Harvest can be synchronized.
- A GIT branch once created in Harvest cannot be deleted. You can still go ahead and delete the branch in your GIT repository, but the same will not be synchronized and the old branch folders will exist in Harvest. Similar behavior is also noticed while renaming a branch.
- Only one GIT branch can be synchronized to Harvest at a time. In other words, you cannot do “git push origin --all” operation.
- A GIT branch with forward slash (‘/’) character in its name cannot be synchronized to Harvest.