Development/Backporting

Backporting Changes

Bug fixes are typically cherry-picked from the development branch to each stable branch. Backporting can be done a number of ways.

Using Your Web Browser

If you have an account on Wireshark's code review system the easiest way by far to backport a change is to click the "Cherry Pick" button in the web interface and enter the destination branch (e.g. "master-2.0").

If cherry-picking didn't work (due to a merge conflict) or the change doesn't exist (because it predates our migration to Git) you will have to backport the change manually.

Using Git

If you want to propose a change for backporting, please cherry pick it and push it to HEAD:refs/for/master-1.10 or HEAD:refs/for/master-1.8 via Git at https://code.wireshark.org/review. For example, to cherry-pick from master (SVN trunk) to master-1.10 (SVN trunk-1.10) you would do the following. We're assuming you have already cloned the Wireshark git repository and are in your local copy.

If you haven't created a local branch for the previous release you're going to back port to, you should do that first as follows:

# start from master branch
$ git checkout master

# the first time, create a local branch off of master, based on the tag
# name of the version you want to back-port to (using wireshark-1.12 in this example):
$ git checkout -b master-1.12 origin/master-1.12

# once you've done the above once, next time do this to check out this version branch:
$ git checkout master-1.12

Note that what the above "checkout -b" line does is create a local branch off of master called master-1.12. When you back-port to release 1.12, you'll be creating a branch off of the master-1.12 branch; when back-porting to release 1.10, you'll create a branch off of a master-1.10 branch; and so on.

Once you're in master-1.12, do the following:

# Find a commit from the master branch...
$ git log origin/master

# ...or find it using its SVN revision
$ git log --grep revision=45678 origin/master

# create a branch named "backport-r45678", off of your master-1.12
$ git checkout -b backport-r45678

# Pull in the change from master. Use "-x" to add a "cherry picked from" message.
$ git cherry-pick -x b88ff840a31

If you encounter merge errors, see Development/SubmittingPatches for information on what to do. Note that you will have to amend your commit after fixing any errors.

If your editor opens a commit message page to edit for this, do not delete the existing Change-ID and Reviewer information. Keep that, but delete any Conflicts: lines, including the Conflicts: line itself. Once everything is ready you can upload your change to the server:

# Upload the change to Gerrit using the git-review script...
$ git review -f

# ...or uploading it using Git
$ git push origin HEAD:refs/for/master-1.12/backport-r45678

At this point Gerrit might complain about a missing Change ID. You can run

git commit --amend

Add the same Change-ID as the original change you're backporting. Gerrit will know this is a new change and create a new review, because it's off of a different branch, but by keeping the same Change-ID gerrit shows it as part of the same change history.

# upload the change for review
$ git push origin HEAD:refs/for/master-1.12/backport-r45678

To permanently avoid having to manually add the Change-ID, see gerrit change-ids.

At some future time after your pushed commit has been put into master-1.12 on wireshark.org, you can go back to your local master-1.12 branch, pull down from wireshark.org, rebase your backport branch, and then delete it. Note that git-review -f does this for you automatically.


Imported from https://wiki.wireshark.org/Development/Backporting on 2020-08-11 23:12:39 UTC