Blame Manuals/en/Html/Repository/repository_42.html

4c79b5
4c79b5
<html>
09d4f2
09d4f2
09d4f2
The CentOS Artwork Repository exists to organize and automate The
09d4f2
CentOS Project corporate visual identity (, to
09d4f2
start on).
4c79b5
6c4982
Copyright C 2009, 2010 Alain Reguera Delgado. All rights
4c79b5
reserved.
4c79b5
4c79b5
Permission is granted to copy, distribute and/or modify this document
4c79b5
under the terms of the GNU Free Documentation License, Version 1.2 or
4c79b5
any later version published by the Free Software Foundation; with no
4c79b5
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
4c79b5
copy of the license is included in the section entitled GNU Free
4c79b5
Documentation License.  
4c79b5
-->
09d4f2
4c79b5
4c79b5
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
4c79b5
            Karl Berry  <karl@freefriends.org>
4c79b5
            Olaf Bachmann <obachman@mathematik.uni-kl.de>
4c79b5
            and many others.
4c79b5
Maintained by: Many creative people <dev@texi2html.cvshome.org>
4c79b5
Send bugs and suggestions to <users@texi2html.cvshome.org>
4c79b5
4c79b5
-->
4c79b5
<head>
38bcd9
<title>CentOS Artwork Repository: 3.39 trunk/Scripts/Bash/Functions/Path</title>
4c79b5
38bcd9
<meta name="description" content="CentOS Artwork Repository: 3.39 trunk/Scripts/Bash/Functions/Path">
38bcd9
<meta name="keywords" content="CentOS Artwork Repository: 3.39 trunk/Scripts/Bash/Functions/Path">
4c79b5
<meta name="resource-type" content="document">
4c79b5
<meta name="distribution" content="global">
4c79b5
<meta name="Generator" content="texi2html 1.76">
4c79b5
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4c79b5
<style type="text/css">
4c79b5
1e9202
@import "/home/centos/artwork/trunk/Identity/Models/Css/Texi2html/common.css";
4c79b5
4c79b5
a.summary-letter {text-decoration: none}
4c79b5
pre.display {font-family: serif}
4c79b5
pre.format {font-family: serif}
4c79b5
pre.menu-comment {font-family: serif}
4c79b5
pre.menu-preformatted {font-family: serif}
4c79b5
pre.smalldisplay {font-family: serif; font-size: smaller}
4c79b5
pre.smallexample {font-size: smaller}
4c79b5
pre.smallformat {font-family: serif; font-size: smaller}
4c79b5
pre.smalllisp {font-size: smaller}
4c79b5
span.sansserif {font-family:sans-serif; font-weight:normal;}
4c79b5
ul.toc {list-style: none}
4c79b5
-->
4c79b5
</style>
4c79b5
4c79b5
4c79b5
</head>
4c79b5
4c79b5
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
4c79b5
4c79b5
09d4f2
[ < ]
09d4f2
[ > ]
4c79b5
   
4c79b5
[ << ]
4c79b5
[ Up ]
09d4f2
[ >> ]
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
[Top]
4c79b5
[Contents]
09d4f2
[Index]
4c79b5
[ ? ]
4c79b5
38bcd9
09d4f2
38bcd9

3.39 trunk/Scripts/Bash/Functions/Path

54264c
54264c
09d4f2
54264c

3.39.1 Goals

54264c
09d4f2

This section exists to organize files related to path

09d4f2
functiontionality of <tt>`centos-art.sh'</tt> script.  The path
09d4f2
functionality of <tt>`centos-art.sh'</tt> script standardizes movement,
09d4f2
syncronization, branching, tagging, and general file maintainance
09d4f2
inside the repository. 
081970

54264c
09d4f2
54264c

3.39.2 Description

54264c
09d4f2

"CentOS like trees, has roots, trunk, branches, leaves and

09d4f2
flowers.  Day by day they work together in freedom, ruled by the laws
09d4f2
of nature and open standards, to show the beauty of its
09d4f2
existence."
09d4f2

081970
09d4f2
09d4f2

3.39.2.1 Repository layout

081970
09d4f2

The repository layout describes organization of files and directories

09d4f2
inside the repository. The repository layout provides the standard
09d4f2
backend required for automation scripts to work correctly. If such
09d4f2
layout changes unexpectedly, automation scripts may confuse themselves
09d4f2
and stop doing what we expect from them to do.
09d4f2

09d4f2

As convenction, inside CentOS Artwork Repository, we organize files

