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

3.42 trunk/Scripts/Bash/Functions/Path

60c152
60c152
49b888
273af8

3.42.1 Goals

273af8
49b888

This section exists to organize files related to path

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

3d6160
49b888
3d6160

3.42.2 Description

3d6160
49b888

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

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

49b888
49b888
49b888

3.42.2.1 Repository layout

49b888
49b888

The repository layout describes organization of files and directories

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

49b888

As convenction, inside CentOS Artwork Repository, we organize files

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

49b888
49b888

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

49b888
49b888

Figure 3.10: The CentOS Artwork Repository layout.

49b888
49b888

49b888

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

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

49b888

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

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

49b888

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

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

49b888

The CentOS Artwork Repository layout is firmly grounded on a

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

49b888
49b888
49b888

3.42.2.2 Repository name convenctions

49b888
49b888

Repository name convenctions help us to maintain consistency of names

49b888
inside the repository.
49b888

49b888

Repository name convenctions are applied to files and directories

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

49b888

Repository name convenctions are implemented inside the

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

49b888
49b888
49b888

3.42.2.3 Repository work flow

49b888
49b888

Repository work flow describes the steps and time intervals used to

49b888
produce CentOS corporate visual identity inside CentOS Artwork
49b888
Repository.  
49b888

49b888

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

49b888
cycle. 
49b888

49b888

Initially, we start working themes on their trunk development line

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

49b888

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

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

49b888

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

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

49b888

Both branches and tags, inside CentOS Artwork Repository, use

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

49b888
49b888

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

49b888
49b888

Figure 3.11: Name convention for tags and branches creation.

49b888
49b888

49b888

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

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

49b888

The trunk development line may introduce problems we cannot see

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

49b888

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

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

49b888

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

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

49b888

Before releasing a new major release of CentOS distribution you can

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

49b888
49b888
49b888

3.42.2.4 Parallel directories

49b888
49b888

Inside CentOS Artwork Repository, parallel directories are simple

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

49b888

Parallel directories take their structure from one unique parent

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

49b888

In some circumstances, parallel directories may be created removing

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

49b888

Another example where parallel directory removes the uncommon path

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

49b888
49b888

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

49b888
49b888

Figure 3.12: Parallel directories removing uncommon information.

49b888
49b888

49b888

Othertimes, parallel directories may add uncommon information to their

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

49b888
49b888

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

49b888
49b888

Figure 3.13: Parallel directories adding uncommon information.

49b888
49b888

49b888

When one parent directory changes, all their related parallel

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

49b888
49b888

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

49b888
49b888

Figure 3.14: Wrong construction of parallel directories.

49b888
49b888

49b888
49b888
49b888

3.42.2.5 Syncronizing path information

49b888
49b888

Creating parallel directories is very useful to keep repository

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

49b888

Well, at this point, functionalities like help may confuse

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

49b888

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

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

49b888

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

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

49b888

Syncronizing parallel directories with their respecitive parent

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

49b888

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

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

49b888

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

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

e37211
49b888
49b888

3.42.2.6 What is the right location to store it?

49b888
49b888

Occasionly, you may find that new corporate visual identity components

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

49b888

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

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

49b888

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

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

49b888

When building parent directory structures, you may find that reaching

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

49b888

For example, the

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

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

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

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

e37211
035049
e37211

3.42.3 Usage

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

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

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

49b888
49b888
<samp>`WC -> WC'</samp>
49b888

Copy and schedule for addition (with history).

49b888

49b888
49b888
<samp>`WC -> URL'</samp>
49b888

Immediately commit a copy of WC to URL.

49b888

49b888
49b888
<samp>`URL -> WC'</samp>
49b888

Check out URL into WC, schedule for addition.

49b888

49b888
49b888
<samp>`URL -> URL'</samp>
49b888

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

49b888

49b888
49b888
49b888

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

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

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

For more information on Subversion's copy functionality,

49b888
run the command: svn help copy | less.
49b888

49b888
49b888
centos-art path --move=SRC --to=DST
49b888

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

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

49b888
49b888
<samp>`WC -> WC'</samp>
49b888

Move and schedule for addition (with history).

49b888

49b888
<samp>`URL -> URL'</samp>
49b888

Complete server-side rename.

49b888

49b888
49b888
49b888

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

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

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

For more information on Subversion's move functionality,

49b888
run the command: svn help move | less.
49b888

49b888
49b888
centos-art path --delete='SRC'
49b888

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

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

49b888
49b888
<samp>`WC'</samp>
49b888

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

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

49b888
49b888
<samp>`URL'</samp>
49b888

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

49b888
immediate commit.
49b888

49b888
49b888
49b888

This command is an interface for Subversion's delete

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

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

For more information on Subversion's delete functionality,

49b888
run the command: svn help delete | less.
49b888

49b888
49b888
centos-art path --sync='SRC'
49b888

Use this command to syncronize path information inside working copy.

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

49b888
e37211
e37211
035049
54264c

3.42.4 See also

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

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

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