DONE
Well, kinda done. The
restructure branch is live under MovingBlocks based on the HEAD multiplayer commit
It
builds in Jenkins and works. Mostly, anyway - it gets shipped with just BlockNetwork and Signalling right now, as I haven't made Jenkins jobs for the others yet, and due to a
versioning quirk an older binary of Signalling is used that still asks for BlockNetwork 1.0.0+ while the shipped BlockNetwork has been set to 0.1.0. So you get to see the shiny version incompatibility error!
I haven't overwritten develop yet (crappy internet gave me a way late start again tonight) but this branch should be suitable for everybody to use for future development. When develop is updated pushing to there instead is trivial. In theory you could pull the restructure branch into a multiplayer workspace, it should be a fast-forward merge, but it is likely to clash if you have any changes in said workspace since src moves to engine/src. Doing that inside IntelliJ may also cause fisticuffs due to modules appearing/moving around/disappearing while IntelliJ tries to keep on top of things.
Probably safest to just clone into a new directory and go from there. gradlew fetchModule[name] should work for everything in the
Terasology organization (
better name?) but there are only builds & binaries for BlockNetwork and Signalling. You do not need anything other than "gradlew idea" or any one other task to get started, nothing mandatory to fetch.
I updated my
handy dandy restructure issue tracker with what's left, goal is to finish off the
First Unstable milestone along with the develop overwrite and the
First Stable by when this code goes to the master branch. Feedback appreciated.
Pinging people that may have pending changes - if you submit them to multiplayer you'll make
Gooey cry if I need to reapply the restructure again (I'm getting to where I can do that in my sleep though!) or you can do that and copy-paste them over at your convenience. There is effectively no functional changes between the multiplayer and restructure branches, only structural changes.
begla Immortius Skaldarnar x3ro socram8888 Jtsessions glasz nh_99
More Jenkins magic tomorrow and a news post then or closer to weekend with MOAR LINKS
Here's the step-by-step restructure for anybody nerdy enough to be interested (it was essentially done twice with the extraction skipped for round two):
1. Make new workspace with fresh clone, add and checkout target branch (multiplayer)
1. Mkdir
3. cd Terasology
4. git checkout -b multiplayer remotes/origin/multiplayer
5. git branch restructure
6. git checkout restructure
2. Move applet class
* mkdir target dir in command below
* git mv src/main/java/org/terasology/engine/TerasologyApplet.java applet/src/main/java/org/terasology/engine/TerasologyApplet.java
3. Move main PC class and create facades
* mkdir facades/PC/src/main/...etc
* git mv src/main/java/org/terasology/engine/Terasology.java facades/PC/src/main/java/org/terasology/engine/Terasology.java
* git mv launchScripts facades/PC/launchScripts
4. git mv src/template/VERSION templates/VERSION
5. Move Core module
1. mkdir modules
2. git mv mods/core modules/Core
6. Commit checkpoint
7. Extract blockNetwork module
* Make a copy of the Terasology workspace (might not be needed with some Git magic, but it is easy!)
* git filter-branch --prune-empty --subdirectory-filter mods/blockNetwork restructure
* cd ..
* mkdir BlockNetwork (note capitalization change)
* cd BlockNetwork
* git init
* git pull file://E:/Dev/Terasology/Git/MultiRestruct/FinalDraft/TerasologyExtract
* Create actual repo "BlockNetwork " under "Terasology" org
* git push -u origin master
8. Extract signalling module
* git filter-branch --prune-empty --subdirectory-filter mods/signalling restructure
* etc ...
9. Extract more modules
* git filter-branch --prune-empty --subdirectory-filter mods/... restructure
* etc ...
10. Extract Applet
* git filter-branch --prune-empty --subdirectory-filter applet restructure
* cd ..
* mkdir FacadeApplet (to rename away from plain "applet")
* etc ...
11. Delete all the extracted stuff
* git rm -r mods
* git rm -r applet
* git rm -r rawAssets
* git rm -r blender_addons
12. Commit checkpoint
13. Move src into engine/src
1. mkdir engine
2. git mv src engine/src (had to close ALL IntelliJs and/or Explorer instances)
3. Also include the old root "libs" (contains tera-ovr.jar in multiplayer - should put into Artifactory later)
4. git mv libs engine/libs
14. Commit checkpoint
15. Update Gradle Wrapper files (from first restructure effort)
1. Simply copy existing files at gradle/wrapper and the root dir gradlew + gradlew.bat from latest restructure test to new dir
16. Commit checkpoint
17. Copy in Gradle build scripts (from first restructure effort) + updated templates
* engine/build.gradle, facades/PC/build.gradle, the subprojects.gradle for facades and modules
* build.gradle for modules/Core (from templates/modules.gradle)
* ide.gradle, modules.gradle, settings.gradle (overwrite), utility.gradle
* Also copy in updated .gitignore and fletch together any diffs if necessary
* build.gradle (overwrite) - extensive changes first few times, but less each time
* new templates directory
18. Set IntelliJ back up and make sure all looks well
1. gradlew idea
19. Adjust some Gradle stuff (and related) for the restructure:
1. We don't use codenarc (that's Groovy), but did introduce PMD - update the config dir from latest restructure draft
2. Libs may have changed in the main build.gradle, should check and update the engine's build.gradle (new home for primary libs)
20. Commit checkpoint (won't necessarily compile or run at this point)
21. Tweak actual code needs for the restructure
1. ExtensionModule needs "classes" to "build/classes"
2. PathManager needs a few tweaks for pathing, compare to latest restructure
22. Commit checkpoint (game should find and be able to run with the Core module now)
23. Test fetching modules back into the main workspace and do some related restructure tweaks
1. Add .gitignore files to existing modules
2. Update capitalization
3. Drop all versions to 0.1.0 (eventually will upgrade via Jenkins promotion)
4. Adjust Signalling's dependency on BlockNetwork (case fix and version tweak)
24. Checkpoint commit - and done!