- Learned more about Symfony
- Built something using Symfony
- Learned more about Subversion
- Reconstructed / rebuilt a Subversion Repository
- Played (I mean tested) some games
- Data extraction
Symfony: Symfony documentation talks about defining database schema using YAML. Symfony uses the YAML definition (stored in /config/schema.yml) to generate data models, filter, forms, and modules. If you don't want to learn 'Yet Another Markup Language', you can define the database schema using the database of choice and then use Symfony reverse engineer the database into YAML. Though, I found a problem with this process (Symfony with Propel). ENUM data type was lost. Meaning, it does not generate the enumerated values defined in the database and it translated ENUM to CHAR.
$ php lib/vendor/symfony/data/bin/symfony propel:build-schema
The above command will reverse engineer all tables in the database.
Subversion: Apparently Subversion embeds the repository's URL in a file called entries (inside a hidden folder called .svn). If the repository has to be rebuilt from production source code (.svn folders must be in production as well) for whatever reason, it could difficult under the following conditions:
- Production source code was copied from Working Copy that was checked out with URL of localhost
- No access to original Working Copy's computer
The process I used to rebuild the repository was as follow:
- Copy production source code to a local computer (because Subversion information is in the production source code, this copy becomes a Working Copy
- Because Subversion information on the repository is based off localhost, I need to trick my local computer to think localhost as the Subversion repository on the server
- To do this, modify the local computer's hosts file
- comment out: 127.0.0.1 localhost
- add: 999.999.999.999 localhost
- Using an Subversion client (I used NetBeans IDE (Integrated Development Environment)) push the production source code to the repository (use the Update command) — may have to Merge changes (always accept local changes)
NetBeans: NetBeans IDE is not bad. Downloading the package was a lot less complicated than Eclipse (didn't have to deal with different package versions (for Java, PHP, JavaScript, etc.)). Setting up the project was a bit confusing for a new user. Subversion integration is good (though the setup isn't as straight forward). Contextual menu made it easy to check for changes or committing changes. The comparison functionality is user friendly.