Releases
Versions currently supported, dependencies, and release notes for the CHT Core Framework
Instructions for updating medic/pyxform to new XLSForm/pyxform releases
The medic/pyxform
repository is a fork of XLSForm/pyxform
with custom modifications for the CHT. This page documents the process for updating medic/pyxform
to a new upstream release from XLSForm/pyxform
, ensuring the custom changes are preserved and the process is replicable.
medic/master
branch contains the latest tagged code for pyxform-medic, with all custom commits applied on top of the target release from XLSForm/pyxform
.XLSForm/pyxform
, a maintainer should create a new branch, <target_tag>-rebase
(e.g., v4.0.0-rebase
), from the ref of the target tag on XLSForm/pyxform
and push it to the medic
repository.medic/<target_tag>-rebase
branch. Once merged, force-push the rebase branch to medic/master
.cht-conf
.Clone your fork of medic/pyxform locally:
git clone https://github.com/<github_user>/pyxform.git
cd pyxform
Add remotes:
git remote add xlsform https://github.com/XLSForm/pyxform.git
git remote add medic https://github.com/medic/pyxform.git
Fetch all updates and tags:
git fetch --all --tags
Ensure no uncommitted changes:
git status
Create a new local rebase branch for the target XLSForm tag (e.g., v4.0.0):
git checkout -b <target_tag>-rebase medic/master
Check which custom commits will be rebased:
git log --oneline -7
The oldest commit listed should say “BEGIN DOWNSTREAM CHANGES FOR medic/pyxform”. Newer commits are the custom changes. Make a note of all of these commits for future reference to ensure none are lost in the rebase.
Rebase on top of the target XLSForm tag:
git rebase <target_tag>
Fix any conflicts and verify the commit list:
git log --oneline -7
Push to your fork and open a PR for review:
git push origin HEAD
Open a PR from <github_user>/<target_tag>-rebase
to medic/<target_tag>-rebase
. (Note that a maintainer should create the medic/<target_tag>-rebase
branch from the ref of the target tag on XLSForm/pyxform
.)
Merge the PR: Once approved, the maintainer should merge the PR using the “Rebase Merge” button to keep all individual commits.
Force-push to master: After merging, the maintainer should checkout the merged branch and force-push it to master:
git checkout medic/<target_tag>-rebase
git pull
git push --force-with-lease medic <target_tag>-rebase:master
Tag the release:
git tag -a <target_tag>-medic -m "Release <target_tag>-medic of pyxform-medic"
git push medic <target_tag>-medic
After tagging the new release, update the executable shipped with cht-conf.
Install shiv for creating the zipapp:
pip install shiv
Generate the zipapp:
shiv -e pyxform.xls2xform:main_cli -o xls2xform-medic .
Copy the generated file to cht-conf:
Copy xls2xform-medic
to cht-conf/src/bin
.
Test the new version: Test the new version of pyxform/cht-conf by building both cht-core and cht-config-library with the branch version of cht-conf and make sure everything builds successfully.
This packaged pyxform will be automatically distributed on new versions of cht-conf.
Versions currently supported, dependencies, and release notes for the CHT Core Framework