Dual-repo sync for hamsterball-re - public (no binaries) and private (with binaries). Push workflow, binary purging, and remote management.
origin): https://github.com/evangit2/hamsterball-re.git — NO copyrighted binaries (exe, dll, zip, installer)priv): https://github.com/evangit2/hamsterball-re-priv.git — EVERYTHING including binaries and buildsThe .gitignore in the public repo MUST always exclude:
originals/installed/extracted/Hamsterball.exeoriginals/installed/extracted/bass.dlloriginals/installed/extracted/unins000.exeoriginals/installed/extracted/unins000.datoriginals/installed/extracted/Music/Music.mo3originals/installed/Hamsterball.ziporiginals/installer/original/hamsterball.zipreleases/ (built exe)Game ASSETS (levels, textures, sounds, meshes, XML, fonts) are OK in the public repo.
cd ~/hamsterball-re
git add -A
git commit -m "descriptive message"
git push origin master
git push priv master
cd ~/hamsterball-re
# Force-add the gitignored binaries temporarily
git add -f originals/installed/extracted/Hamsterball.exe \
originals/installed/extracted/bass.dll \
originals/installed/extracted/unins000.exe \
originals/installed/extracted/unins000.dat \
originals/installed/extracted/Music/Music.mo3 \
originals/installed/Hamsterball.zip \
originals/installer/setup_hamsterball.exe \
originals/installer/share_download.zip \
original/hamsterball.zip \
releases/
git commit -m "private: add binaries/builds"
# Push to PRIVATE ONLY
git push priv master
# Now RESET master back to public-only commit (without binaries)
git reset --hard HEAD~1
# Verify public remote is clean
git push origin master # should be up-to-date
cd ~/hamsterball-re/reimpl
bash build/build_win64.sh
# Output: build-win64/hamsterball.exe (~15MB static PE32+)
# For private repo, force-add the built exe:
git add -f reimpl/build-win64/hamsterball.exe
git commit -m "private: Windows exe build"
git push priv master
git reset --hard HEAD~1
The reimpl/build-win64/ directory should also contain game asset subdirs
(Levels/, Textures/, Sounds/, Meshes/, Fonts/, Data/) copied from
originals/installed/extracted/ for Wine testing.
If copyrighted binaries ever end up in public repo history:
pip3 install --user --break-system-packages git-filter-repo
export PATH=$PATH:~/.local/bin
# Create purge_paths.txt with one path per line:
# originals/installed/extracted/Hamsterball.exe
# originals/installed/extracted/bass.dll
# ... etc
git filter-repo --invert-paths --paths-from-file purge_paths.txt --force
# This rewrites ALL history - force push required:
git push --force origin master
origin https://github.com/evangit2/hamsterball-re.git (PUBLIC)
priv https://github.com/evangit2/hamsterball-re-priv.git (PRIVATE)
origin (public)origin AND priv for normal code/docspriv → git reset --hard HEAD~1 → continuegit filter-repo, remotes are removed — re-add with git remote addmaster (not main) — filter-repo may reset it38:["$","$L3e",null,{"content":"$3f","frontMatter":{"name":"hamsterball-git-sync","description":"Dual-repo sync for hamsterball-re - public (no binaries) and private (with binaries). Push workflow, binary purging, and remote management."}}]