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

4c79b5
4c79b5
<html>
6414c4
09d4f2
6414c4
Copyright C 2009, 2010, 2011  Alain Reguera Delgado
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
-->
27dad7
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>
3f9ae1
<title>The CentOS Artwork Repository: 3.42 trunk/Scripts/Bash/Functions/Path</title>
4c79b5
3f9ae1
<meta name="description" content="The CentOS Artwork Repository: 3.42 trunk/Scripts/Bash/Functions/Path">
3f9ae1
<meta name="keywords" content="The CentOS Artwork Repository: 3.42 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
3f9ae1
[ < ]
3f9ae1
[ > ]
4c79b5
   
4c79b5
[ << ]
4c79b5
[ Up ]
3f9ae1
[ >> ]
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
[Top]
4c79b5
[Contents]
3f9ae1
[Index]
4c79b5
[ ? ]
4c79b5
3f9ae1
3f9ae1
3f9ae1

3.42 trunk/Scripts/Bash/Functions/Path

3f9ae1
3f9ae1
3f9ae1
3f9ae1

3.42.1 Goals

3f9ae1
3f9ae1

This section exists to organize files related to path

3f9ae1
functiontionality.  The path functionality standardizes
3f9ae1
movement, syncronization, branching, tagging, and general file
3f9ae1
maintainance inside the repository. 
3f9ae1

3f9ae1
3f9ae1
3f9ae1

3.42.2 Description

3f9ae1
3f9ae1

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

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

3f9ae1
3f9ae1
3f9ae1

3.42.2.1 Repository layout

3f9ae1
3f9ae1

The repository layout describes organization of files and directories

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

3f9ae1

As convenction, inside CentOS Artwork Repository, we organize files

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

3f9ae1
3f9ae1

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

3f9ae1
3f9ae1

Figure 3.15: The CentOS Artwork Repository layout.

3f9ae1
3f9ae1

3f9ae1

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

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

3f9ae1

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

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

3f9ae1

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

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

3f9ae1

The CentOS Artwork Repository layout is firmly grounded on a

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

3f9ae1
3f9ae1
3f9ae1

3.42.2.2 Repository name convenctions

3f9ae1
3f9ae1

Repository name convenctions help us to maintain consistency of names

3f9ae1
inside the repository.
3f9ae1

3f9ae1

Repository name convenctions are applied to files and directories

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

3f9ae1

Repository name convenctions are implemented inside the

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

3f9ae1
3f9ae1
3f9ae1

3.42.2.3 Repository work flow

3f9ae1
3f9ae1

Repository work flow describes the steps and time intervals used to

3f9ae1
produce CentOS corporate visual identity inside CentOS Artwork
3f9ae1
Repository.  
3f9ae1

3f9ae1

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

3f9ae1
cycle. 
3f9ae1

3f9ae1

Initially, we start working themes on their trunk development line

3f9ae1
(e.g., <tt>`trunk/Identity/Themes/Motifs/TreeFlower/'</tt>), here we
3f9ae1
organize information that cannot be produced automatically (i.e.,
3f9ae1
background images, concepts, color information, screenshots, etc.).
3f9ae1

3f9ae1

Later, when theme trunk development line is considered "ready" for

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

3f9ae1

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

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

3f9ae1

Both branches and tags, inside CentOS Artwork Repository, use

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

3f9ae1
3f9ae1

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

3f9ae1
3f9ae1

Figure 3.16: Name convention for tags and branches creation.

3f9ae1
3f9ae1

3f9ae1
Convenction

Convenction

Do not freeze trunk development lines using tags

3f9ae1
directly.  If you think you need to freeze a trunk development line,
3f9ae1
create a branch for it and then freeze that branch instead.
3f9ae1

3f9ae1
3f9ae1

The trunk development line may introduce problems we cannot see

3f9ae1
immediatly. Certainly, the high changable nature of trunk development
3f9ae1
line complicates finding and fixing such problems. On the other hand,
3f9ae1
the branched development lines provide a more predictable area where
3f9ae1
only fixes/corrections to current content are commited up to
3f9ae1
repository. 
3f9ae1

3f9ae1

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

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

3f9ae1

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

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

3f9ae1

Before releasing a new major release of CentOS distribution we create

3f9ae1
a branch for one of several theme development lines available inside
3f9ae1
the CentOS Artwork Repository, perform quality assurance on it, and
3f9ae1
later, freeze that branch using tags. Once a the theme branch has been
3f9ae1
frozen (under <tt>`tags/'</tt> directory), CentOS Packagers (the persons
3f9ae1
whom build CentOS distribution) can use that frozen branch as source
3f9ae1
location to fulfill CentOS distribution artwork needs. The same
3f9ae1
applies to CentOS Webmasters (the persons whom build CentOS websites),
3f9ae1
and any other visual manifestation required by the project.
3f9ae1