09d4f2
and directories, related to CentOS corporate visual identity, under
09d4f2
three top level directories named <tt>`trunk/'</tt>, <tt>`branches/'</tt>, and
09d4f2
<tt>`tags/'</tt>. 
09d4f2

09d4f2
09d4f2

trunk/Identity/Models/Img/Scripts/Bash/Functions/Path/figure-6

09d4f2
09d4f2

Figure 3.9: The CentOS Artwork Repository layout.

09d4f2
09d4f2

09d4f2

The <tt>`trunk/'</tt> directory (see section trunk) organizes the main

09d4f2
development line of CentOS corporate visual identity. Inside
09d4f2
<tt>`trunk/'</tt> directory structure, the CentOS corporate visual
09d4f2
identity concepts are implemented using directories.  There is one
09d4f2
directory level for each relevant concept inside the repository. The
09d4f2
<tt>`trunk/'</tt> directory structure is mainly used to develop CentOS
09d4f2
corporate visual identity.
09d4f2

09d4f2

The <tt>`branches/'</tt> directory (see section branches) oranizes parallel

09d4f2
development lines to <tt>`trunk/'</tt> directory. The <tt>`branches/'</tt>
09d4f2
directory is used to set points in time where develpment lines are
09d4f2
devided one from another taking separte and idependent lives that
09d4f2
share a common past from the point they were devided on. The
09d4f2
<tt>`branches/'</tt> directory is mainly used to perform quality assurance
09d4f2
on CentOS corporate visual identity.
09d4f2

09d4f2

The <tt>`tags/'</tt> directory (see section tags) organizes parallel frozen

09d4f2
lines to <tt>`branches/'</tt> directory.  The parallel frozen lines are
09d4f2
immutable, nothing change inside them once they has been created.  The
09d4f2
<tt>`tags/'</tt> directory is mainly used to publish final releases of
09d4f2
CentOS corporate visual identity.
09d4f2

09d4f2

The CentOS Artwork Repository layout is firmly grounded on a

