For the case of Github, I think one file per one program/class would be the better approach.

You can use Atelier, like [@Amir Samary] mentioned. And in case you have no Atelier I can recommend also this very simple util: cache-udl

Setup the folder with:

d ##class(sc.code).workdir("your/workdir")

And export everything in a namespace with:

d ##class(sc.code).export()

For import use:

d ##class(sc.code).import()

to import all, or:

d ##class(sc.code).importUpdated()

for the recently updated files.

And yes, it exports in UDL. I think for Github UDL is more suitable. 

May I ask you, why do you need XML for your code files?