This is my first blog post since the GSoC start and I want to write a little bit about the project itself one more time and then also some technical stuff I managed to do so far.
The idea of this project is to avoid to do "dangerous stuff" on the live site, so you will not mess it up. Dangerous stuff can start with a simple 3rd party plugin installation and end with running manual queries from command line or other mysql client programs. So for that case we have a child website, which is the exact copy of the live site, but it has connected to another database and is in another directory. You do dangerous stuff on that child site and then apply made changes to the live site.
The project SVN is located at http://jwcp.googlecode.com and you can subscribe to the project feeds if you want to follow the development process. You will find the beta download there. It is still not documented, but I'm sure you can work with it.
The file system changes part are mostly done, so you can make changes on child files and then see them in the differences list, revert them, make a patch and apply to the master site. If during that time, when you work on child, there are also file changes on the master site, you can use sync tool to update those changed files on your child site. Now the undone part for file system is to find the datetime against which we will compare and find which file has been modified and need to be included in the differences list. For the begining it is the child created date, but after it should somehow move forward. Since unix systems don't keep file creation date, probably I will need to keep somewhere the list of the child files with their create date, I guess now the same does SVN, you will see a lot of .svn directories, it keeps file info in that files.
Database changes are not so easy to get at a first glance, but mysql supports triggers. So when we are creating a child, we also add triggers to the table insert, update, delete actions, so we know which rows are modified, deleted, inserted, but for that the table should have a primary key, now in joomla main structure there are some tables, that don't have primary key, so they will not be included in the revision. In the beta release you will see that database differences list, when you click on differences button on child website. We will need also to find out which tables are created and/or deleted. It is not possible to add triggers on that actions, so we will need to compare the child table list with master table list and show the differences, so the developer will chose whether to include that changes in the patch or not.
That's all need to be done on this project besides documentation, after the API is ready, we will be able to add more cool features easily.