Layered subversion
Current version: 0.3
This is a small utility called 'laysvn', which uses multiple layers
of subversion to generate one working directory.
It's still very very basic, all it does for now is an "update"
Setup
Create two directories. One for the real svn checkouts (I called
it 'storage', you can place it anywhere, and one directory for your working
copy.
Inside the working copy directory, create a dir named .laysvn, in there
make a new file called
laysvn.xml with contents
following this schema:
<config title="LaySVN test">
<storage path="/path/to/where/your/storage/dir/is" />
<layer id="base" source="http://subversionserver/repository/layers/base" />
<layer id="dns" source="http://subversionserver/repository/layers/dns" />
<layer id="apache" source="http://subversionserver/repository/layers/apache" />
<layer id="hostname" source="http://subversionserver/repository/layers/hostname" />
</config>
Now you can run laysvn in this directory, it will checkout your layers,
and then copy the files from the layers into your working dir!
To check in your changes, you have to chdir to your storage/layer
directory and run 'svn ci' there. This is also where you can resolve
conflicts.
Command line syntax
Just four commands, no options available currently:
- explain: this will list the layers you have configured
- update: this will copy your changes to your local repository, then update
all the layers, then copy back the files to your working copy
- up-rep: update the repository only
- status: copy your changes to your local repository, then inquire status
(note that this will restore deleted files from your local repository)
- diff: this will diff the file with the reference. Calling this function
with multiple files is okay - dirs is not.
- revert: revert a file to its reference layer. Calling this function for
multiple files is okay - behaviour for dirs is undefined.