I don’t know why, but somehow I had a great evening yesterday hacking away 6 hours straight. It was very fruitful, though not that much code was written. You could say I followed Trolltechs advertisement of “code less, create more”.
The result of that “little” more code: working support for importing a new project into Subversion or CVS. It was almost too easy to implement. The hardest parts where finding out that for some reason unpacking with KArchive* works fine when you use the “real” target directory, but not so well when you use a KTemDir and getting the import() function in the subversion plugin implemented.
Along the way the VcsMapping and VcsLocation classes got some extensions, mostly what was needed for CVS to work properly with them. That means a repository location consists now of a server string, a module, a branch string a tag and a path. Though anything except the server is allowed to be missing. Its also possible to transport some vcs-specific information, like the Vendor Tag information for CVS import.
IMHO our long discussions about the vcs interfaces really start to pay off, the app wizard has absolutely no idea about how to do the importing, or even get the metadata needed for importing. It also doesn’t know anything about checking out a project from the VCS, except that flipping the source and destination in the mapping for import() and handing that to checkout() will work properly.
I’ll skip the screenshot, its just too simple – combobox for vcs plugin and a few lineedits…