Blame Manuals/en/Html/Repository/repository_44.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
-->
92fb7f
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>
c489c0
<title>The CentOS Artwork Repository: 3.41 trunk/Scripts/Bash/Functions/Path</title>
4c79b5
c489c0
<meta name="description" content="The CentOS Artwork Repository: 3.41 trunk/Scripts/Bash/Functions/Path">
c489c0
<meta name="keywords" content="The CentOS Artwork Repository: 3.41 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
01b527
[ < ]
01b527
[ > ]
4c79b5
   
4c79b5
[ << ]
4c79b5
[ Up ]
c489c0
[ >> ]
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
[Top]
4c79b5
[Contents]
c489c0
[Index]
4c79b5
[ ? ]
4c79b5
c489c0
01b527
c489c0

3.41 trunk/Scripts/Bash/Functions/Path

b0644c
b0644c
01b527
e37211

3.41.1 Goals

e37211
c489c0

This section exists to organize files related to path

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

63f275
01b527
e37211

3.41.2 Description

e37211
c489c0

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

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

4224f4
aaa0e9
c489c0

3.41.2.1 Repository layout

4224f4
c489c0

The repository layout describes organization of files and directories

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

c489c0

As convenction, inside CentOS Artwork Repository, we organize files

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

c489c0
c489c0

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

4224f4
c489c0

Figure 3.15: The CentOS Artwork Repository layout.

c489c0
c489c0

c489c0

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

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

c489c0

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

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

c489c0

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

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

c489c0

The CentOS Artwork Repository layout is firmly grounded on a

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

4224f4
aaa0e9
c489c0

3.41.2.2 Repository name convenctions

c489c0
c489c0

Repository name convenctions help us to maintain consistency of names

c489c0
inside the repository.
c489c0

c489c0

Repository name convenctions are applied to files and directories

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

c489c0

Repository name convenctions are implemented inside the

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

c489c0
c489c0
c489c0

3.41.2.3 Repository work flow

c489c0
c489c0

Repository work flow describes the steps and time intervals used to

c489c0
produce CentOS corporate visual identity inside CentOS Artwork
c489c0
Repository.  
c489c0

c489c0

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

c489c0
cycle. 
c489c0

c489c0

Initially, we start working themes on their trunk development line

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

c489c0

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

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

c489c0

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

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

c489c0

Both branches and tags, inside CentOS Artwork Repository, use

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

c489c0
c489c0

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

c489c0
c489c0

Figure 3.16: Name convention for tags and branches creation.

c489c0
c489c0

c489c0
Convenction

Convenction

Do not freeze trunk development lines using tags

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

c489c0
c489c0

The trunk development line may introduce problems we cannot see

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

c489c0

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

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

c489c0

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

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

c489c0

Before releasing a new major release of CentOS distribution we create

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

c489c0
c489c0
c489c0

3.41.2.4 Parallel directories

c489c0
c489c0

Inside CentOS Artwork Repository, parallel directories are simple

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

c489c0

Parallel directories take their structure from one unique parent

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

c489c0

In some circumstances, parallel directories may be created removing

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

c489c0
c489c0

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

c489c0
c489c0

Figure 3.17: Parallel directories removing uncommon information.

c489c0
c489c0

c489c0

Another example of parallel directory is the documentation structure

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

c489c0

Othertimes, parallel directories may add uncommon information to their

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

c489c0
c489c0

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

c489c0
c489c0

Figure 3.18: Parallel directories adding uncommon information.

c489c0
c489c0

c489c0

When one parent directory changes, all their related parallel

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

c489c0
c489c0

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

c489c0
c489c0

Figure 3.19: Wrong construction of parallel directories.

c489c0
c489c0

c489c0
c489c0
c489c0

3.41.2.5 Syncronizing path information

c489c0
c489c0

Parallel directories are very useful to keep repository organized but

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

c489c0

In such cases, functionalities like manual may confuse

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

c489c0

In the specific case of documentation (the manual

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

c489c0

There is no immediate way for manual, and similar

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

c489c0
Warning

Warning

There is not support for URL reference inside

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

c489c0
c489c0

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

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

c489c0

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

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

c489c0
c489c0
c489c0

3.41.2.6 What is the right place to store it?

c489c0
c489c0

Occasionly, you may find that new corporate visual identity components

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

c489c0

The CentOS Community different free support vains (see:

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

c489c0

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

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

c489c0

When building parent directory structures, you may find that reaching

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

c489c0

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

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

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

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

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

c489c0
c489c0
c489c0

3.41.3 Usage

c489c0
c489c0
c489c0
centos-art path --copy='SRC' --to='DST'
c489c0
c489c0

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

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

c489c0
c489c0
centos-art path --delete='SRC'
c489c0
c489c0

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

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

c489c0
c489c0
c489c0
c489c0
c489c0
54264c

3.41.4 See also

4c79b5
c489c0
c489c0
3.36 trunk/Scripts/Bash  
c489c0
c489c0
3.37 trunk/Scripts/Bash/Functions  
c489c0
c489c0
4c79b5
4c79b5
4c79b5
c489c0
[ < ]
c489c0
[ > ]
4c79b5
   
4c79b5
[ << ]
01b527
[ Up ]
c489c0
[ >> ]
4c79b5
4c79b5

4c79b5
 <font size="-1">
92fb7f
  This document was generated on January, 5 2011 using texi2html 1.76.
4c79b5
 </font>
4c79b5
 
4c79b5
4c79b5

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