logic and markup code are expected to be edited in a textarea and saved to the database.
I'm not sure I'd say "expected" - that's the default behavior and probably the simplest workflow for everyday changes but it's certainly not the only option.
For minor revisions, I find that editing code directly in the database and using VersionX for version control is adequate.
For more extensive changes, I would recommend developing on a separate install and using transport packages for versioning and transport from dev to production. I gave a talk on this at a user group meeting in Denver, the slides are here:
http://prezi.com/0nxhc5xefz_m/staging-from-development-to-production-in-modx-revolution/.
For most purposes, the PackMan extra works well for building transport packages from objects in the database, or if you prefer to develop in files, Bob's myComponent extra is a good solution for easily building your transport package.
For your setup, I would recommend installing myComponent on a development server. Add all of the elements you need, including copies of the Articles templates and whatever you've developed already, to your myComponent configuration. All of these elements would then be stored as files in one directory on your dev server, so you can make that a git repo. Develop the files however you like, and when you're ready to go live with them use myComponent to build a transport package to install onto the live server. This is admittedly some extra effort up front to set up, but it should give you the kind of version control you want.