Blame Manuals/en/Html/Repository/repository_43.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
-->
008ee0
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>
e37211
<title>CentOS Artwork Repository: 3.40 trunk/Scripts/Bash/Functions/Path</title>
4c79b5
e37211
<meta name="description" content="CentOS Artwork Repository: 3.40 trunk/Scripts/Bash/Functions/Path">
e37211
<meta name="keywords" content="CentOS Artwork Repository: 3.40 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
cbf5a9
[ < ]
cbf5a9
[ > ]
4c79b5
   
4c79b5
[ << ]
4c79b5
[ Up ]
e37211
[ >> ]
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
[Top]
4c79b5
[Contents]
e37211
[Index]
4c79b5
[ ? ]
4c79b5
e37211
cbf5a9
e37211

3.40 trunk/Scripts/Bash/Functions/Path

6aec21
008ee0
cbf5a9
63f275

3.40.1 Goals

008ee0
e37211

This section exists to organize files related to path

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

008ee0
cbf5a9
63f275

3.40.2 Description

63f275
e37211

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

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

e68a7a
b0644c
e37211

3.40.2.1 Repository layout

3d6160
e37211

The repository layout describes organization of files and directories

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

e37211

As convenction, inside CentOS Artwork Repository, we organize files

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

e37211
e37211

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

3d6160
e37211

Figure 3.10: The CentOS Artwork Repository layout.

e37211
e37211

e37211

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

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

e37211

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

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

e37211

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

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

e37211

The CentOS Artwork Repository layout is firmly grounded on a

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

3d6160
b0644c
e37211

3.40.2.2 Repository name convenctions

e37211
e37211

Repository name convenctions help us to maintain consistency of names

e37211
inside the repository.
e37211

e37211

Repository name convenctions are applied to files and directories

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

e37211

Repository name convenctions are implemented inside the

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

e37211
e37211
e37211

3.40.2.3 Repository work flow

e37211
e37211

Repository work flow describes the steps and time intervals used to

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

e37211

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

e37211
cycle. 
e37211

e37211

Initially, we start working themes on their trunk development line

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

e37211

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

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

e37211

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

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

e37211

Both branches and tags, inside CentOS Artwork Repository, use

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

e37211
e37211

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

e37211
e37211

Figure 3.11: Name convention for tags and branches creation.

e37211
e37211

e37211

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

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

e37211

The trunk development line may introduce problems we cannot see

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

e37211

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

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

e37211

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

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

e37211

Before releasing a new major release of CentOS distribution you can

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

e37211
e37211
e37211

3.40.2.4 Parallel directories

e37211
e37211

Inside CentOS Artwork Repository, parallel directories are simple

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

e37211

Parallel directories take their structure from one unique parent

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

e37211

In some circumstances, parallel directories may be created removing

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

e37211

Another example where parallel directory removes the uncommon path

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

e37211
e37211

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

e37211
e37211

Figure 3.12: Parallel directories removing uncommon information.

e37211
e37211

e37211

Othertimes, parallel directories may add uncommon information to their

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

e37211
e37211

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

e37211
e37211

Figure 3.13: Parallel directories adding uncommon information.

e37211
e37211

e37211

When one parent directory changes, all their related parallel

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

e37211
e37211

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

e37211
e37211

Figure 3.14: Wrong construction of parallel directories.

e37211
e37211

e37211
e37211
e37211

3.40.2.5 Syncronizing path information

e37211
e37211

Creating parallel directories is very useful to keep repository

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

e37211

Well, at this point, functionalities like help may confuse

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

e37211

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

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

e37211

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

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

e37211

Syncronizing parallel directories with their respecitive parent

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

e37211

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

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

e37211

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

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

e37211
e37211
e37211

3.40.2.6 What is the right location to store it?

e37211
e37211

Occasionly, you may find that new corporate visual identity components

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

e37211

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

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

e37211

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

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

e37211

When building parent directory structures, you may find that reaching

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

e37211

For example, the

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

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

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

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

e37211
e37211
e37211

3.40.3 Usage

e37211
e37211
e37211
centos-art path --copy=SRC --to=DST
e37211

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

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

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

Copy and schedule for addition (with history).

e37211

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

Immediately commit a copy of WC to URL.

e37211

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

Check out URL into WC, schedule for addition.

e37211

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

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

e37211

e37211
e37211
e37211

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

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

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

For more information on Subversion's copy functionality,

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

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

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

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

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

Move and schedule for addition (with history).

e37211

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

Complete server-side rename.

e37211

e37211
e37211
e37211

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

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

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

For more information on Subversion's move functionality,

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

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

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

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

e37211
e37211
<samp>`WC'</samp>
e37211

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

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

e37211
e37211
<samp>`URL'</samp>
e37211

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

e37211
immediate commit.
e37211

e37211
e37211
e37211

This command is an interface for Subversion's delete

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

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

For more information on Subversion's delete functionality,

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

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

Use this command to syncronize path information inside working copy.

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

e37211
e37211
e37211
e37211
3d6160

3.40.4 See also

4c79b5
e37211
e37211
3.36 trunk/Scripts/Bash  
e37211
e37211
3.37 trunk/Scripts/Bash/Functions  
e37211
e37211
4c79b5
4c79b5
4c79b5
e37211
[ < ]
e37211
[ > ]
4c79b5
   
4c79b5
[ << ]
cbf5a9
[ Up ]
e37211
[ >> ]
4c79b5
4c79b5

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

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