Blob Blame History Raw
<chapter id="intro-repoconvs-syncpaths">

    <title>Syncronizing Paths</title>

    <para>  
        Once both master and auxiliar paths have been set in the
        repository, they shouldn't be changed.  However, assuming you
        need to change them, it is required that you also change the
        relation between them, in order for both master and auxiliar
        paths to retain their relation one another.  This process of
        keeping relation between master and auxiliar paths updated is
        known as <emphasis>path syncronization</emphasis>.
    </para>
    
    <para>
        Path syncronization is required for automation scripts to know
        where to store final output, where to retrive translation, and
        any information that might be desired. If the relation between
        master paths and auxiliar paths is lost, there is no way for
        <command>centos-art.sh</command> script to know where to
        retrive the information it needs to work with.  Path
        syncronization is the way we use to organize and extend the
        information stored in the repository.
    </para>
    
    <para>
        Path syncronization involves both movement of files and
        replacement of content inside files.  Movement of files is
        related to actions like renaming files and directories inside
        the repository.  Replacement of content inside files is
        related to actions like replacing information (e.g., paths
        information) inside files in order to keep file contents and
        file locations consistent one another after the movement.
    </para>

    <para>
        The order followed to syncronize path information is very
        important because the versioned nature of the files we are
        working with. When a renaming action is performed, we avoid
        making replacements inside files first and file movements
        later. This would require two commit actions: one for the
        files' internal changes and another for the file movement
        itself.  Otherwise, we prefer to perform file movements first
        and file internal replacements later. This way it is possible
        to commit both changes as if they were just one.
    </para>
 
    <note>
        <para>
            There is no support for URLs actions inside
            <command>centos-art.sh</command> script.  The
            <command>centos-art.sh</command> script is designed to
            work with local files inside the working copy only. If you
            need to perform URL actions directly, use Subversion
            commands instead.
        </para>
    </note>

    <para>
        At this moment there is no full implementation of path
        syncronization process inside <command>centos-art.sh</command>
        script and it is somthing we need to do oursleves. However,
        the <quote>texinfo</quote> backend of <code>help</code>
        functionality which provides a restricted implementation of
        path syncronization to this specific area of documentation
        through the <option>--copy</option>, <option>--delete</option>
        and <option>--rename</option> options you can take as
        reference to implement it in other areas.
    </para>
        
    <para>
        The plan for a full implementation of path syncronization
        would be to create individual restricted implementations like
        the one in <quote>texinfo</quote> backend for other areas that
        demand it and then, create a higher implmentation that
        combines them all as needed. This way, if we try to rename a
        repository directory the higher action will define which are
        all the restricted actions that should be performed in order
        to make the full path syncronization.
    </para>
        
    <para>
        For example, if the directory we are renaming is a master
        path, it is required to syncronize the related output and
        localization auxiliar paths. On the other hand, if the
        directory we are renaming through full path syncronization is
        an auxiliar path, it is required to determine first what is
        the related master path and later, perform the syncronization
        from master path to auxiliar paths as if the path provided
        would be the master path not the auxiliar path.  
    </para>

</chapter>