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

3.41 trunk/Scripts/Bash/Functions/Path

b0644c
b0644c
01b527
e37211

3.41.1 Goals

e37211
749e81

This section exists to organize files related to path

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

63f275
01b527
e37211

3.41.2 Description

e37211
749e81

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

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

c6292c
01b527
749e81

3.41.2.1 Repository layout

c6292c
749e81

The repository layout describes organization of files and directories

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

749e81

As convenction, inside CentOS Artwork Repository, we organize files

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

749e81
749e81

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

c6292c
583d5d

Figure 3.11: The CentOS Artwork Repository layout.

749e81
749e81

749e81

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

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

749e81

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

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

749e81

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

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

749e81

The CentOS Artwork Repository layout is firmly grounded on a

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

c6292c
01b527
749e81

3.41.2.2 Repository name convenctions

749e81
749e81

Repository name convenctions help us to maintain consistency of names

749e81
inside the repository.
749e81

749e81

Repository name convenctions are applied to files and directories

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

749e81

Repository name convenctions are implemented inside the

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

749e81
01b527
749e81

3.41.2.3 Repository work flow

749e81
749e81

Repository work flow describes the steps and time intervals used to

749e81
produce CentOS corporate visual identity inside CentOS Artwork
749e81
Repository.  
749e81

749e81

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

749e81
cycle. 
749e81

749e81

Initially, we start working themes on their trunk development line

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

e16eda

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

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

749e81

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

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

749e81

Both branches and tags, inside CentOS Artwork Repository, use

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

749e81
749e81

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

749e81
583d5d

Figure 3.12: Name convention for tags and branches creation.

749e81
749e81

e16eda
Convenction

Convenction

Do not freeze trunk development lines using tags

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

e16eda
749e81

The trunk development line may introduce problems we cannot see

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

749e81

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

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

749e81

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

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

e16eda

Before releasing a new major release of CentOS distribution we create

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

749e81
01b527
749e81

3.41.2.4 Parallel directories

749e81
749e81

Inside CentOS Artwork Repository, parallel directories are simple

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

749e81

Parallel directories take their structure from one unique parent

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

749e81

In some circumstances, parallel directories may be created removing

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

749e81

Another example where parallel directory removes the uncommon path

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

749e81
749e81

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

749e81
583d5d

Figure 3.13: Parallel directories removing uncommon information.

749e81
749e81

749e81

Othertimes, parallel directories may add uncommon information to their

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

749e81
749e81

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

749e81
583d5d

Figure 3.14: Parallel directories adding uncommon information.

749e81
749e81

749e81

When one parent directory changes, all their related parallel

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

749e81
749e81

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

749e81
583d5d

Figure 3.15: Wrong construction of parallel directories.

749e81
749e81

749e81
01b527
749e81

3.41.2.5 Syncronizing path information

749e81
749e81

Creating parallel directories is very useful to keep repository

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

e16eda

If that is the case, functionalities like manual may confuse

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

49151b

In the specific case of documentation (the manual

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

49151b

There is no way for manual, and similar functionalities that

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

749e81

Syncronizing parallel directories with their respecitive parent

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

749e81

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

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

749e81

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

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

749e81
01b527
e16eda

3.41.2.6 What is the right place to store it?

749e81
749e81

Occasionly, you may find that new corporate visual identity components

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

e16eda

The CentOS Community different free support vains (see:

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

e16eda

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

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

749e81

When building parent directory structures, you may find that reaching

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

e16eda

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

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

49151b
centos-art manual --read=turnk/
49151b
centos-art manual --read=turnk/Identity/
49151b
centos-art manual --read=turnk/Identity/Themes/
49151b
centos-art manual --read=turnk/Identity/Themes/Motifs/
49151b
centos-art manual --read=turnk/Identity/Themes/Motifs/TreeFlower/
749e81
749e81

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

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

749e81
01b527
749e81

3.41.3 Usage

749e81
749e81
749e81
centos-art path --copy=SRC --to=DST
749e81

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

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

749e81
749e81
<samp>`WC -> WC'</samp>
749e81

Copy and schedule for addition (with history).

749e81

749e81
749e81
<samp>`WC -> URL'</samp>
749e81

Immediately commit a copy of WC to URL.

749e81

749e81
749e81
<samp>`URL -> WC'</samp>
749e81

Check out URL into WC, schedule for addition.

749e81

749e81
749e81
<samp>`URL -> URL'</samp>
749e81

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

749e81

749e81
749e81
749e81

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

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

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

For more information on Subversion's copy functionality,

749e81
run the command: svn help copy | less.
749e81

749e81
749e81
centos-art path --move=SRC --to=DST
749e81

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

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

749e81
749e81
<samp>`WC -> WC'</samp>
749e81

Move and schedule for addition (with history).

749e81

749e81
<samp>`URL -> URL'</samp>
749e81

Complete server-side rename.

749e81

749e81
749e81
749e81

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

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

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

For more information on Subversion's move functionality,

749e81
run the command: svn help move | less.
749e81

749e81
749e81
centos-art path --delete='SRC'
749e81

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

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

749e81
749e81
<samp>`WC'</samp>
749e81

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

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

749e81
749e81
<samp>`URL'</samp>
749e81

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

749e81
immediate commit.
749e81

749e81
749e81
749e81

This command is an interface for Subversion's delete

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

749e81
centos-art path --delete='URL' --message 'Delete url.'
749e81
749e81

For more information on Subversion's delete functionality,

749e81
run the command: svn help delete | less.
749e81

749e81
749e81
centos-art path --sync='SRC'
749e81

Use this command to syncronize path information inside working copy.

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

749e81
749e81
749e81
01b527
54264c

3.41.4 See also

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

4c79b5
 <font size="-1">
49151b
  This document was generated on December, 20 2010 using texi2html 1.76.
4c79b5
 </font>
4c79b5
 
4c79b5
4c79b5

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