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

4c79b5
4c79b5
<html>
6414c4
09d4f2
6414c4
Copyright C 2009, 2010, 2011  Alain Reguera Delgado
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
-->
6414c4
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>
3207df
<title>The CentOS Artwork Repository: 3.41 trunk/Scripts/Bash/Functions/Path</title>
4c79b5
3207df
<meta name="description" content="The CentOS Artwork Repository: 3.41 trunk/Scripts/Bash/Functions/Path">
3207df
<meta name="keywords" content="The 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
01b527
[ < ]
01b527
[ > ]
4c79b5
   
4c79b5
[ << ]
4c79b5
[ Up ]
3207df
[ >> ]
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
[Top]
4c79b5
[Contents]
3207df
[Index]
4c79b5
[ ? ]
4c79b5
3207df
01b527
3207df

3.41 trunk/Scripts/Bash/Functions/Path

b0644c
b0644c
01b527
e37211

3.41.1 Goals

e37211
3207df

This section exists to organize files related to path

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

63f275
01b527
e37211

3.41.2 Description

e37211
3207df

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

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

749e81
6414c4
3207df

3.41.2.1 Repository layout

749e81
3207df

The repository layout describes organization of files and directories

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

3207df

As convenction, inside CentOS Artwork Repository, we organize files

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

3207df
3207df

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

749e81
3207df

Figure 3.15: The CentOS Artwork Repository layout.

3207df
3207df

3207df

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

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

3207df

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

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

3207df

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

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

3207df

The CentOS Artwork Repository layout is firmly grounded on a

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

749e81
6414c4
3207df

3.41.2.2 Repository name convenctions

3207df
3207df

Repository name convenctions help us to maintain consistency of names

3207df
inside the repository.
3207df

3207df

Repository name convenctions are applied to files and directories

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

3207df

Repository name convenctions are implemented inside the

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

3207df
3207df
3207df

3.41.2.3 Repository work flow

3207df
3207df

Repository work flow describes the steps and time intervals used to

3207df
produce CentOS corporate visual identity inside CentOS Artwork
3207df
Repository.  
3207df

3207df

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

3207df
cycle. 
3207df

3207df

Initially, we start working themes on their trunk development line

3207df
(e.g., <tt>`trunk/Identity/Themes/Motifs/TreeFlower/'</tt>), here we
3207df
organize information that cannot be produced automatically (i.e.,
3207df
background images, concepts, color information, screenshots, etc.).
3207df

3207df

Later, when theme trunk development line is considered "ready" for

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

3207df

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

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

3207df

Both branches and tags, inside CentOS Artwork Repository, use

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

3207df
3207df

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

3207df
3207df

Figure 3.16: Name convention for tags and branches creation.

3207df
3207df

3207df
Convenction

Convenction

Do not freeze trunk development lines using tags

3207df
directly.  If you think you need to freeze a trunk development line,
3207df
create a branch for it and then freeze that branch instead.
3207df

3207df
3207df

The trunk development line may introduce problems we cannot see

3207df
immediatly. Certainly, the high changable nature of trunk development
3207df
line complicates finding and fixing such problems. On the other hand,
3207df
the branched development lines provide a more predictable area where
3207df
only fixes/corrections to current content are commited up to
3207df
repository. 
3207df

3207df

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

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

3207df

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

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

3207df

Before releasing a new major release of CentOS distribution we create

3207df
a branch for one of several theme development lines available inside
3207df
the CentOS Artwork Repository, perform quality assurance on it, and
3207df
later, freeze that branch using tags. Once a the theme branch has been
3207df
frozen (under <tt>`tags/'</tt> directory), CentOS Packagers (the persons
3207df
whom build CentOS distribution) can use that frozen branch as source
3207df
location to fulfill CentOS distribution artwork needs. The same
3207df
applies to CentOS Webmasters (the persons whom build CentOS websites),
3207df
and any other visual manifestation required by the project.
3207df

3207df
3207df
3207df

3.41.2.4 Parallel directories

3207df
3207df

Inside CentOS Artwork Repository, parallel directories are simple

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

3207df

Parallel directories take their structure from one unique parent

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

3207df

In some circumstances, parallel directories may be created removing

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

3207df

Another example where parallel directory removes the uncommon path

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

3207df
3207df

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

3207df
3207df

Figure 3.17: Parallel directories removing uncommon information.

3207df
3207df

3207df

Othertimes, parallel directories may add uncommon information to their

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

3207df
3207df

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

3207df
3207df

Figure 3.18: Parallel directories adding uncommon information.

3207df
3207df

3207df

When one parent directory changes, all their related parallel

3207df
directories need to be changed too. This is required in order for
3207df
parallel directories to retain their relation with the parent
3207df
directory structure.  In the other hand, parallel directories should
3207df
never be modified under no reason but to satisfy the relation to their
3207df
parent directory structure.  Liberal change of parallel directories
3207df
may suppresses the conceptual idea they were initially created for;
3207df
and certainly, things may stop working the way they should do.
3207df

