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

3.41 trunk/Scripts/Bash/Functions/Path

c9b54d
54264c
54b5a5
6aec21

3.41.1 Goals

6aec21
63f275

This section exists to organize files related to path

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

b8013f
54b5a5
008ee0

3.41.2 Description

c9b54d
63f275

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

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

b8013f
008ee0
63f275

3.41.2.1 Repository layout

b8013f
63f275

The repository layout describes organization of files and directories

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

63f275

As convenction, inside CentOS Artwork Repository, we organize files

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

63f275
63f275

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

b8013f
63f275

Figure 3.10: The CentOS Artwork Repository layout.

63f275
63f275

63f275

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

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

63f275

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

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

63f275

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

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

63f275

The CentOS Artwork Repository layout is firmly grounded on a

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

b8013f
008ee0
63f275

3.41.2.2 Repository name convenctions

63f275
63f275

Repository name convenctions help us to maintain consistency of names

63f275
inside the repository.
63f275

63f275

Repository name convenctions are applied to files and directories

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

63f275

Repository name convenctions are implemented inside the

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

63f275
63f275
63f275

3.41.2.3 Repository work flow

63f275
63f275

Repository work flow describes the steps and time intervals used to

63f275
produce CentOS corporate visual identity inside CentOS Artwork
63f275
Repository.  
63f275

63f275

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

63f275
cycle. 
63f275

63f275

Initially, we start working themes on their trunk development line

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

63f275

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

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

63f275

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

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

63f275

Both branches and tags, inside CentOS Artwork Repository, use

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

63f275
63f275

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

63f275
63f275

Figure 3.11: Name convention for tags and branches creation.

63f275
63f275

63f275

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

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

63f275

The trunk development line may introduce problems we cannot see

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

63f275

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

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

63f275

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

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

63f275

Before releasing a new major release of CentOS distribution you can

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

63f275
63f275
63f275

3.41.2.4 Parallel directories

63f275
63f275

Inside CentOS Artwork Repository, parallel directories are simple

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

63f275

Parallel directories take their structure from one unique parent

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

63f275

In some circumstances, parallel directories may be created removing

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

63f275

Another example where parallel directory removes the uncommon path

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

63f275
63f275

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

63f275
63f275

Figure 3.12: Parallel directories removing uncommon information.

63f275
63f275

63f275

Othertimes, parallel directories may add uncommon information to their

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

63f275
63f275

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

63f275
63f275

Figure 3.13: Parallel directories adding uncommon information.

63f275
63f275

63f275

When one parent directory changes, all their related parallel

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

63f275
63f275

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

63f275
63f275

Figure 3.14: Wrong construction of parallel directories.

63f275
63f275

63f275
63f275
63f275

3.41.2.5 Syncronizing path information

63f275
63f275

Creating parallel directories is very useful to keep repository

63f275
organized. But, what would happen to functionalities like help
63f275
(see section trunk/Scripts/Bash/Functions/Help) that rely on parent
63f275
directory structures to create documentation entries (using parallel
63f275
directory structures) if one of those parent directory structures
63f275
suddenly changes after the documentation entry has been already
63f275
created for it? 
63f275

63f275

Well, at this point, functionalities like help may confuse

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

63f275

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

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

63f275

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

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

63f275

Syncronizing parallel directories with their respecitive parent

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

63f275

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

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

63f275

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

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

63f275
63f275
63f275

3.41.2.6 What is the right location to store it?

63f275
63f275

Occasionly, you may find that new corporate visual identity components

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

63f275

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

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

63f275

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

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

63f275

When building parent directory structures, you may find that reaching

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

63f275

For example, the

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

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

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

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

63f275
63f275
63f275

3.41.3 Usage

63f275
63f275
63f275
centos-art path --copy=SRC --to=DST
63f275

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

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

63f275
63f275
<samp>`WC -> WC'</samp>
63f275

Copy and schedule for addition (with history).

63f275

63f275
63f275
<samp>`WC -> URL'</samp>
63f275

Immediately commit a copy of WC to URL.

63f275

63f275
63f275
<samp>`URL -> WC'</samp>
63f275

Check out URL into WC, schedule for addition.

63f275

63f275
63f275
<samp>`URL -> URL'</samp>
63f275

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

63f275

63f275
63f275
63f275

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

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

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

For more information on Subversion's copy functionality,

63f275
run the command: svn help copy | less.
63f275

63f275
63f275
centos-art path --move=SRC --to=DST
63f275

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

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

63f275
63f275
<samp>`WC -> WC'</samp>
63f275

Move and schedule for addition (with history).

63f275

63f275
<samp>`URL -> URL'</samp>
63f275

Complete server-side rename.

63f275

63f275
63f275
63f275

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

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

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

For more information on Subversion's move functionality,

63f275
run the command: svn help move | less.
63f275

63f275
63f275
centos-art path --delete='SRC'
63f275

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

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

63f275
63f275
<samp>`WC'</samp>
63f275

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

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

63f275
63f275
<samp>`URL'</samp>
63f275

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

63f275
immediate commit.
63f275

63f275
63f275
63f275

This command is an interface for Subversion's delete

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

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

For more information on Subversion's delete functionality,

63f275
run the command: svn help delete | less.
63f275

63f275
63f275
centos-art path --sync='SRC'
63f275

Use this command to syncronize path information inside working copy.

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

63f275
63f275
63f275
63f275
54264c

3.41.4 See also

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