growtree
Manages symbolic links from one directory tree in to another.
Managing build trees with growtree
Suppose you've got a big project build tree. You don't want to back it
all up; you just want to keep your changes because you can always download
or checkout the rest of the code again.
-
Create a new directory to store your changes somewhere where it will be
backed up. This directory will contain your sparse tree.
-
Create a symbolic link called .growtreecontrol
pointing
at your new directory, in the root of the build tree
-
Invoke growtree in any subdirectory
of your build tree, giving it filenames you want backed up so you can safely
edit them. growtree will
automatically create the subdirectory in the sparse tree if necessary,
copy the files you specify there and replace the files in the build tree
with symbolic links.
But what if I want to...
Get rid of all these new symlinks?
Just execute growtree -u
in the build tree to remove the symlinks that growtree has created and
replace them with the original files. You can always run growtree
again on its own to put them back.
Get rid of a particular file that growtree has moved to the sparse tree?
Execute growtree -d [filename]
to move the file back to the build tree, removing the symlink and the file
from the source directory.
Do something completely different with it?
Fine. I'm sure there are other uses for this tool- let me know
if you use it for anything interesting.
Downloading it
Growtree is Open Source, licensed under the Artistic license.
Download growtree-1.0b2.tar.gz
(recommended) or look
at the CVS web interface
Growtree is written in Python;
you'll need that installed. Aside from that, it should work on most Unixes;
it is used regularly on Linux and OSF1.