Browse Prior Art Database

The Clonetree Tool

IP.com Disclosure Number: IPCOM000118240D
Original Publication Date: 1996-Nov-01
Included in the Prior Art Database: 2005-Apr-01
Document File: 4 page(s) / 110K

Publishing Venue

IBM

Related People

Alexander, G: AUTHOR [+2]

Abstract

During the development of software, it is helpful to be able to establish a promotion scheme by enabling access to files by "layers". For example, in Virtual Machine (VM), the layers are analogous to the minidisks which are accessed in alphabetic order. To change the order of the layers, change the order of the minidisks. The file accessed by name would be the one closest to the topmost layer. Similarly, Multiple Virtual Storage (MVS) partitioned dataset concatenations provide the same kind of accessibility. If the order of the Partitioned Data Sets (PDSs) in the concatenation is changed, the search order for a particular file will be changed.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 47% of the total text.

The Clonetree Tool

      During the development of software, it is helpful to be
able to establish a promotion scheme by enabling access to files by
"layers".  For example, in Virtual Machine (VM), the layers are
analogous to the minidisks which are accessed in alphabetic order.
To change the order of the layers, change the order of the minidisks.
The file accessed by name would be the one closest to the topmost
layer.  Similarly, Multiple Virtual Storage (MVS) partitioned dataset
concatenations provide the same kind of accessibility.  If the order
of the Partitioned Data Sets (PDSs) in the concatenation is changed,
the search order for a particular file will be changed.  This is
especially helpful during the compilation process, making sure one is
"backing" his current layer in development by the layers he expects
and being able to change those layers as other development is
progressing.  For UNIX* based software development, no such obvious
layering scheme exists - until now.

      Layering of files for a search order can be accomplished in
UNIX by using the clonetree concept.  The clonetree tool manages
creating a symbolic link in the linked directory for each file in the
target directory, unless the file already exists in the linked
directory.  So, if one had the following directory structure of files
with changes:
        spa_sw
        \
         pol
            \
            poller.cpp

And to compile this changed file, more files were needed, the
following directory structure could be made available to the user
with clonetree:
                 spa_sw
            /       \
         include     pol
          /            \
   poller.hpp(l)       poller.cpp
   consts.hpp(l)       Makefile(l)

The "(l)" indicates that the file is really a directory entry, with
a symbolic link to another directory entry in another file system.
By having the link however, the contents of the file can be accessed
as if it were local to the current directory.  So, the compile can be
run in the local directory with no concern about making real local
copies of  all the necessary ancillary files to make the compile
work.  This also  allows the linked file to automatically shadow any
changes made to the real file to which it is linked - with no effort
on the linker's part.  These are all inherent benefits of using
symbolic links as supported by UNIX.

The benefits of using the clonetree tool to manage the links include:
  o  One does not have to do the link commands by hand,
      remembering which files really exist in the local
      directory and which ones must be symbolically linked
      to make the build process work.
  o  The tree structure of the directories under the one
      being linked is automatically reproduced, so one does
      not have to manually duplicate the tree structur...