3f9ae1
01b527
3f9ae1

3.42.2.4 Parallel directories

3f9ae1
3f9ae1

Inside CentOS Artwork Repository, parallel directories are simple

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

3f9ae1

Parallel directories take their structure from one unique parent

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

3f9ae1

In some circumstances, parallel directories may be created removing

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

3f9ae1
3f9ae1

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

6414c4
3f9ae1

Figure 3.17: Parallel directories removing uncommon information.

3f9ae1
3f9ae1

3f9ae1

Another example of parallel directory is the documentation structure

3f9ae1
created by manual functionality. This time,
3f9ae1
<tt>`centos-art.sh'</tt> script uses parallel directory information with
3f9ae1
uncommon directory levels to build the documentation entry required by
3f9ae1
Texinfo documentation system, inside the repository.
3f9ae1

3f9ae1

Othertimes, parallel directories may add uncommon information to their

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

3f9ae1
3f9ae1

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

3f9ae1
3f9ae1

Figure 3.18: Parallel directories adding uncommon information.

3f9ae1
3f9ae1

3f9ae1

When one parent directory changes, all their related parallel

3f9ae1
directories need to be changed too. This is required in order for
3f9ae1
parallel directories to retain their relation with the parent
3f9ae1
directory structure.  In the other hand, parallel directories should
3f9ae1
never be modified under no reason but to satisfy the relation to their
3f9ae1
parent directory structure.  Liberal change of parallel directories
3f9ae1
may suppresses the conceptual idea they were initially created for;
3f9ae1
and certainly, things may stop working the way they should do.
3f9ae1

3f9ae1
3f9ae1

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

3f9ae1
3f9ae1

Figure 3.19: Wrong construction of parallel directories.

3f9ae1
3f9ae1

0d952c
01b527
3f9ae1

3.42.2.5 Syncronizing path information

749e81
3f9ae1

Parallel directories are very useful to keep repository organized but

3f9ae1
introduce some complications.  For instance, consider what would
3f9ae1
happen to functionalities like manual (<samp>`trunk Scripts Bash
3f9ae1
Functions Manual'</samp>) that rely on parent directory structures to create
3f9ae1
documentation entries (using parallel directory structures) if one of
3f9ae1
those parent directory structures suddenly changes after the
3f9ae1
documentation entry has been already created for it? 
3f9ae1

3f9ae1

In such cases, functionalities like manual may confuse

3f9ae1
themselves if path information is not updated to reflect the relation
3f9ae1
with its parent directory.  Such functionalities work with parent
3f9ae1
directory structure as reference; if a parent directory changes, the
3f9ae1
functionalities dont't even note it because they work with the last
3f9ae1
parent directory structure available in the repository, no matter what
3f9ae1
it is. 
3f9ae1

3f9ae1

