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.
  1. Create a new directory to store your changes somewhere where it will be backed up. This directory will contain your sparse tree.
  2. Create a symbolic link called .growtreecontrol pointing at your new directory, in the root of the build tree
  3. 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.


Comments to Dickon@sourceforge.net, Hosted by