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

4c79b5
4c79b5
<html>
09d4f2
09d4f2
09d4f2
The CentOS Artwork Repository exists to organize and automate The
09d4f2
CentOS Project corporate visual identity (, to
09d4f2
start on).
4c79b5
6c4982
Copyright C 2009, 2010 Alain Reguera Delgado. All rights
4c79b5
reserved.
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
-->
684dc0
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>
035049
<title>CentOS Artwork Repository: 3.41 trunk/Scripts/Bash/Functions/Path</title>
4c79b5
035049
<meta name="description" content="CentOS Artwork Repository: 3.41 trunk/Scripts/Bash/Functions/Path">
035049
<meta name="keywords" content="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
035049
[ < ]
035049
[ > ]
4c79b5
   
4c79b5
[ << ]
4c79b5
[ Up ]
035049
[ >> ]
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
[Top]
4c79b5
[Contents]
035049
[Index]
4c79b5
[ ? ]
4c79b5
035049
035049
035049

3.41 trunk/Scripts/Bash/Functions/Path

b0644c
b0644c
035049
e37211

3.41.1 Goals

e37211
035049

This section exists to organize files related to path

035049
functiontionality of <tt>`centos-art.sh'</tt> script.  The path
035049
functionality of <tt>`centos-art.sh'</tt> script standardizes movement,
035049
syncronization, branching, tagging, and general file maintainance
035049
inside the repository. 
035049

63f275
035049
e37211

3.41.2 Description

e37211
035049

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

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

035049
035049
035049

3.41.2.1 Repository layout

035049
035049

The repository layout describes organization of files and directories

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

035049

As convenction, inside CentOS Artwork Repository, we organize files

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

035049
035049

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

035049
035049

Figure 3.10: The CentOS Artwork Repository layout.

035049
035049

035049

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

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

035049

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

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

035049

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

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

035049

The CentOS Artwork Repository layout is firmly grounded on a

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

035049
035049
035049

3.41.2.2 Repository name convenctions

035049
035049

Repository name convenctions help us to maintain consistency of names

035049
inside the repository.
035049

035049

Repository name convenctions are applied to files and directories

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

035049

Repository name convenctions are implemented inside the

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

035049
035049
035049

3.41.2.3 Repository work flow

035049
035049

Repository work flow describes the steps and time intervals used to

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

035049

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

035049
cycle. 
035049

035049

Initially, we start working themes on their trunk development line

035049
(e.g., <tt>`trunk/Identity/Themes/Motifs/TreeFlower/'</tt>), here we
035049
design background images and propagate them to different visual
035049
manifestations using one theme's model as reference.
035049

035049

Later, when the theme is considered "ready" for implementation (i.e.

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

035049

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

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

035049

Both branches and tags, inside CentOS Artwork Repository, use

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

035049
035049

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

035049
035049

Figure 3.11: Name convention for tags and branches creation.

035049
035049

035049

As proposition, it would be convenient not to freeze trunk development

035049
lines using tags or anything else.  If you think you need to freeze a
035049
trunk development line, create a branch for it and then freeze that
035049
branch instead.  
035049

035049

The trunk development line may introduce problems we cannot see

035049
immediatly. Certainly, the high changable nature of trunk development
035049
line complicates finding and fixing such problems. On the other hand,
035049
the branched development lines provides a less changable area where
035049
only small fixes/corrections are commited up to repository. 
035049

035049

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

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

035049

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

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

035049

Before releasing a new major release of CentOS distribution you can

035049
create a branch for one of several theme development lines available
035049
inside the CentOS Artwork Repository, perform quality assurance on it,
035049
and later, freeze that branch using tags. Once a the theme branch has
035049
been frozen (under <tt>`tags/'</tt> directory), CentOS Packagers (the
035049
persons who build CentOS distribution) can use that frozen branch as
035049
source location to fulfill CentOS distribution artwork needs.
035049

035049
035049
035049

3.41.2.4 Parallel directories

035049
035049

Inside CentOS Artwork Repository, parallel directories are simple

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

035049

Parallel directories take their structure from one unique parent

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

035049

In some circumstances, parallel directories may be created removing

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

035049

Another example where parallel directory removes the uncommon path