09d4f2
Subversion base.  Subversion (http://subversion.tigris.org) is a
09d4f2
version control system, which allows you to keep old versions of files
09d4f2
and directories (usually source code), keep a log of who, when, and
09d4f2
why changes occurred, etc., like CVS, RCS or SCCS.  Subversion keeps a
09d4f2
single copy of the master sources.  This copy  is called the source
09d4f2
"repository"; it contains all the information to permit extracting
09d4f2
previous versions of those files at any time.
09d4f2

09d4f2
09d4f2
09d4f2

3.39.2.2 Repository name convenctions

09d4f2
09d4f2

Repository name convenctions help us to maintain consistency of names

09d4f2
inside the repository.
09d4f2

09d4f2

Repository name convenctions are applied to files and directories

09d4f2
inside the repository layout. As convenction, inside the repository
09d4f2
layout, file names are all written in lowercase
09d4f2
(<samp>`01-welcome.png'</samp>, <samp>`splash.png'</samp>, <samp>`anaconda_header.png'</samp>,
09d4f2
etc.) and directory names are all written capitalized (e.g.,
09d4f2
<samp>`Identity'</samp>, <samp>`Themes'</samp>, <samp>`Motifs'</samp>, <samp>`TreeFlower'</samp>,
09d4f2
etc.).
09d4f2

09d4f2

Repository name convenctions are implemented inside the

09d4f2
cli_getRepoName function of <tt>`centos-art.sh'</tt> script. With
09d4f2
cli_getRepoName function we reduce the amount of commands and
09d4f2
convenctions you need to remember concentrating them in just one
09d4f2
single place you can look for fixes and improvements.
09d4f2

09d4f2
09d4f2
09d4f2

3.39.2.3 Repository work flow

09d4f2
09d4f2

Repository work flow describes the steps and time intervals used to

09d4f2
produce CentOS corporate visual identity inside CentOS Artwork
09d4f2
Repository.  
09d4f2

09d4f2

To illustrate repository work flow let's consider themes' development

09d4f2
cycle. 
09d4f2

09d4f2

Initially, we start working themes on their trunk development line

09d4f2
(e.g., <tt>`trunk/Identity/Themes/Motifs/TreeFlower/'</tt>), here we
09d4f2
design background images and propagate them to different visual
09d4f2
manifestations using one theme's model as reference.
09d4f2

09d4f2

Later, when the theme is considered "ready" for implementation (i.e.

09d4f2
all visual manifestations have been already set), we create a branch
09d4f2
for it (e.g., <tt>`branches/Identity/Themes/Motifs/TreeFlower/1/'</tt>).
09d4f2
Once the branch has been created, we forget that branch and continue
09d4f2
working the trunk development line while others (e.g., an artwork
09d4f2
quality assurance team) test the new branch for tunning it up. 
09d4f2

09d4f2

Once the branch has been tunned up, and considered "ready" for

09d4f2
release, it is freezed under <tt>`tags/'</tt> directory (e.g.,
09d4f2
<tt>`tags/Identity/Themes/Motifs/TreeFower/1.0/'</tt>) for packagers,
09d4f2
webmasters, promoters, and anyone who needs images from that CentOS
09d4f2
theme the tag was created for.
09d4f2

09d4f2

Both branches and tags, inside CentOS Artwork Repository, use

09d4f2
numerical values to identify themselves under the same location.
09d4f2
Branches start at one (i.e., <samp>`1'</samp>) and increment one unit for each
09d4f2
branch created from the same trunk development line.  Tags start at
09d4f2
zero (i.e., <samp>`0'</samp>) and increment one unit for each tag created from
09d4f2
the same branch development line.
09d4f2

09d4f2
09d4f2

trunk/Identity/Models/Img/Scripts/Bash/Functions/Path/figure-1

09d4f2
09d4f2

Figure 3.10: Name convention for tags and branches creation.

09d4f2
09d4f2

09d4f2

As proposition, it would be convenient not to freeze trunk development

09d4f2
lines using tags or anything else.  If you think you need to freeze a
09d4f2
trunk development line, create a branch for it and then freeze that
09d4f2
branch instead.  
09d4f2

09d4f2

The trunk development line may introduce problems we cannot see

09d4f2
immediatly. Certainly, the high changable nature of trunk development
09d4f2
line complicates finding and fixing such problems. On the other hand,
09d4f2
the branched development lines provides a less changable area where
09d4f2
only small fixes/corrections are commited up to repository. 
09d4f2

09d4f2

If others find and fix bugs inside the branched development line, we

09d4f2
could merge such changes/experiences back to trunk development line
09d4f2
(not visversa) in order for future branches, created from trunk, to
09d4f2
benefit.
09d4f2

09d4f2

Time intervals used to create branches and tags may vary, just as

09d4f2
different needs may arrive. For example, consider the release schema
09d4f2
of CentOS distribution: one major release every 2 years, security
09d4f2
updates every 6 months, support for 7 years long. Each time a CentOS
09d4f2
distribution is released, specially if it is a major release, there is
09d4f2
a theme need in order to cover CentOS distribution artwork
09d4f2
requirements. At this point, is where CentOS Artwork Repository comes
09d4f2
up to scene. 
09d4f2

09d4f2

Before releasing a new major release of CentOS distribution you can

09d4f2
create a branch for one of several theme development lines available
09d4f2
inside the CentOS Artwork Repository, perform quality assurance on it,
09d4f2
and later, freeze that branch using tags. Once a the theme branch has
09d4f2
been frozen (under <tt>`tags/'</tt> directory), CentOS Packagers (the
09d4f2
persons who build CentOS distribution) can use that frozen branch as
09d4f2
source location to fulfill CentOS distribution artwork needs.
09d4f2

09d4f2
09d4f2
09d4f2

3.39.2.4 Parallel directories

09d4f2
09d4f2

Inside CentOS Artwork Repository, parallel directories are simple

09d4f2
directory entries built from a common parent directory and placed in a
09d4f2
location different to that, the common parent directory is placed on.
09d4f2
Parallel directories are useful to create branches, tags,
09d4f2
translations, documentation, pre-rendering configuration script, and
09d4f2
similar directory structures.
09d4f2

09d4f2

Parallel directory structures take their structure from one unique

09d4f2
parent directory structure. Inside CentOS Artwork Repository, this
09d4f2
unique parent directory structure is under <tt>`trunk/Identity'</tt>
09d4f2
directory. The <tt>`trunk/Identity'</tt> directory structure must be
09d4f2
considered the reference for whatever information you plan to create
09d4f2
inside the repository.
09d4f2

09d4f2

In some circumstances, parallel directories may be created removing

09d4f2
uncommon information from their paths. Uncommon path information
09d4f2
refers to those directory levels in the path which are not common for
09d4f2
other parallel directories.  For example, when rendering
09d4f2
<tt>`trunk/Identity/Themes/Motifs/TreeFlower/Distro'</tt> directory
09d4f2
structure, the <tt>`centos-art.sh'</tt> script removes the
09d4f2
<tt>`Motifs/TreeFlower/'</tt> directory levels from path, in order to
09d4f2
build the parallel directory used to retrived translations, and
09d4f2
pre-rendering configuration scripts required by render
09d4f2
functionality.
09d4f2

09d4f2

Another example where parallel directory information is built by

09d4f2
removing the uncommon path information is when we use the help
09d4f2
functionality. This time, <tt>`centos-art.sh'</tt> script uses parallel
09d4f2
directory information (without uncommon directory levels) to build the
09d4f2
documentation entry required by Texinfo to store directory
09d4f2
documentation inside the repository.
09d4f2

09d4f2
09d4f2

trunk/Identity/Models/Img/Scripts/Bash/Functions/Path/figure-3

09d4f2
09d4f2

Figure 3.11: Parallel directories removing uncommon information.

09d4f2
09d4f2

09d4f2

Othertimes, parallel directories may add uncommon information to their

09d4f2
paths. This is the case of branches and tags creation. When we create
09d4f2
branches and tags, a numerical identifier is added to parallel
09d4f2
directory structure path. The place where the numerical identifier is
09d4f2
set on is relevant to corporate visual identity structure and should
09d4f2
be carefully considered where it will be.
09d4f2

09d4f2
09d4f2

trunk/Identity/Models/Img/Scripts/Bash/Functions/Path/figure-4

09d4f2
09d4f2

Figure 3.12: Parallel directories adding uncommon information.

09d4f2
09d4f2

09d4f2

When one parent directory changes, all their related parallel

09d4f2
directories need to be changed too. This is required in order for
09d4f2
parallel directories to match the new parent directory structure.  In
09d4f2
the other hand, parallel directories should never be modified by no
09d4f2
reason but to satisfy their parent directory structure. Liberal change
09d4f2
of parallel directories may suppress the conceptual idea they were
09d4f2
initially created for.
09d4f2

09d4f2
09d4f2

trunk/Identity/Models/Img/Scripts/Bash/Functions/Path/figure-5

09d4f2
09d4f2

Figure 3.13: Wrong construction of parallel directories.

09d4f2
09d4f2

09d4f2
09d4f2
09d4f2

3.39.2.5 Syncronizing path information

09d4f2
09d4f2

Creating parallel directories is very useful to keep repository

09d4f2
organized, but what would happen to functionalities like help
09d4f2
(see section trunk/Scripts/Bash/Functions/Help) that rely on parent
09d4f2
directory structures to create documentation entries (using parallel
09d4f2
directory structures) if one of those parent directory structures
09d4f2
suddenly change after the documentation entry has been already created
09d4f2
for it? 
09d4f2

09d4f2

Well, at this point, functionalities like help may confuse

09d4f2
themselves if path information is not syncronized correctly.  Such
09d4f2
functionalities work with parent directory structure as reference; if
09d4f2
a parent directory changes, the functionalities dont't even note it
09d4f2
because they work with the last parent directory structure available
09d4f2
in the repository, no matter what it is. 
09d4f2

09d4f2

In the specific case of documentation (the help functionality),

09d4f2
the problem mentioned above provokes that older parent directories,
09d4f2
already documented, remain inside documentation directory structures
09d4f2
in perpetuity, as long as you get your hands into the documentation
09d4f2
directory structure (<tt>`trunk/Manuals'</tt>) and remove what must be
09d4f2
removed to match the new parent directory structure.
09d4f2

09d4f2

There is no way for help, and similar functionalities that use

09d4f2
parent directories as reference, to know when and how directory
09d4f2
movements take place inside the repository. Such information is
09d4f2
available only when movement actions, like thoses achived by
09d4f2
rm or mv commands, take place inside the
09d4f2
repository. So, is there, at the moment of moving files, when we need
09d4f2
to syncronize parallel directories with their unique parent directory
09d4f2
structure.
09d4f2

09d4f2

Syncronizing parallel directories with their respecitive parent

09d4f2
directory implies moving files inside the repository, i.e. we need to,
09d4f2
firstly, rebuild the path information for each parallel directory
09d4f2
inside the repository, using the current path of its parent directory
09d4f2
as reference, and later, use the new path information to move each old
09d4f2
parallel directory from its old location to its new location based on
09d4f2
an updated path information.
09d4f2

09d4f2

As CentOS Artwork Repository is built over a version control system,

09d4f2
file movements inside the repository are considered repository
09d4f2
changes. In order for these repository changes to be versioned, we
09d4f2
need to, firstly, add changes related files into version control
09d4f2
system, and later, use commands from the version control system to
09d4f2
move those files already versioned.  This configuration makes possible
09d4f2
for everyone to know about changes details inside the repository; and
09d4f2
if needed, revert or update them back to a previous revision.
09d4f2

09d4f2

Finally, once all file corrections have been already made, the

09d4f2
syncronization action takes care of updating path references inside
09d4f2
related files. Updating path references inside related files is
09d4f2
specially important for documentation files where documentation nodes
09d4f2
are built using repository path information as reference.
09d4f2

09d4f2
09d4f2
09d4f2

3.39.2.6 What is the right location to store it?

09d4f2
09d4f2

Occasionly, you may find that new corporate visual identity components

09d4f2
need to be added to the repository. If that is your case, the first
09d4f2
question you need to ask yourself, before start to create directories
09d4f2
blindly all over, is: What is the right location to store it?
09d4f2

09d4f2

The CentOS Community (http://wiki.centos.org/GettingHelp) is the

09d4f2
best place to find answers to your question, but going there with
09d4f2
hands empty is not good idea. It may give the impression you don't
09d4f2
really care about. Instead, consider the following suggestions to find
09d4f2
your own comprehension and so, make your propositions based on it.
09d4f2

09d4f2

When looking the correct place to store new files, to bear in mind the

09d4f2
corporate visual identity structure used inside the CentOS Artwork
09d4f2
Repository (see section trunk/Identity) would be probaly the best advice
09d4f2
we could offer you, the rest is just matter of choosing appropriate
09d4f2
names.  To illustrate this desition process let's consider the
09d4f2
<tt>`trunk/Identity/Themes/Motifs/TreeFlower/Distro/'</tt> directory as
09d4f2
example. It is the main development line of CentOS distribution visual
09d4f2
manifestation, using TreeFlower's artistic motif, inside themes of
09d4f2
CentOS corporate visual identity structure. 
09d4f2

09d4f2

When building parent directory structures, you may find that reaching

09d4f2
an acceptable location may take some time, and as it happens most of
09d4f2
time, it is not a definite solution. There are many concepts that you
09d4f2
need to play with, in order to find a result that match the conceptual
09d4f2
idea you try to implement in the new directory location. To know which
09d4f2
these concepts are, split the location in words and read its
09d4f2
documentation entry from less specific to more specific.
09d4f2

09d4f2

For example, the

09d4f2
<tt>`trunk/Identity/Themes/Motifs/TreeFlower/Distro/'</tt> location
09d4f2
evolved through several months of contant work and there is no certain
09d4f2
it won't change in the future, even it fixes quite well the concept we
09d4f2
are trying to implement.  The concepts used in
09d4f2
<tt>`trunk/Identity/Themes/Distro/Motifs/TreeFlower/Distro/'</tt> location
09d4f2
are described in the following commands, respectively:
09d4f2

09d4f2
centos-art help --read=turnk/
09d4f2
centos-art help --read=turnk/Identity/
09d4f2
centos-art help --read=turnk/Identity/Themes/
09d4f2
centos-art help --read=turnk/Identity/Themes/Motifs/
09d4f2
centos-art help --read=turnk/Identity/Themes/Motifs/TreeFlower/
09d4f2
centos-art help --read=turnk/Identity/Themes/Motifs/TreeFlower/Distro/
09d4f2
09d4f2

Other location concepts can be found similary as we did above, just

09d4f2
change the location we used above by the one you are trying to know
09d4f2
concepts for.
09d4f2

09d4f2
09d4f2
081970

3.39.3 Usage

081970
09d4f2

These commands are not available yet.

081970

081970
09d4f2
centos-art path --sync='path/to/dir'
09d4f2
centos-art path --copy='path/to/oldfile path/to/newfile'
09d4f2
centos-art path --move='path/to/oldfile path/to/newfile'
09d4f2

Move <samp>`path/to/oldfile'</samp> to <samp>`path/to/newfile'</samp>.

41f1ec

09d4f2
centos-art path --remove='path/to/file'
09d4f2
centos-art path --create-tag-from='path/to/dir'
09d4f2
centos-art path --create-branch-from='path/to/dir'
081970
081970
081970
09d4f2
54264c

3.39.4 See also

4c79b5
41f1ec
41f1ec
3.35 trunk/Scripts/Bash/Functions  
41f1ec
41f1ec
4c79b5
4c79b5
4c79b5
09d4f2
[ < ]
09d4f2
[ > ]
4c79b5
   
4c79b5
[ << ]
09d4f2
[ Up ]
09d4f2
[ >> ]
4c79b5
4c79b5

4c79b5
 <font size="-1">
09d4f2
  This document was generated on November, 21 2010 using texi2html 1.76.
4c79b5
 </font>
4c79b5
 
4c79b5
4c79b5

4c79b5
</body>
4c79b5
</html>