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

3.41 trunk/Scripts/Bash/Functions/Path

831389
63f275
273af8
60c152

3.41.1 Goals

60c152
273af8

This section exists to organize files related to path

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

273af8
273af8
273af8

3.41.2 Description

273af8
273af8

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

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

273af8
273af8
273af8

3.41.2.1 Repository layout

273af8
273af8

The repository layout describes organization of files and directories

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

273af8

As convenction, inside CentOS Artwork Repository, we organize files

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

273af8
273af8

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

273af8
273af8

Figure 3.10: The CentOS Artwork Repository layout.

273af8
273af8

273af8

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

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

273af8

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

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

273af8

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

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

273af8

The CentOS Artwork Repository layout is firmly grounded on a

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

831389
273af8
273af8

3.41.2.2 Repository name convenctions

273af8
273af8

Repository name convenctions help us to maintain consistency of names

273af8
inside the repository.
273af8

273af8

Repository name convenctions are applied to files and directories

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

273af8

Repository name convenctions are implemented inside the

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

63f275
cbf5a9
273af8

3.41.2.3 Repository work flow

e68a7a
273af8

Repository work flow describes the steps and time intervals used to

273af8
produce CentOS corporate visual identity inside CentOS Artwork
273af8
Repository.  
273af8

273af8

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

273af8
cycle. 
273af8

273af8

Initially, we start working themes on their trunk development line

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

273af8

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

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

273af8

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

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

273af8

Both branches and tags, inside CentOS Artwork Repository, use

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

273af8
273af8

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

63f275
273af8

Figure 3.11: Name convention for tags and branches creation.

273af8
273af8

273af8

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

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

273af8

The trunk development line may introduce problems we cannot see

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

273af8

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

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

273af8

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

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

273af8

Before releasing a new major release of CentOS distribution you can

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

63f275
cbf5a9
273af8

3.41.2.4 Parallel directories

273af8
273af8

Inside CentOS Artwork Repository, parallel directories are simple

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

273af8

Parallel directories take their structure from one unique parent

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

273af8

In some circumstances, parallel directories may be created removing

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

273af8

Another example where parallel directory removes the uncommon path

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

273af8
273af8

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

273af8
273af8

Figure 3.12: Parallel directories removing uncommon information.

273af8
273af8

273af8

Othertimes, parallel directories may add uncommon information to their

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

273af8
273af8

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

831389
273af8

Figure 3.13: Parallel directories adding uncommon information.

273af8
273af8

273af8

When one parent directory changes, all their related parallel

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

273af8
273af8

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

831389
273af8

Figure 3.14: Wrong construction of parallel directories.

273af8
273af8

831389
60c152
273af8

3.41.2.5 Syncronizing path information

273af8
273af8

Creating parallel directories is very useful to keep repository

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

273af8

Well, at this point, functionalities like help may confuse

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

273af8

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

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

273af8

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

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

273af8

Syncronizing parallel directories with their respecitive parent

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

273af8

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

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

273af8

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

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

273af8
273af8
273af8

3.41.2.6 What is the right location to store it?

273af8
273af8

Occasionly, you may find that new corporate visual identity components

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

273af8

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

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

273af8

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

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

273af8

When building parent directory structures, you may find that reaching

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

273af8

For example, the

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

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

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

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

273af8
273af8
273af8

3.41.3 Usage

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

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

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

273af8
273af8
<samp>`WC -> WC'</samp>
273af8

Copy and schedule for addition (with history).

273af8

273af8
273af8
<samp>`WC -> URL'</samp>
273af8

Immediately commit a copy of WC to URL.

273af8

273af8
273af8
<samp>`URL -> WC'</samp>
273af8

Check out URL into WC, schedule for addition.

273af8

273af8
273af8
<samp>`URL -> URL'</samp>
273af8

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

273af8

273af8
273af8
273af8

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

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

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

For more information on Subversion's copy functionality,

273af8
run the command: svn help copy | less.
273af8

273af8
273af8
centos-art path --move=SRC --to=DST
273af8

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

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

273af8
273af8
<samp>`WC -> WC'</samp>
273af8

Move and schedule for addition (with history).

273af8

273af8
<samp>`URL -> URL'</samp>
273af8

Complete server-side rename.

273af8

273af8
273af8
273af8

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

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

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

For more information on Subversion's move functionality,

273af8
run the command: svn help move | less.
273af8

273af8
273af8
centos-art path --delete='SRC'
273af8

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

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

273af8
273af8
<samp>`WC'</samp>
273af8

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

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

273af8
273af8
<samp>`URL'</samp>
273af8

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

273af8
immediate commit.
273af8

273af8
273af8
273af8

This command is an interface for Subversion's delete

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

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

For more information on Subversion's delete functionality,

273af8
run the command: svn help delete | less.
273af8

273af8
273af8
centos-art path --sync='SRC'
273af8

Use this command to syncronize path information inside working copy.

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

273af8
273af8
273af8
273af8
54264c

3.41.4 See also

4c79b5
63f275
273af8
3.36 trunk/Scripts/Bash  
273af8
273af8
3.37 trunk/Scripts/Bash/Functions  
63f275
63f275
4c79b5
4c79b5
4c79b5
273af8
[ < ]
273af8
[ > ]
4c79b5
   
4c79b5
[ << ]
273af8
[ Up ]
273af8
[ >> ]
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>