New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
overview.html in vendors/fcm/current/doc/user_guide – NEMO

source: vendors/fcm/current/doc/user_guide/overview.html @ 1977

Last change on this file since 1977 was 1977, checked in by flavoni, 14 years ago

importing fcm vendor

File size: 8.0 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
4<html xmlns="http://www.w3.org/1999/xhtml">
5<head>
6  <meta name="generator" content=
7  "HTML Tidy for Linux/x86 (vers 1st December 2004), see www.w3.org" />
8
9  <title>FCM User Guide: System Overview</title>
10  <meta name="author" content="FCM development team" />
11  <meta name="descriptions" content="User Guide - System Overview" />
12  <meta name="keywords" content="FCM, user guide" />
13  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
14  <link rel="stylesheet" type="text/css" href="style.css" />
15<script type="text/javascript" src="fcm.js">
16</script>
17</head>
18
19<body onload=
20"javascript: FCM.load('doc/user_guide/', null, [['.', 'FCM User Guide']]);">
21  <div id="document-info">
22    <address id="fcm-js-trail"></address>
23
24    <address id="fcm-js-maintenance"></address>
25  </div>
26
27  <h1>System Overview</h1>
28
29  <p>The FCM system is designed to simplify the task of managing and building
30  source code. It consists of three main components.</p>
31
32  <dl>
33    <dt>Code Management (CM) System</dt>
34
35    <dd>
36      <p>This system provides facilities for making changes to source code in a
37      controlled and straightforward manner.</p>
38
39      <p>Version control is provided by the open source tool <a href=
40      "http://subversion.tigris.org/">Subversion</a>. The source code and its
41      history are stored in a central database which is called the repository.
42      Support for parallel working is provided through the use of branches.</p>
43
44      <p>The open source web-based tool <a href=
45      "http://trac.edgewall.org/">Trac</a> allows changes to be examined and
46      documented. It provides an integrated issue tracker, wiki and repository
47      browser.</p>
48    </dd>
49
50    <dt>Build System</dt>
51
52    <dd>
53      <p>This system allows source code to be compiled with a minimal amount of
54      configuration. Compilation time can be minimised through the use of
55      pre-compiled code and by using the parallel make facilities provided by
56      the open source tool <a href="http://www.gnu.org/software/make/"><em>GNU
57      Make</em></a>.</p>
58
59      <p>It provides a number of powerful features aimed primarily at building
60      Fortran 9x code.</p>
61    </dd>
62
63    <dt>Extract System</dt>
64
65    <dd>
66      <p>This system provides the interface between the CM and build systems.
67      Code is extracted and presented in a suitable form for the build system.
68      Code can be mirrored to a different build platform if necessary.</p>
69    </dd>
70  </dl>
71
72  <p>The diagram below illustrates how these components fit together.</p>
73
74  <p class="image"><img src="fcm_overview.png" alt="FCM system overview" /></p>
75
76  <p>The following sections discuss these components in more detail.</p>
77
78  <h2>Code Management System</h2>
79
80  <p>The CM system is built using a number of open source tools, in particular
81  Subversion and Trac.</p>
82
83  <p>Subversion is a modern version control tool with a large and rapidly
84  expanding user base. For a summary of its main features please refer to the
85  <a href="http://svnbook.red-bean.com/en/1.4/svn.intro.whatis.html">What is
86  Subversion?</a> section in the <a href=
87  "http://svnbook.red-bean.com/en/1.4/">Version Control with Subversion</a>
88  book.</p>
89
90  <p>Subversion is a generalised tool which can be used in lots of different
91  ways. This makes some day-to-day tasks more complex than they need be. FCM
92  defines a simplified process and appropriate naming conventions. It then adds
93  a layer on top of Subversion to provide a natural interface which is
94  specifically tailored to this process. Where appropriate it simply makes use
95  of the command line tools provided by Subversion. However, in other cases it
96  provides significant additional functionality, for example:</p>
97
98  <ul>
99    <li>By making some assumptions about the repository layout (i.e. by
100    imposing a standard working practise) FCM simplifies the task of creating
101    branches and enforces a standard branch naming convention.</li>
102
103    <li>Having defined working practises and standard log messages allows FCM
104    to greatly simplify the process of merging changes between branches.</li>
105
106    <li>FCM makes use of <a href="http://furius.ca/xxdiff/">xxdiff</a> (a
107    graphical merge tool) to simplify the process of resolving any conflicts
108    which result from a merge.</li>
109
110    <li>Code changes can be examined in graphical form using xxdiff FCM also
111    allows you to easily examine the changes made on a branch.</li>
112
113    <li>FCM allows you to check where any particular branch has been used and
114    which version is being used.</li>
115  </ul>
116
117  <p>FCM also provides a simple GUI which allows easy access to most of the
118  common commands which you will need.</p>
119
120  <p>Trac is the other main component of the CM system. It is a powerful web
121  based tool which helps you to manage your software project. It includes the
122  following features:</p>
123
124  <ul>
125    <li>A flexible issue tracker which can be used to keep track of bugs,
126    feature requests, etc. Each issue (known as a <q title=
127    "http://trac.edgewall.org/wiki/TracTickets">ticket</q> within Trac) can be
128    given a priority and assigned to a particular person. Changes made to your
129    Subversion repository can easily be traced to the relevant ticket. Where
130    appropriate, tickets can be used to record information about who has
131    reviewed each change.</li>
132
133    <li>A <q title="http://trac.edgewall.org/wiki/TracRoadmap">roadmap</q>
134    feature which helps you to plan and manage project releases. Each ticket
135    can be associated with a particular milestone. Trac can then easily show
136    you what features or fixes went into a particular release or what work
137    remains before a particular milestone is reached.</li>
138
139    <li>A <q title="http://trac.edgewall.org/wiki/TracWiki">wiki</q> which can
140    be used for project documentation.</li>
141
142    <li>A browser for viewing your Subversion repository which allows you to
143    browse the project tree / files and examine revision logs and
144    changesets.</li>
145
146    <li>A timeline view which summarises all the activity on a project (changes
147    to the tickets, wiki pages or the Subversion repository).</li>
148  </ul>
149
150  <h2>Build System</h2>
151
152  <p>The build system provides the following features:</p>
153
154  <ul>
155    <li>Automatic generation of Makefile's at build time based on a simple
156    configuration file.</li>
157
158    <li>Full dependency analysis at build time.</li>
159
160    <li>Automatic generation of Fortran 9X interface files at build time.</li>
161
162    <li>Support for non-standard source code. You can override automatic
163    dependency and compile rules in order to deal with code which does not
164    conform to the necessary coding standards.</li>
165
166    <li>Flexible control over compiler flags. Changes to compiler flags trigger
167    the appropriate re-compilation.</li>
168
169    <li>Support for Pre-processor directives. Changes to Pre-processor flags
170    trigger the appropriate re-compilation.</li>
171
172    <li>Support for pre-compiled object code to speed compilation time.</li>
173
174    <li>GNU <code>make</code> is used to perform the build. Build times on
175    multi-processor systems can be reduced by running parallel processes.</li>
176  </ul>
177
178  <h2>Extract System</h2>
179
180  <p>The extract system provides the following features:</p>
181
182  <ul>
183    <li>Extract code to a directory tree suitable for feeding into the build
184    system. Code can be combined from multiple repositories and branches. Local
185    user code can also be included.</li>
186
187    <li>Either a complete set of source code may be extracted or just a set of
188    changes relative to pre-compiled code.</li>
189
190    <li>A simple configuration file defines what code is required (and what
191    compile options are required). Typically, standard versions of these
192    configuration files are maintained within the repository. Users can then
193    define changes relative to these standard versions.</li>
194
195    <li>If necessary, code can be transferred to a different platform ready for
196    building.</li>
197  </ul>
198</body>
199</html>
Note: See TracBrowser for help on using the repository browser.