Subversion Merge Plugin

Skip to end of metadata
Go to start of metadata

This plugin automates feature/personal branch workflow on Jenkins by providing one-click branching/rebasing/integration or automated rebasing/integration.

Plugin Information

Plugin ID svnmerge Changes In Latest Release
Since Latest Release
Latest Release
Latest Release Date
Required Core
Dependencies
2.1
Mar 13, 2014
1.466
subversion (version:2.2)
credentials (version:1.9.4)
scm-api (version:0.2)
ssh-credentials (version:1.6.1)
Source Code
Issue Tracking
Maintainer(s)
GitHub
Open Issues
Hugues Chabot (id: hugueschabot)
Usage Installations 2013-Apr 607
2013-May 635
2013-Jun 634
2013-Jul 654
2013-Aug 673
2013-Sep 699
2013-Oct 731
2013-Nov 736
2013-Dec 732
2014-Jan 808
2014-Feb 814
2014-Mar 847

For general discussion of feature branches in Subversion, see Online subversion book or articles. Feature branches allow developers to commit their changes without worrying too much about regressions, and this Jenkins plugin assists teams to deploy this more easily.

Features

One-click feature branch setup

You can have Jenkins create a branch in Subversion and create a job for it (by copying from the trunk build job) just by one click of a button.

To do this, first enable the feature branch support in the job that currently builds the trunk by clicking "Accept Integration from Subversion feature branches." This creates an action on the left to manage/create new feature branches. From this page, you can create a branch and the job:

Alternatively, you can manually create a branch, create a job, and enable the feature branch support after the fact by clicking "This project builds a Subversion feature branch" and specifying the trunk job.

Integration status visualization

Jobs that build feature branches get two actions on the left. One shows the status of the integration, meaning what changes in the branch has already been integrated into the trunk, the revision number of the integration commit, what trunk CI job has built it, etc.

The up arrow in the build history indicates builds whose output has been integrated upstream.

One-click rebase

The other action in the project top page allows you to manually initiate the "rebase" action, which is a Subversion merge command to pull in the latest changes from the trunk into your feature branch, thereby synchronizing the branch with the trunk.

In addition to rebasing with the tip of the trunk, this UI allows you to pick arbitrary revision to rebase, in terms of the known build — for example, you can rebase with the revision that was resulted in the last stable trunk build, thereby eliminating any risk that you pick up regressions into your branch.

(This also works with the build promotion plugin and others that can define their own permalinks.)

Automatic rebase

Aside from manually performing rebase, you can also make rebase a part of the build. This can ensure that your feature branch always stay close to the trunk, thereby reducing the pain of the merge down the road.

Specifying the build to rebase to is a good way to control the frequency of the rebase. For example, imagine using the build promotion plugin on the trunk, and promote a build as "rebase point" about once a day (contingent on passing QA jobs.) Since the last "rebase point" build would only change about once a day, the automatic rebase would be no-op most of the time but only once a day.

Automatic integration

In addition to initiate integration manually, you can also make Jenkins do integration automatically. This can be used as a publisher, as seen below:

If you enable this in a project, you'll be automatically integrating with every successful build. This is useful for personal branches, where you'll keep on committing to this branch and let Jenkins verify the change before it gets integrated into the trunk.

This feature gets more interesting in combination with the build promotion. You can keep producing CI builds quickly, then use other jobs to verify its quality, and as a promotion action you can make the integration happen. This matches more closely with the typical integration workflow.

Changelog

Version 2.1 (Mar 13, 2014)

  • Fix reintegration issue with HTTP protocol (issue 12495).

Version 2.0.4 (Feb 28, 2014)

Version 1.3 (Feb 21, 2014)

  • Handle feature branches in subfolder (isse 21781).
  • Added possibility to enter a commit message when creating a feature branch (issue 11012).
  • Copy "Local module directory" from upstream project when creating a feature branch (issue 11379).

Version 1.2 (Apr 14, 2012)

Version 1.1 (Oct 1, 2011)

Version 1.0 (Sep 1, 2011)

  • Initial release

Labels

Edit
plugin-scm-related plugin-scm-related Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.

Add Comment