Blame Manuals/Repository/repository-html/repository_55.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
-->
acd47b
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>
4a9d2a
<title>CentOS Artwork Repository: 3.52 trunk/Scripts/Bash/Functions/Path</title>
4c79b5
4a9d2a
<meta name="description" content="CentOS Artwork Repository: 3.52 trunk/Scripts/Bash/Functions/Path">
4a9d2a
<meta name="keywords" content="CentOS Artwork Repository: 3.52 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
4a9d2a
[ < ]
4a9d2a
[ > ]
4c79b5
   
4c79b5
[ << ]
300762
[ Up ]
acd47b
[ >> ]
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
[Top]
4c79b5
[Contents]
acd47b
[Index]
4c79b5
[ ? ]
4c79b5
4a9d2a
4a9d2a
4a9d2a

3.52 trunk/Scripts/Bash/Functions/Path

b0644c
b0644c
4a9d2a
e37211

3.52.1 Goals

b0644c
4a9d2a

This section exists to organize files related to path

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

035049
4a9d2a
e37211

3.52.2 Description

b0644c
4a9d2a

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

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

4a9d2a
4a9d2a
4a9d2a

3.52.2.1 Repository layout

4a9d2a
4a9d2a

The repository layout describes organization of files and directories

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

4a9d2a

As convenction, inside CentOS Artwork Repository, we organize files

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

4a9d2a

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

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

4a9d2a

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

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

4a9d2a

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

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

4a9d2a

The CentOS Artwork Repository layout is firmly grounded on a

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

4a9d2a
4a9d2a
4a9d2a

3.52.2.2 Repository name convenctions

4a9d2a
4a9d2a

Repository name convenctions help us to maintain consistency of names

4a9d2a
inside the repository.
4a9d2a

4a9d2a

Repository name convenctions are applied to files and directories

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

4a9d2a

Repository name convenctions are implemented inside the

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

4a9d2a
4a9d2a
4a9d2a

3.52.2.3 Repository work flow

4a9d2a
4a9d2a

Repository work flow describes the steps and time intervals used to

4a9d2a
produce CentOS corporate visual identity inside CentOS Artwork
4a9d2a
Repository.  
4a9d2a

4a9d2a

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

4a9d2a
cycle. 
4a9d2a

4a9d2a

Initially, we start working themes on their trunk development line

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

4a9d2a

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

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

4a9d2a

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

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

4a9d2a

Both branches and tags, inside CentOS Artwork Repository, use

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

4a9d2a
Convenction

Convenction

Do not freeze trunk development lines using tags

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

ec5f63
4a9d2a

The trunk development line may introduce problems we cannot see

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

4a9d2a

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

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

4a9d2a

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

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

4a9d2a

Before releasing a new major release of CentOS distribution we create

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

4a9d2a
4a9d2a
4a9d2a

3.52.2.4 Parallel directories

ec5f63
4a9d2a

Inside CentOS Artwork Repository, parallel directories are simple

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

4a9d2a

Parallel directories take their structure from one unique parent

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

4a9d2a

In some circumstances, parallel directories may be created removing

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

4a9d2a

Another example of parallel directory is the documentation structure

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

4a9d2a

Othertimes, parallel directories may add uncommon information to their

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

4a9d2a

When one parent directory changes, all their related parallel

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

ec5f63
4a9d2a
4a9d2a

3.52.2.5 Syncronizing path information

4a9d2a
4a9d2a

Parallel directories are very useful to keep repository organized but

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

4a9d2a

In such cases, functionalities like manual may confuse

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

4a9d2a

In the specific case of documentation (the manual

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

4a9d2a

There is no immediate way for manual, and similar

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

4a9d2a
Warning

Warning

There is not support for URL reference inside

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

4a9d2a
4a9d2a

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

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

4a9d2a

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

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

4a9d2a
4a9d2a
4a9d2a

3.52.2.6 What is the right place to store it?

4a9d2a
4a9d2a

Occasionly, you may find that new corporate visual identity components

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

4a9d2a

The CentOS Community different free support vains (see:

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

4a9d2a

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

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

4a9d2a

When building parent directory structures, you may find that reaching

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

4a9d2a

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

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

4a9d2a
centos-art manual --read=turnk/
4a9d2a
centos-art manual --read=turnk/Identity/
4a9d2a
centos-art manual --read=turnk/Identity/Themes/
4a9d2a
centos-art manual --read=turnk/Identity/Themes/Motifs/
4a9d2a
centos-art manual --read=turnk/Identity/Themes/Motifs/TreeFlower/
ec5f63
4a9d2a

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

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

4a9d2a
4a9d2a
4a9d2a

3.52.3 Usage

4a9d2a
4a9d2a
4a9d2a
centos-art path --copy='SRC' --to='DST'
4a9d2a
4a9d2a

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

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

4a9d2a
4a9d2a
centos-art path --delete='SRC'
4a9d2a
4a9d2a

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

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

4a9d2a
4a9d2a
4a9d2a
ec5f63
4a9d2a
008ee0

3.52.4 See also

bc3531
035049
4a9d2a
3.47 trunk/Scripts/Bash  
035049
4a9d2a
3.48 trunk/Scripts/Bash/Functions  
035049
035049
4c79b5
2c8180
4c79b5
4a9d2a
[ < ]
4a9d2a
[ > ]
4c79b5
   
4c79b5
[ << ]
4a9d2a
[ Up ]
acd47b
[ >> ]
4c79b5
4c79b5

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

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