Blame Manuals/Repository/repository-html/repository_57.html

4c79b5
4c79b5
<html>
ccb7a3
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
-->
bf28e1
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>
bf28e1
<title>CentOS Artwork Repository: 3.54 trunk/Scripts/Bash/Functions/Path</title>
4c79b5
bf28e1
<meta name="description" content="CentOS Artwork Repository: 3.54 trunk/Scripts/Bash/Functions/Path">
bf28e1
<meta name="keywords" content="CentOS Artwork Repository: 3.54 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
300762
bf28e1
[ < ]
bf28e1
[ > ]
4c79b5
   
4c79b5
[ << ]
4c79b5
[ Up ]
bf28e1
[ >> ]
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
[Top]
4c79b5
[Contents]
bf28e1
[Index]
4c79b5
[ ? ]
4c79b5
bf28e1
bf28e1
bf28e1

3.54 trunk/Scripts/Bash/Functions/Path

bf28e1
bf28e1
bf28e1
bf28e1

3.54.1 Goals

bf28e1
bf28e1

This section exists to organize files related to path

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

bf28e1
bf28e1
bf28e1

3.54.2 Description

bf28e1
bf28e1

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

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

bf28e1
bf28e1
bf28e1

3.54.2.1 Repository layout

bf28e1
bf28e1

The repository layout describes organization of files and directories

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

bf28e1

As convenction, inside CentOS Artwork Repository, we organize files

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

bf28e1

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

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

bf28e1

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

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

bf28e1

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

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

bf28e1

The CentOS Artwork Repository layout is firmly grounded on a

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

bf28e1
bf28e1
bf28e1

3.54.2.2 Repository name convenctions

bf28e1
bf28e1

Repository name convenctions help us to maintain consistency of names

bf28e1
inside the repository.
bf28e1

bf28e1

Repository name convenctions are applied to files and directories

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

bf28e1

Repository name convenctions are implemented inside the

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

bf28e1
bf28e1
bf28e1

3.54.2.3 Repository work flow

bf28e1
bf28e1

Repository work flow describes the steps and time intervals used to

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

bf28e1

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

bf28e1
cycle. 
bf28e1

bf28e1

Initially, we start working themes on their trunk development line

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

bf28e1

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

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

bf28e1

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

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

bf28e1

Both branches and tags, inside CentOS Artwork Repository, use

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

bf28e1
Convenction

Convenction

Do not freeze trunk development lines using tags

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

b0644c
bf28e1

The trunk development line may introduce problems we cannot see

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

bf28e1

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

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

bf28e1

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

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

bf28e1

Before releasing a new major release of CentOS distribution we create

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

2b5e61
bf28e1
bf28e1

3.54.2.4 Parallel directories

bf28e1
bf28e1

Inside CentOS Artwork Repository, parallel directories are simple

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

bf28e1

Parallel directories take their structure from one unique parent

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

bf28e1

In some circumstances, parallel directories may be created removing

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

bf28e1

Another example of parallel directory is the documentation structure

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

bf28e1

Othertimes, parallel directories may add uncommon information to their

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

bf28e1

When one parent directory changes, all their related parallel

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

c2a1bc
bf28e1
bf28e1

3.54.2.5 Syncronizing path information

bf28e1
bf28e1

Parallel directories are very useful to keep repository organized but

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

bf28e1

In such cases, functionalities like manual may confuse

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

bf28e1

In the specific case of documentation (the manual

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

bf28e1

There is no immediate way for manual, and similar

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

bf28e1
Warning

Warning

There is not support for URL reference inside

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

2b5e61
bf28e1

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

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

bf28e1

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

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

c2a1bc
bf28e1
bf28e1

3.54.2.6 What is the right place to store it?

bf28e1
bf28e1

Occasionly, you may find that new corporate visual identity components

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

bf28e1

The CentOS Community different free support vains (see:

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

bf28e1

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

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

bf28e1

When building parent directory structures, you may find that reaching

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

bf28e1

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

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

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

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

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

2b5e61
bf28e1
bf28e1

3.54.3 Usage

7fa1fb
c2a1bc
bf28e1
centos-art path --copy='SRC' --to='DST'
c2a1bc
bf28e1

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

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

c2a1bc
bf28e1
centos-art path --delete='SRC'
c2a1bc
bf28e1

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

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

bf28e1
c2a1bc
c2a1bc
bf28e1
bf28e1
bf28e1

3.54.4 See also

300762
ec5f63
bf28e1
3.49 trunk/Scripts/Bash  
bf28e1
bf28e1
3.50 trunk/Scripts/Bash/Functions  
ec5f63
ec5f63
ec5f63
300762
300762
bf28e1
[ < ]
bf28e1
[ > ]
300762
   
300762
[ << ]
bf28e1
[ Up ]
bf28e1
[ >> ]
300762
4c79b5

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

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