Let’s asume you have a repo containing an external SW. (forked repo or specific version)
Branches | Commits
--------------|---------------
master | last_for_v1.0
| (Tag: v1.0)
For a proper usage in your project you possibly have to implement/apply some patches.
Branches | Commits
--------------|---------------------------
master | last_for_v1.0
| (Tag: v1.0)
| ↓
v1.0_patched | patch_1 --> patch_2
| (Tag: v1.0p)
After updating to a newer version you most likely have to apply your patches again.
Branches | Commits
--------------|------------------------------------------------
master | last_for_v1.0 -..-> last_for_v2.0
| (Tag: v1.0) (Tag: v2.0)
| ↓ |
v1.0_patched | patch_1 --> patch_2 |
| (Tag: v1.0p) |
| ↓
v2.0_patched | patch_1 --> patch_2
| (Tag: v2.0p)
$ git checkout v2.0 $ git checkout -b v2.0_patched $ git cherry-pick $(git merge-base master v1.0_patched)..v1.0_patched