This is kind of a prototype. It only fully handles a few situations,
and doesn't produce particularly easy-to-read conflict markers when it
fails. I hope that it can be useful at least some of the time, can be
improved over time, and that the lessons learned can influence a future
interactive GUI conflict resolver (integrated into StrongDMM?). In the
worst case, one can fall back to the tried and true "manually re-do one
side's changes" strategy.
**Automatic use**: In `tools/hooks/`, run `Install.bat`
**Manual use**, for Git GUIs that don't run merge drivers: while a
merge is in progress, in `tools/mapmerge2/`, double-click `Resolve Map
Conflicts.bat`
This PR also removes the error-prone "Prepare Maps.bat" /
"mapmerge.bat" workflow. Those who aren't using the hooks should
instead use `Run Before Committing.bat` before committing. First-time
contributors who opened a PR without map merging can be advised to run
`I Forgot To Map Merge.bat`.
* Add tools/bootstrap/python
* Add dependencies.sh entry for Python
* Use bootstrapped Python for HitboxExpander
* Use bootstrapped Python when installing hooks
Also:
- Adds tools/hooks/Uninstall.bat
- Removes the need to re-run Install.bat when a .hook file changes
Python path temporarily includes tools/mapmerge2 as before:
- PYTHONPATH in tools/hooks/python.sh handles Linux/virtualenv
- python36._pth handles Windows portable
* Move DMI merge driver to its own directory
* Use bootstrapped Python for makeChangelog.bat
* Set window title in bootstrap PS scripts
* Use slashes in hook paths
* Use relative imports in mapmerge2
* Use bootstrapped Python for mapmerge
* Update mapmerge2 readme
* Skip non-3way conflicts
* Fix relative path issue in posthoc merger
* Add missing call and %* to .bat files
* When installing hooks, don't uninstall them all first
* Make dependencies.sh POSIX
* Move update_paths.py to its own folder
* Use line buffering for Python stdout/stderr
It was switching to fully-buffered mode due to being piped, meaning we
wouldn't see output until the script ended. This is undesirable.
* Use new path to dmi.test in CI suite
* Validate system Python version in bootstrap script
* Add install advice to bootstrap script
* Update path to requirements.txt in CI
* Add upgrader for existing installations
Key benefits of the new mapmerge include: multi-Z support, effective
reuse of deleted keys, automatic handling of key overflow, and utilizing
a git pre-commit hook to eliminate the need to run batch files manually.