This project is a fork of the Eigen3 source hosted at https:///github.com/albarji/proxTV.
This fork contains changes required for ITKTotalVariation to work with ITK.
Upstream proxTX appears to not currently be maintianed.
Each branch is namged with the following pattern for/itk-proxTV-X-SHA{7}
where:
Xis the upstream version of the forked project- SHA{7}
Additional documentation on developing ITK see: https://docs.itk.org/en/latest/contributing/index.html
1. Clone (or reuse) the fork and ensure the tree is clean:
git clone git@github.com:InsightSoftwareConsortium/proxTV.git
cd eigen
2. Wire remotes:
git remote add upstream https://github.com/albarji/proxTV.git
3. Fetch:
git fetch origin
git fetch upstream
- Fetch the new upstream Eigen release tag and define workflow variables:
# Set the upstream proxTV release tag to update to (e.g. 3.3.0)
ITK_PROXTV_TARGET_TAG=3.3.0
git fetch upstream refs/tags/${ITK_PROXTV_TARGET_TAG}:refs/tags/${ITK_PROXTV_TARGET_TAG}
XYZ="3.3.0"
echo "XYZ [${XYZ}]"
SHA=$(git rev-parse --short refs/tags/${ITK_PROXTV_TARGET_TAG})
echo "SHA [${SHA}]"
NEW_BRANCH="for/itk-proxtx-${XYZ}-${SHA}"
echo "NEW_BRANCH [${NEW_BRANCH}]"
- Fetch the prior fork branch and inspect overlay commits to replay:
git fetch upstream
git fetch origin ${ITK_CURRENT_BRANCH}:${ITK_CURRENT_BRANCH}
git log --oneline upstream/master..${ITK_CURRENT_BRANCH}
- Determine the base commit where the ITK overlay patches begin, then branch and rebase onto the new upstream release (resolve conflicts as needed):
# Find the commit where ITK_CURRENT_BRANCH diverged from upstream.
# Using upstream/master directly as the rebase base is unreliable because
# upstream/master may have advanced since ITK_CURRENT_BRANCH was created.
REBASE_BASE=$(git merge-base ${ITK_CURRENT_BRANCH} upstream/master)
echo "REBASE_BASE [${REBASE_BASE}]"
git checkout -b ${NEW_BRANCH} ${ITK_CURRENT_BRANCH}
git rebase --onto refs/tags/${ITK_PROXTV_TARGET_TAG} ${REBASE_BASE} ${NEW_BRANCH}
If the rebase encounters conflicts that are difficult to resolve, abort it and cherry-pick the overlay commits individually instead:
git rebase --abort
# List the overlay commits (newest first) from the log output in step 5
# and cherry-pick them oldest-first onto the new base:
git checkout -b ${NEW_BRANCH} refs/tags/${ITK_PROXTV_TARGET_TAG}
git cherry-pick <oldest-overlay-sha> ... <newest-overlay-sha>
- Verify:
git log --oneline refs/tags/${ITK_PROXTV_TARGET_TAG}..HEAD
git diff --stat refs/tags/${ITK_PROXTV_TARGET_TAG}..HEAD
- Publish the branch:
git push origin ${NEW_BRANCH}:${NEW_BRANCH}