Commit Graph

4 Commits

Author SHA1 Message Date
Tad Hardesty
93f8650d7a Add .dmm merge driver (#55699)
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`.
2021-01-01 17:05:43 -08:00
Tad Hardesty
67b4aa190e Use portable Python for map merge hooks, other tools (#55658)
* 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
2020-12-22 22:22:15 +01:00
Tad Hardesty
28436f36b5 Fix the batch file method of mapmerge2 and save a .before (#34361) 2018-01-12 10:43:06 -05:00
Tad Hardesty
9639061433 Add a new and improved mapmerge (#33869)
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.
2017-12-28 16:01:34 -05:00