git cherry-pick <sha-of-4.0-commit>
ant realclean && ant jar # rebuild to make sure code compiles
Commits applicable to multiple versions are atomically pushed forward merges.
The fix lands on the oldest release branch and is then forward-merges it into each newer branch using an ours merge to record branch lineage and amends that merge commit to include the branch-appropriate patch.
This keeps a clean, traceable history and a single logical unit of work per ticket per branch, while preventing unintended diffs from being pulled forward automatically.
How to commit and merging git-based contributions.
For example, a hypothetical CASSANDRA-12345 ticket is a bug fix that requires different code for cassandra-4.0, cassandra-4.1, cassandra-5.0 and trunk. The contributor supplied git fork+branches 12345/4.0, 12345/4.1, 12345/5.0 and 12345/trunk.
git cherry-pick <sha-of-4.0-commit>
ant realclean && ant jar # rebuild to make sure code compiles
git merge cassandra-4.0 -s ours --log
git cherry-pick -n <sha-of-4.1-commit>
ant realclean && ant jar # rebuild to make sure code compiles
git commit --amend # this will squash the 4.1 applied patch into the forward merge commit
git merge cassandra-4.1 -s ours --log
git cherry-pick -n <sha-of-5.0-commit>
ant realclean && ant jar check # rebuild to make sure code compiles
git commit --amend # this will squash the 5.0 applied patch into the forward merge commit
git merge cassandra-5.0 -s ours --log
git cherry-pick -n <sha-of-trunk-commit>
ant realclean && ant jar check # rebuild to make sure code compiles
git commit --amend # this will squash the trunk applied patch into the forward merge commit
git push origin cassandra-4.0 cassandra-4.1 cassandra-5.0 trunk --atomic -n # dryrun check
git push origin cassandra-4.0 cassandra-4.1 cassandra-5.0 trunk --atomic
If the patch is for an older branch, and doesn’t impact later branches (such as trunk), we still need to merge up and atomic push.
git cherry-pick <sha-of-4.0-commit>
ant realclean && ant jar # rebuild to make sure code compiles
git merge cassandra-4.0 -s ours --log
ant realclean && ant jar # rebuild to make sure code compiles
git merge cassandra-4.1 -s ours --log
ant realclean && ant jar check # rebuild to make sure code compiles
git merge cassandra-5.0 -s ours --log
ant realclean && ant jar check # rebuild to make sure code compiles
git push origin cassandra-4.0 cassandra-4.1 cassandra-5.0 trunk --atomic -n # dryrun check
git push origin cassandra-4.0 cassandra-4.1 cassandra-5.0 trunk --atomic
How to commit and merging patch-based contributions.
For example, a hypothetical CASSANDRA-12345 ticket is a bug fix that requires different code for cassandra-4.0, cassandra-4.1, cassandra-5.0 and trunk. The contributor supplied provided the patch for the root branch 12345-4.0.patch, and patches for the remaining branches 12345-4.1.patch, 12345-5.0.patch and 12345-trunk.patch.
git am -3 12345-4.0.patch
ant realclean && ant jar # rebuild to make sure code compiles
git commit --amend # Notice this will squash the 4.0 applied patch into the forward merge commit
git merge cassandra-4.0 -s ours --log
git apply -3 12345-4.1.patch
ant realclean && ant jar # rebuild to make sure code compiles
git commit --amend # this will squash the 4.1 applied patch into the forward merge commit
git merge cassandra-4.1 -s ours --log
git apply -3 12345-5.0.patch
ant realclean && ant jar check # rebuild to make sure code compiles
git commit --amend # this will squash the 4.1 applied patch into the forward merge commit
git merge cassandra-5.0 -s ours --log
git apply -3 12345-trunk.patch
ant realclean && ant jar check # rebuild to make sure code compiles
git commit --amend # this will squash the trunk applied patch into the forward merge commit
git push origin cassandra-4.0 cassandra-4.1 cassandra-5.0 trunk --atomic -n # dryrun check
git push origin cassandra-4.0 cassandra-4.1 cassandra-5.0 trunk --atomic
|
Tip
The commit message is to be in the format:
This format is used by the contribulyze pages. |
|
Tip
Notes on git flags:
|
|
Tip
The fastest way to get a patch from someone’s commit in a branch on GH -
if you don’t have their repo in remotes - is to append .patch to the
commit url, e.g. |
|
Tip
|