035049
information is when we use the help functionality. This time,
035049
<tt>`centos-art.sh'</tt> script uses parallel directory information
035049
(without uncommon directory levels) to build the documentation entry
035049
required by Texinfo to store documentation entries inside the
035049
repository.
035049

035049
035049

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

035049
035049

Figure 3.12: Parallel directories removing uncommon information.

035049
035049

035049

Othertimes, parallel directories may add uncommon information to their

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

035049
035049

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

035049
035049

Figure 3.13: Parallel directories adding uncommon information.

035049
035049

035049

When one parent directory changes, all their related parallel

035049
directories need to be changed too. This is required in order for
035049
parallel directories to match the new parent directory structure.  In
035049
the other hand, parallel directories should never be modified by no
035049
reason but to satisfy their parent directory structure. Liberal change
035049
of parallel directories may suppress the conceptual idea they were
035049
initially created for.
035049

035049
035049

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

035049
035049

Figure 3.14: Wrong construction of parallel directories.

035049
035049

035049
035049
035049

3.41.2.5 Syncronizing path information

035049
035049

Creating parallel directories is very useful to keep repository

035049
organized. But, what would happen to functionalities like help
035049
(WARNING: The <samp>`trunk Scripts Bash Functions Help'</samp> documentation entry no longer exists.) that rely on parent
035049
directory structures to create documentation entries (using parallel
035049
directory structures) if one of those parent directory structures
035049
suddenly changes after the documentation entry has been already
035049
created for it? 
035049

035049

Well, at this point, functionalities like help may confuse

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

035049

In the specific case of documentation (the help functionality),

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

035049

There is no way for help, and similar functionalities that use

035049
parent directories as reference, to know when and how directory
035049
movements take place inside the repository. Such information is
035049
available only when movement actions, like thoses achived by
035049
rm or mv commands, take place inside the
035049
repository. So, is there, at the moment of moving files, when we need
035049
to syncronize parallel directories with their unique parent directory
035049
structure.
035049

035049

Syncronizing parallel directories with their respecitive parent

035049
directory implies moving files inside the repository, i.e. we need to,
035049
firstly, rebuild the path information for each parallel directory
035049
inside the repository, using the current path of its parent directory
035049
as reference, and later, use the new path information to move each old
035049
parallel directory from its old location to its new location based on
035049
an updated path information.
035049

035049

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

035049
file movements inside the repository are considered repository
035049
changes. In order for these repository changes to be versioned, we
035049
need to, firstly, add changes related files into version control
035049
system, and later, use commands from the version control system to
035049
move those files already versioned.  This configuration makes possible
035049
for everyone to know about changes details inside the repository; and
035049
if needed, revert or update them back to a previous revision.
035049

035049

Finally, once all file corrections have been already made, the

035049
syncronization action takes care of updating path references inside
035049
related files. Updating path references inside related files is
035049
specially important for documentation files where documentation nodes
035049
are built using repository path information as reference.
035049

b0644c
035049
035049

3.41.2.6 What is the right location to store it?

035049
035049

Occasionly, you may find that new corporate visual identity components

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

035049

