Map Merger: различия между версиями
imported>SpaceManiac (Add merge driver instructions) |
imported>San7890 (Adds link to the Guide to Mapping for Git Hooks.) |
||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 3: | Строка 3: | ||
/tg/station uses a tool called the '''Map Merger''' to make map changes easier for maintainers to review and less likely to conflict with map changes made by others. | /tg/station uses a tool called the '''Map Merger''' to make map changes easier for maintainers to review and less likely to conflict with map changes made by others. | ||
There are a few ways of running the tool. If you have trouble or need help, ask in [[Community|#coderbus]]. | There are a few ways of running the tool. If you have trouble or need help, ask in [[Community|#coderbus]]. You may find a visual guide [https://hackmd.io/@tgstation/SyVma0dS5#Git-Hooks here]. | ||
'''Summary''': for best results, open the <code>tools/hooks/</code> folder and double-click <code>Install.bat</code> to install the hooks, which will handle things automatically. | '''Summary''': for best results, open the <code>tools/hooks/</code> folder and double-click <code>Install.bat</code> to install the hooks, which will handle things automatically. | ||
Строка 56: | Строка 56: | ||
#* Linux users: run <code>tools/hooks/dmm.merge --posthoc</code> | #* Linux users: run <code>tools/hooks/dmm.merge --posthoc</code> | ||
Note that to use this, you must merge your updated local master branch into the branch with conflicts so that your Git GUI reports a conflict on the map file. | |||
== Implementation details == | == Implementation details == | ||
Текущая версия от 06:46, 25 июля 2022
/tg/station uses a tool called the Map Merger to make map changes easier for maintainers to review and less likely to conflict with map changes made by others.
There are a few ways of running the tool. If you have trouble or need help, ask in #coderbus. You may find a visual guide here.
Summary: for best results, open the tools/hooks/
folder and double-click Install.bat
to install the hooks, which will handle things automatically.
TGM format conversion[править | править код]
The "map merge" operation describes the process of converting a map file written by the DreamMaker map editor to:
- Use a format more amenable to Git's conflict resolution, called "TGM" and originally developed by Remie. The TGM map format is like the standard Dream Maker map format, but arranged differently, meaning Dream Maker is able to open TGM maps.
- Keep the size of the difference between the old version and the new version of the map as small as possible.
This is accomplished by referencing the changed version of the map against the old version stored in the Git history.
Use as a Git hook (recommended)[править | править код]
- Install the hook: Open the
tools/hooks/
folder and double-clickInstall.bat
- Linux users: run
tools/hooks/install.sh
- Linux users: run
Once complete, the map merger will run automatically every time you commit in Git. The console log can be reviewed if there are any errors.
Or: Run manually before committing[править | править код]
You can also manually run a .bat file just before each time you commit:
- Ensure you have saved all your changes
- Open the
tools/mapmerge2/
folder and double-clickRun Before Committing.bat
- Commit
If you forgot to map merge[править | править код]
For first-time contributors who committed map edits without map merging, a script is available to automatically commit a fix to your PR branch:
- Ensure you have no unsaved changes
- Open the
tools/mapmerge2/
folder and double-clickI Forgot To Map Merge.bat
- Push your branch
Automatic conflict resolver[править | править код]
We also have a rudimentary conflict resolver to cover some cases that the TGM conversion couldn't prevent.
When run, the console output will indicate whether further manual action is needed, including conflicting coordinates.
Use as a Git hook[править | править код]
- Install the hook: Open the
tools/hooks/
folder and double-clickInstall.bat
- Linux users: run
tools/hooks/install.sh
- Linux users: run
Once complete, the conflict resolver will run automatically every time you merge in Git.
Or: Resolve conflicts on an in-progress merge[править | править код]
If you are using a Git GUI which does not run the hook on merge, you can also run the conflict resolver on an in-progress merge by request:
- Open the
tools/mapmerge2/
folder and double-clickResolve Map Conflicts.bat
- Linux users: run
tools/hooks/dmm.merge --posthoc
- Linux users: run
Note that to use this, you must merge your updated local master branch into the branch with conflicts so that your Git GUI reports a conflict on the map file.
Implementation details[править | править код]
Information on the tool's implementation is stored with the code.