3207df
3207df

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

3207df
3207df

Figure 3.19: Wrong construction of parallel directories.

3207df
3207df

3207df
3207df
3207df

3.41.2.5 Syncronizing path information

3207df
3207df

Creating parallel directories is very useful to keep repository

3207df
organized but introduce some complications.  For instance, consider
3207df
what would happen to functionalities like manual (<samp>`trunk
3207df
Scripts Bash Functions Manual'</samp>) that rely on parent directory
3207df
structures to create documentation entries (using parallel directory
3207df
structures) if one of those parent directory structures suddenly
3207df
changes after the documentation entry has been already created for it? 
3207df

3207df

If that is the case, functionalities like manual may confuse

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

3207df

In the specific case of documentation (the manual

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

3207df

There is no way for manual, and similar functionalities that

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

3207df

Syncronizing parallel directories with their respecitive parent

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

3207df
Warning

Warning

Even Subversion supports URL to refere sources and

3207df
destinations of resources inside the central repository, the
3207df
<tt>`centos-art.sh'</tt> script does not.  The <tt>`centos-art.sh'</tt> script
3207df
is designed to work inside working copies only.
3207df

3207df
3207df

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

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

3207df

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

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

3207df
3207df
3207df

3.41.2.6 What is the right place to store it?

3207df
3207df

Occasionly, you may find that new corporate visual identity components

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

3207df

The CentOS Community different free support vains (see:

3207df
http://wiki.centos.org/GettingHelp) are the best place to find
3207df
answers to your question, but going there with hands empty is not good
3207df
idea. It may give the impression you don't really care about. Instead,
3207df
consider the following suggestions to find your own comprehension and
3207df
so, make your propositions based on it.
3207df

3207df

When we are looking for the correct place to store new files, to bear

3207df
in mind the corporate visual identity structure used inside the CentOS
3207df
Artwork Repository (see section trunk/Identity) would be probaly the best
3207df
advice we could offer, the rest is just matter of choosing appropriate
3207df
names.  To illustrate this desition process let's consider the
3207df
<tt>`trunk/Identity/Themes/Motifs/TreeFlower'</tt> directory as
3207df
example. It is the trunk development line of TreeFlower's artistic
3207df
motif. Artistic motifs are considered part of themes, which in turn
3207df
are considered part of CentOS corporate visual identity.
3207df

3207df

When building parent directory structures, you may find that reaching

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

3207df

For example, the <tt>`trunk/Identity/Themes/Motifs/TreeFlower'</tt>

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

3207df
centos-art manual --read=turnk/
3207df
centos-art manual --read=turnk/Identity/
3207df
centos-art manual --read=turnk/Identity/Themes/
3207df
centos-art manual --read=turnk/Identity/Themes/Motifs/
3207df
centos-art manual --read=turnk/Identity/Themes/Motifs/TreeFlower/
3207df
3207df

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

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

3207df
3207df
3207df

3.41.3 Usage

3207df
3207df
3207df
centos-art path --copy=SRC --to=DST
3207df

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

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

3207df
3207df
<samp>`WC -> WC'</samp>
3207df

Copy and schedule for addition (with history).

3207df

3207df
3207df
<samp>`WC -> URL (Not supported)'</samp>
3207df

Immediately commit a copy of WC to URL.

3207df

3207df
3207df
<samp>`URL -> WC (Not supported)'</samp>
3207df

Check out URL into WC, schedule for addition.

3207df

3207df
3207df
<samp>`URL -> URL (Not supported)'</samp>
3207df

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

3207df

3207df
3207df
3207df
3207df
centos-art path --move=SRC --to=DST
3207df
3207df
<samp>`WC -> WC'</samp>
3207df

Move and schedule for addition (with history).

3207df

3207df
<samp>`URL -> URL (Not supported)'</samp>
3207df

Complete server-side rename.

3207df

3207df
3207df
3207df
3207df
centos-art path --delete='SRC'
3207df

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

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

3207df
3207df
<samp>`WC'</samp>
3207df

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

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

3207df
3207df
<samp>`URL (Not supported)'</samp>
3207df

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

3207df
immediate commit.
3207df

3207df
3207df
3207df
3207df
3207df
3207df
54264c

3.41.4 See also

4c79b5
3207df
3207df
3.36 trunk/Scripts/Bash  
3207df
3207df
3.37 trunk/Scripts/Bash/Functions  
3207df
3207df
4c79b5
4c79b5
4c79b5
3207df
[ < ]
3207df
[ > ]
4c79b5
   
4c79b5
[ << ]
01b527
[ Up ]
3207df
[ >> ]
4c79b5
4c79b5

4c79b5
 <font size="-1">
6414c4
  This document was generated on January, 3 2011 using texi2html 1.76.
4c79b5
 </font>
4c79b5
 
4c79b5
4c79b5

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