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

3.54 trunk/Scripts/Bash/Functions/Path

7fa1fb
7fa1fb
7fa1fb
7fa1fb

3.54.1 Goals

7fa1fb
7fa1fb

This section exists to organize files related to path

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

7fa1fb
7fa1fb
7fa1fb

3.54.2 Description

7fa1fb
7fa1fb

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

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

7fa1fb
7fa1fb
7fa1fb

3.54.2.1 Repository layout

7fa1fb
7fa1fb

The repository layout describes organization of files and directories

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

7fa1fb

As convenction, inside CentOS Artwork Repository, we organize files

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

7fa1fb

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

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

7fa1fb

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

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

7fa1fb

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

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

7fa1fb

The CentOS Artwork Repository layout is firmly grounded on a

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

7fa1fb
7fa1fb
7fa1fb

3.54.2.2 Repository name convenctions

7fa1fb
7fa1fb

Repository name convenctions help us to maintain consistency of names

7fa1fb
inside the repository.
7fa1fb

7fa1fb

Repository name convenctions are applied to files and directories

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

7fa1fb

Repository name convenctions are implemented inside the

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

7fa1fb
7fa1fb
7fa1fb

3.54.2.3 Repository work flow

7fa1fb
7fa1fb

Repository work flow describes the steps and time intervals used to

7fa1fb
produce CentOS corporate visual identity inside CentOS Artwork
7fa1fb
Repository.  
7fa1fb

7fa1fb

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

7fa1fb
cycle. 
7fa1fb

7fa1fb

Initially, we start working themes on their trunk development line

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

7fa1fb

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

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

7fa1fb

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

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

7fa1fb

Both branches and tags, inside CentOS Artwork Repository, use

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

7fa1fb
Convenction

Convenction

Do not freeze trunk development lines using tags

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

b0644c
7fa1fb

The trunk development line may introduce problems we cannot see

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

7fa1fb

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

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

7fa1fb

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

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

7fa1fb

Before releasing a new major release of CentOS distribution we create

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

166893
7fa1fb
7fa1fb

3.54.2.4 Parallel directories

7fa1fb
7fa1fb

Inside CentOS Artwork Repository, parallel directories are simple

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

7fa1fb

Parallel directories take their structure from one unique parent

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

7fa1fb

In some circumstances, parallel directories may be created removing

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

7fa1fb

Another example of parallel directory is the documentation structure

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

7fa1fb

Othertimes, parallel directories may add uncommon information to their

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

7fa1fb

When one parent directory changes, all their related parallel

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

2b5e61
7fa1fb
7fa1fb

3.54.2.5 Syncronizing path information

7fa1fb
7fa1fb

Parallel directories are very useful to keep repository organized but

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

7fa1fb

In such cases, functionalities like manual may confuse

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

7fa1fb

In the specific case of documentation (the manual

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

7fa1fb

There is no immediate way for manual, and similar

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

7fa1fb
Warning

Warning

There is not support for URL reference inside

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

166893
7fa1fb

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

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

7fa1fb

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

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

2b5e61
7fa1fb
7fa1fb

3.54.2.6 What is the right place to store it?

7fa1fb
7fa1fb

Occasionly, you may find that new corporate visual identity components

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

7fa1fb

The CentOS Community different free support vains (see:

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

7fa1fb

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

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

7fa1fb

When building parent directory structures, you may find that reaching

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

7fa1fb

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

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

7fa1fb
centos-art manual --read=turnk/
7fa1fb
centos-art manual --read=turnk/Identity/
7fa1fb
centos-art manual --read=turnk/Identity/Themes/
7fa1fb
centos-art manual --read=turnk/Identity/Themes/Motifs/
7fa1fb
centos-art manual --read=turnk/Identity/Themes/Motifs/TreeFlower/
2b5e61
7fa1fb

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

7fa1fb
change the location we used above by the one you are trying to know
7fa1fb
concepts for.
2b5e61

166893
7fa1fb
7fa1fb

3.54.3 Usage

7bbd70
2b5e61
7fa1fb
centos-art path --copy='SRC' --to='DST'
2b5e61
7fa1fb

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

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

2b5e61
7fa1fb
centos-art path --delete='SRC'
2b5e61
7fa1fb

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

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

7fa1fb
2b5e61
2b5e61
7fa1fb
7fa1fb
7fa1fb

3.54.4 See also

300762
ec5f63
7fa1fb
3.49 trunk/Scripts/Bash  
7fa1fb
7fa1fb
3.50 trunk/Scripts/Bash/Functions  
ec5f63
ec5f63
ec5f63
300762
300762
7fa1fb
[ < ]
7fa1fb
[ > ]
300762
   
300762
[ << ]
7fa1fb
[ Up ]
7fa1fb
[ >> ]
300762
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>