1 | <!DOCTYPE html> |
---|
2 | <html> |
---|
3 | <head> |
---|
4 | <title>FCM: User Guide: System Overview</title> |
---|
5 | <meta name="author" content="FCM team" /> |
---|
6 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
---|
7 | <link rel="icon" href="../etc/fcm-icon.png" type="image/png" /> |
---|
8 | <link rel="shortcut icon" href="../etc/fcm-icon.png" type="image/png" /> |
---|
9 | <link href="../etc/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen" /> |
---|
10 | <link href="../etc/fcm.css" rel="stylesheet" media="screen" /> |
---|
11 | </head> |
---|
12 | <body> |
---|
13 | <div class="navbar navbar-inverse"> |
---|
14 | <div class="container-fluid"> |
---|
15 | <div class="navbar-header"> |
---|
16 | <a class="navbar-brand" href=".."><span class="fcm-version">FCM</span></a> |
---|
17 | </div> |
---|
18 | <div class="collapse navbar-collapse"> |
---|
19 | <ul class="nav navbar-nav"> |
---|
20 | <li><a href="../installation/">Installation</a></li> |
---|
21 | |
---|
22 | <li><a class="active" href="#">User Guide</a></li> |
---|
23 | </ul> |
---|
24 | </div> |
---|
25 | </div> |
---|
26 | </div> |
---|
27 | |
---|
28 | <div class="page-header"> |
---|
29 | <div class="fcm-page-content pull-right well well-sm"></div> |
---|
30 | <h1>FCM: User Guide: System Overview</h1> |
---|
31 | </div> |
---|
32 | |
---|
33 | <div class="container"> |
---|
34 | <div class="row"> |
---|
35 | <div class="col-md-12"> |
---|
36 | |
---|
37 | <p>The FCM system is designed to simplify the task of managing and building |
---|
38 | source code. It consists of the following components:</p> |
---|
39 | |
---|
40 | <h2 id="code-management">Code Management</h2> |
---|
41 | |
---|
42 | <p>FCM uses <a href="http://subversion.apache.org/">Subversion</a> for |
---|
43 | version control. For a summary of its main features please refer to the |
---|
44 | <a href="http://svnbook.red-bean.com/">Version Control with |
---|
45 | Subversion</a> book. Subversion is a generalised tool which can be used |
---|
46 | in lots of different ways. This makes some day-to-day tasks more complex |
---|
47 | than they need be. FCM defines a simplified process and appropriate |
---|
48 | naming conventions. It then adds a layer on top of Subversion to provide |
---|
49 | a natural interface which is specifically tailored to this process. Where |
---|
50 | appropriate it simply makes use of the command line tools provided by |
---|
51 | Subversion. However, in other cases it provides significant additional |
---|
52 | functionality, e.g.:</p> |
---|
53 | |
---|
54 | <ul> |
---|
55 | <li>By making some assumptions about the repository layout (i.e. by |
---|
56 | imposing a standard working practice) FCM simplifies the task of |
---|
57 | creating branches and enforces a standard branch naming |
---|
58 | convention.</li> |
---|
59 | |
---|
60 | <li>Having defined working practices and standard log messages allows |
---|
61 | FCM to greatly simplify the process of merging changes between |
---|
62 | branches.</li> |
---|
63 | |
---|
64 | <li>FCM makes use of <a href="http://furius.ca/xxdiff/">xxdiff</a> (a |
---|
65 | graphical diff and merge tool) to allow users to easily examine changes |
---|
66 | they have made and to simplify the process of resolving any conflicts |
---|
67 | which result from a merge.</li> |
---|
68 | </ul> |
---|
69 | |
---|
70 | <p>FCM uses <a href="http://trac.edgewall.org/">Trac</a>, a powerful web |
---|
71 | based tool, to manage software projects. <a href= |
---|
72 | "http://trac.edgewall.org/">Trac</a> has the following features:</p> |
---|
73 | |
---|
74 | <ul> |
---|
75 | <li>A flexible issue tracker which can be used to keep track of bugs, |
---|
76 | feature requests, etc. Each issue (known as a <q title= |
---|
77 | "http://trac.edgewall.org/wiki/TracTickets">ticket</q> within Trac) can |
---|
78 | be given a priority and assigned to a particular person. Changes made |
---|
79 | to your Subversion repository can easily be traced to the relevant |
---|
80 | ticket. Where appropriate, tickets can be used to record information |
---|
81 | about who has reviewed each change.</li> |
---|
82 | |
---|
83 | <li>A <q title="http://trac.edgewall.org/wiki/TracRoadmap">roadmap</q> |
---|
84 | feature which helps you to plan and manage project releases. Each |
---|
85 | ticket can be associated with a particular milestone. Trac can then |
---|
86 | easily show you what features or fixes went into a particular release |
---|
87 | or what work remains before a particular milestone is reached.</li> |
---|
88 | |
---|
89 | <li>A <q title="http://trac.edgewall.org/wiki/TracWiki">wiki</q> which |
---|
90 | can be used for project documentation.</li> |
---|
91 | |
---|
92 | <li>A browser for viewing your Subversion repository which allows you |
---|
93 | to browse the project tree / files and examine revision logs and |
---|
94 | changesets.</li> |
---|
95 | |
---|
96 | <li>A timeline view which summarises all the activity on a project |
---|
97 | (changes to the tickets, wiki pages or the Subversion repository).</li> |
---|
98 | </ul> |
---|
99 | |
---|
100 | <h2 id="build-and-extract">Build and Extract</h2> |
---|
101 | |
---|
102 | <p>FCM features a powerful build system, mainly aimed at building modern |
---|
103 | Fortran software applications. It has the following features:</p> |
---|
104 | |
---|
105 | <ul> |
---|
106 | <li>Parallel build.</li> |
---|
107 | |
---|
108 | <li>Efficient incremental build. Changes to the checksums of source files |
---|
109 | and/or the build configuration (e.g. changes to the compiler flags) trigger |
---|
110 | the appropriate re-compilation.</li> |
---|
111 | |
---|
112 | <li>Inheritance of items from an existing build.</li> |
---|
113 | |
---|
114 | <li>Build dependency analysis.</li> |
---|
115 | |
---|
116 | <li>Automatic generation of include files to contain the calling |
---|
117 | interfaces of standalone functions and subroutinues in Fortran source |
---|
118 | files.</li> |
---|
119 | |
---|
120 | <li>Extract of source files from multiple repositories and working |
---|
121 | copies.</li> |
---|
122 | |
---|
123 | <li>Extract and merge of source files from different branches of |
---|
124 | development.</li> |
---|
125 | |
---|
126 | <li>Minimal configuration.</li> |
---|
127 | </ul> |
---|
128 | |
---|
129 | <h2 id="illustration">Illustration</h2> |
---|
130 | |
---|
131 | <p>The diagram below illustrates how these components fit together.</p> |
---|
132 | |
---|
133 | <p><img class="img-polaroid" src="fcm_overview.png" |
---|
134 | alt="FCM system overview" /></p> |
---|
135 | |
---|
136 | </div> |
---|
137 | </div> |
---|
138 | </div> |
---|
139 | |
---|
140 | <hr/> |
---|
141 | <div class="container-fluid text-center"> |
---|
142 | <div class="row"><div class="col-md-12"> |
---|
143 | <address><small> |
---|
144 | Copyright © 2006-2021 British Crown (Met Office) & Contributors. |
---|
145 | <a href="http://www.metoffice.gov.uk">Met Office</a>. |
---|
146 | See <a href="../etc/fcm-terms-of-use.html">Terms of Use</a>.<br /> |
---|
147 | This document is released under the British <a href= |
---|
148 | "http://www.nationalarchives.gov.uk/doc/open-government-licence/" rel= |
---|
149 | "license">Open Government Licence</a>.<br /> |
---|
150 | </small></address> |
---|
151 | </div></div> |
---|
152 | </div> |
---|
153 | |
---|
154 | <script type="text/javascript" src="../etc/jquery.min.js"></script> |
---|
155 | <script type="text/javascript" src="../etc/bootstrap/js/bootstrap.min.js"></script> |
---|
156 | <script type="text/javascript" src="../etc/fcm.js"></script> |
---|
157 | <script type="text/javascript" src="../etc/fcm-version.js"></script> |
---|
158 | </body> |
---|
159 | </html> |
---|