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

3.42 trunk/Scripts/Bash/Functions/Path

6414c4
6414c4
6414c4
6414c4

3.42.1 Goals

6414c4
6414c4

This section exists to organize files related to path

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

6414c4
6414c4
6414c4

3.42.2 Description

6414c4
6414c4

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

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

6414c4
6414c4
6414c4

3.42.2.1 Repository layout

6414c4
6414c4

The repository layout describes organization of files and directories

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

6414c4

As convenction, inside CentOS Artwork Repository, we organize files

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

6414c4
6414c4

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

6414c4
6414c4

Figure 3.15: The CentOS Artwork Repository layout.

6414c4
6414c4

6414c4

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

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

6414c4

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

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

6414c4

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

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

6414c4

The CentOS Artwork Repository layout is firmly grounded on a

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

6414c4
6414c4
6414c4

3.42.2.2 Repository name convenctions

6414c4
6414c4

Repository name convenctions help us to maintain consistency of names

6414c4
inside the repository.
6414c4

6414c4

Repository name convenctions are applied to files and directories

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

6414c4

Repository name convenctions are implemented inside the

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

6414c4
6414c4
6414c4

3.42.2.3 Repository work flow

6414c4
6414c4

Repository work flow describes the steps and time intervals used to

6414c4
produce CentOS corporate visual identity inside CentOS Artwork
6414c4
Repository.  
6414c4

6414c4

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

6414c4
cycle. 
6414c4

6414c4

Initially, we start working themes on their trunk development line

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

6414c4

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

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

6414c4

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

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

6414c4

Both branches and tags, inside CentOS Artwork Repository, use

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

6414c4
6414c4

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

6414c4
6414c4

Figure 3.16: Name convention for tags and branches creation.

6414c4
6414c4

6414c4
Convenction

Convenction

Do not freeze trunk development lines using tags

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

6414c4
6414c4

The trunk development line may introduce problems we cannot see

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

6414c4

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

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

6414c4

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

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

6414c4

Before releasing a new major release of CentOS distribution we create

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

6414c4
01b527
6414c4

3.42.2.4 Parallel directories

6414c4
6414c4

Inside CentOS Artwork Repository, parallel directories are simple

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

6414c4

Parallel directories take their structure from one unique parent

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

6414c4

In some circumstances, parallel directories may be created removing

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

6414c4

Another example where parallel directory removes the uncommon path

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

6414c4
6414c4

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

6414c4
6414c4

Figure 3.17: Parallel directories removing uncommon information.

6414c4
6414c4

6414c4

Othertimes, parallel directories may add uncommon information to their

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

6414c4
6414c4

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

0d952c
6414c4

Figure 3.18: Parallel directories adding uncommon information.

6414c4
6414c4

6414c4

When one parent directory changes, all their related parallel

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

6414c4
6414c4

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

6414c4
6414c4

Figure 3.19: Wrong construction of parallel directories.

6414c4
6414c4

0d952c
01b527
6414c4

3.42.2.5 Syncronizing path information

749e81
6414c4

Creating parallel directories is very useful to keep repository

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

6414c4

If that is the case, functionalities like manual may confuse

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

6414c4

In the specific case of documentation (the manual

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

6414c4

There is no way for manual, and similar functionalities that

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

6414c4

Syncronizing parallel directories with their respecitive parent

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

6414c4
Warning

Warning

Even Subversion supports URL to refere sources and

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

0d952c
6414c4

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

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

6414c4

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

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

49b888
01b527
6414c4

3.42.2.6 What is the right place to store it?

0d952c
6414c4

Occasionly, you may find that new corporate visual identity components

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

6414c4

The CentOS Community different free support vains (see:

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

6414c4

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

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

6414c4

When building parent directory structures, you may find that reaching

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

6414c4

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

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

6414c4
centos-art manual --read=turnk/
6414c4
centos-art manual --read=turnk/Identity/
6414c4
centos-art manual --read=turnk/Identity/Themes/
6414c4
centos-art manual --read=turnk/Identity/Themes/Motifs/
6414c4
centos-art manual --read=turnk/Identity/Themes/Motifs/TreeFlower/
6414c4
6414c4

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

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

e37211
01b527
e37211

3.42.3 Usage

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

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

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

6414c4
6414c4
<samp>`WC -> WC'</samp>
6414c4

Copy and schedule for addition (with history).

6414c4

6414c4
6414c4
<samp>`WC -> URL (Not supported)'</samp>
6414c4

Immediately commit a copy of WC to URL.

6414c4

6414c4
6414c4
<samp>`URL -> WC (Not supported)'</samp>
6414c4

Check out URL into WC, schedule for addition.

6414c4

6414c4
6414c4
<samp>`URL -> URL (Not supported)'</samp>
6414c4

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

6414c4

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

Move and schedule for addition (with history).

6414c4

6414c4
<samp>`URL -> URL (Not supported)'</samp>
6414c4

Complete server-side rename.

6414c4

6414c4
6414c4
6414c4
6414c4
centos-art path --delete='SRC'
6414c4

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

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

6414c4
6414c4
<samp>`WC'</samp>
6414c4

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

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

6414c4
6414c4
<samp>`URL (Not supported)'</samp>
6414c4

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

6414c4
immediate commit.
6414c4

6414c4
6414c4
6414c4
e37211
e37211
01b527
54264c

3.42.4 See also

4c79b5
63f275
6414c4
3.37 trunk/Scripts/Bash  
6414c4
6414c4
3.38 trunk/Scripts/Bash/Functions  
63f275
63f275
4c79b5
4c79b5
4c79b5
01b527
[ < ]
01b527
[ > ]
4c79b5
   
4c79b5
[ << ]
6414c4
[ Up ]
6414c4
[ >> ]
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>