The CentOS Community (http://wiki.centos.org/GettingHelp) is the

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

035049

When looking the correct place to store new files, to bear in mind the

035049
corporate visual identity structure used inside the CentOS Artwork
035049
Repository (see section trunk/Identity) would be probaly the best advice
035049
we could offer to you, the rest is just matter of choosing appropriate
035049
names.  To illustrate this desition process let's consider the
035049
<tt>`trunk/Identity/Themes/Motifs/TreeFlower/Distro/'</tt> directory as
035049
example. It is the main development line of CentOS distribution visual
035049
manifestation, using TreeFlower's artistic motif, inside themes of
035049
CentOS corporate visual identity. 
035049

035049

When building parent directory structures, you may find that reaching

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

035049

For example, the

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

035049
centos-art help --read=turnk/
035049
centos-art help --read=turnk/Identity/
035049
centos-art help --read=turnk/Identity/Themes/
035049
centos-art help --read=turnk/Identity/Themes/Motifs/
035049
centos-art help --read=turnk/Identity/Themes/Motifs/TreeFlower/
035049
centos-art help --read=turnk/Identity/Themes/Motifs/TreeFlower/Distro/
035049
035049

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

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

63f275
cbf5a9
273af8

3.41.3 Usage

273af8
035049
035049
centos-art path --copy=SRC --to=DST
035049

Use this command to duplicate <tt>`SRC'</tt> in working copy,

035049
remembering history. In this command, <tt>`SRC'</tt> and
035049
<tt>`DST'</tt> can each be either a working copy (WC) path or
035049
URL:
035049

035049
035049
<samp>`WC -> WC'</samp>
035049

Copy and schedule for addition (with history).

035049

035049
035049
<samp>`WC -> URL'</samp>
035049

Immediately commit a copy of WC to URL.

035049

035049
035049
<samp>`URL -> WC'</samp>
035049

Check out URL into WC, schedule for addition.

035049

035049
035049
<samp>`URL -> URL'</samp>
035049

Complete server-side copy; used to branch and tag.

035049

035049
035049
035049

This command is an interface for Subversion's copy command.

035049
Options related to Subversion's copy command can be passed
035049
from third argument on. For example to specify a log message use the
035049
<samp>`--message'</samp> option as follow:
035049

035049
centos-art path --copy=URL/SRC --to=URL/DST --message 'Copy url/src to url/dst'
035049
035049

For more information on Subversion's copy functionality,

035049
run the command: svn help copy | less.
035049

035049
035049
centos-art path --move=SRC --to=DST
035049

Move and/or rename something in working copy or repository. In this

035049
command, SRC and DST can both be working copy (WC) paths or URLs: 
035049

035049
035049
<samp>`WC -> WC'</samp>
035049

Move and schedule for addition (with history).

035049

035049
<samp>`URL -> URL'</samp>
035049

Complete server-side rename.

035049

035049
035049
035049

This command is an interface for Subversion's move command.

035049
Options related to Subversion's move command can be passed
035049
from third argument on. For example to specify a log message use the
035049
<samp>`--message'</samp> option as follow:
035049

035049
centos-art path --move=URL/SRC --to=URL/DST --message 'Move url/src to url/dst'
035049
035049

For more information on Subversion's move functionality,

035049
run the command: svn help move | less.
035049

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

Use this command to remove files and directories from version control.

035049
In this command, <tt>`SRC'</tt> can be a working copy (WC) path or URL. 
035049

035049
035049
<samp>`WC'</samp>
035049

Each item specified by a PATH is scheduled for deletion upon the next

035049
commit.  Files, and directories that have not been committed, are
035049
immediately removed from the working copy.  PATHs that are, or
035049
contain, unversioned or modified items will not be removed unless the
035049
<samp>`--force'</samp> option is given.
035049

035049
035049
<samp>`URL'</samp>
035049

Each item specified by a URL is deleted from the repository via an

035049
immediate commit.
035049

035049
035049
035049

This command is an interface for Subversion's delete

035049
command. Options related to Subversion's delete can be
035049
passed from third argument on. For example to specify a log message
035049
use the <samp>`--message'</samp> as follow:
035049

035049
centos-art path --delete='URL' --message 'Delete url.'
035049
035049

For more information on Subversion's delete functionality,

035049
run the command: svn help delete | less.
035049

035049
035049
centos-art path --sync='SRC'
035049

Use this command to syncronize path information inside working copy.

035049
This command is automatically used after moving or renaming parent
035049
directories.  In this command, <tt>`SRC'</tt> is a working copy path
035049
inside <tt>`trunk/Identity/'</tt> location, considered the parent
035049
directory you want to syncronize path information for.
035049

035049
273af8
273af8
3d6160
54264c

3.41.4 See also

4c79b5
63f275
035049
3.36 trunk/Scripts/Bash  
035049
035049
3.37 trunk/Scripts/Bash/Functions  
63f275
63f275
4c79b5
4c79b5
4c79b5
3d6160
[ < ]
3d6160
[ > ]
4c79b5
   
4c79b5
[ << ]
035049
[ Up ]
035049
[ >> ]
4c79b5
4c79b5

4c79b5
 <font size="-1">
684dc0
  This document was generated on December, 4 2010 using texi2html 1.76.
4c79b5
 </font>
4c79b5
 
4c79b5
4c79b5

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