In the specific case of documentation (the manual

3f9ae1
functionality), the problem mentioned above provokes that older parent
3f9ae1
directories, already documented, remain inside documentation directory
3f9ae1
structures as long as you get your hands into the documentation
3f9ae1
directory structure (<tt>`trunk/Manuals'</tt>) and change what must be
3f9ae1
changed to match the new parent directory structure.
3f9ae1

3f9ae1

There is no immediate way for manual, and similar

3f9ae1
functionalities that use parent directories as reference, to know when
3f9ae1
and how directory movements take place inside the repository. Such
3f9ae1
information is available only when the file movement itself takes
3f9ae1
place inside the repository. So, is there, at the moment of moving
3f9ae1
files, when we need to syncronize parallel directories with their
3f9ae1
unique parent directory structure.
3f9ae1

3f9ae1
Warning

Warning

There is not support for URL reference inside

3f9ae1
<tt>`centos-art.sh'</tt> script.  The <tt>`centos-art.sh'</tt> script is
3f9ae1
designed to work with local files inside the working copy only.
3f9ae1

0d952c
3f9ae1

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

3f9ae1
file movements inside the repository are considered repository
3f9ae1
changes. In order for these repository changes to be versioned, we
3f9ae1
need to, firstly, add changes into the version control system, commit
3f9ae1
them, and later, perform movement actions using version control system
3f9ae1
commands. This configuration makes possible for everyone to know about
3f9ae1
changes details inside the repository; and if needed, revert or update
3f9ae1
them back to a previous revision.
3f9ae1

3f9ae1

Finally, once all path information has been corrected, it is time to

3f9ae1
take care of information inside the files. For instance, considere
3f9ae1
what would happen if you make a reference to a documentation node, and
3f9ae1
later the documentation node you refere to is deleted. That would make
3f9ae1
Texinfo to produce error messages at export time. So, the
3f9ae1
<tt>`centos-art.sh'</tt> script needs to know when such changes happen, in
3f9ae1
a way they could be noted and handled without producing errors.
3f9ae1

49b888
01b527
3f9ae1

3.42.2.6 What is the right place to store it?

0d952c
3f9ae1

Occasionly, you may find that new corporate visual identity components

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

3f9ae1

The CentOS Community different free support vains (see:

3f9ae1
http://wiki.centos.org/GettingHelp) are the best place to find
3f9ae1
answers to your question, but going there with hands empty is not good
3f9ae1
idea. It may give the impression you don't really care about. Instead,
3f9ae1
consider the following suggestions to find your own comprehension and
3f9ae1
so, make your propositions based on it.
3f9ae1

3f9ae1

When we are looking for the correct place to store new files, to bear

3f9ae1
in mind the corporate visual identity structure used inside the CentOS
3f9ae1
Artwork Repository (see section trunk/Identity) would be probaly the best
3f9ae1
advice we could offer, the rest is just matter of choosing appropriate
3f9ae1
names.  To illustrate this desition process let's consider the
3f9ae1
<tt>`trunk/Identity/Themes/Motifs/TreeFlower'</tt> directory as
3f9ae1
example. It is the trunk development line of TreeFlower's artistic
3f9ae1
motif. Artistic motifs are considered part of themes, which in turn
3f9ae1
are considered part of CentOS corporate visual identity.
3f9ae1

3f9ae1

When building parent directory structures, you may find that reaching

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

3f9ae1

For example, the <tt>`trunk/Identity/Themes/Motifs/TreeFlower'</tt>

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

3f9ae1
centos-art manual --read=turnk/
3f9ae1
centos-art manual --read=turnk/Identity/
3f9ae1
centos-art manual --read=turnk/Identity/Themes/
3f9ae1
centos-art manual --read=turnk/Identity/Themes/Motifs/
3f9ae1
centos-art manual --read=turnk/Identity/Themes/Motifs/TreeFlower/
3f9ae1
3f9ae1

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

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

e37211
01b527
e37211

3.42.3 Usage

e37211
3f9ae1
3f9ae1
centos-art path --copy='SRC' --to='DST'
3f9ae1
3f9ae1

Copy <samp>`SRC'</samp> to <samp>`DST'</samp> and schedule <samp>`DST'</samp> for

3f9ae1
addition (with history).  In this command, <tt>`SRC'</tt> and <tt>`DST'</tt>
3f9ae1
are both working copy (WC) entries.
3f9ae1

3f9ae1
3f9ae1
centos-art path --delete='SRC'
3f9ae1
3f9ae1

Delete <samp>`DST'</samp>. In order for this command to work the file or

3f9ae1
directory you intend to delete should be under version control first.
3f9ae1
In this command, <tt>`SRC'</tt> is a working copy (WC) entry.  
3f9ae1

3f9ae1
3f9ae1
e37211
e37211
01b527
54264c

3.42.4 See also

4c79b5
63f275
3f9ae1
3.37 trunk/Scripts/Bash  
3f9ae1
3f9ae1
3.38 trunk/Scripts/Bash/Functions  
63f275
63f275
4c79b5
4c79b5
4c79b5
01b527
[ < ]
01b527
[ > ]
4c79b5
   
4c79b5
[ << ]
3f9ae1
[ Up ]
3f9ae1
[ >> ]
4c79b5
4c79b5

4c79b5
 <font size="-1">
27dad7
  This document was generated on January, 6 2011 using texi2html 1.76.
4c79b5
 </font>
4c79b5
 
4c79b5
4c79b5

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