This file is indexed.

/usr/share/doc/codeville/QuickStartGuide.html is in codeville 0.8.0-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="robots" content="index,nofollow">


<title>QuickStartGuide - Codeville Wiki</title>

<script type="text/javascript">
<!--// common functions

// We keep here the state of the search box
searchIsDisabled = false;

function searchChange(e) {
    // Update search buttons status according to search box content.
    // Ignore empty or whitespace search term.
    var value = e.value.replace(/\s+/, '');
    if (value == '' || searchIsDisabled) { 
        searchSetDisabled(true);
    } else {
        searchSetDisabled(false);
    }
}

function searchSetDisabled(flag) {
    // Enable or disable search
    document.getElementById('fullsearch').disabled = flag;
    document.getElementById('titlesearch').disabled = flag;
}

function searchFocus(e) {
    // Update search input content on focus
    if (e.value == 'Search') {
        e.value = '';
        e.className = '';
        searchIsDisabled = false;
    }
}

function searchBlur(e) {
    // Update search input content on blur
    if (e.value == '') {
        e.value = 'Search';
        e.className = 'disabled';
        searchIsDisabled = true;
    }
}

function actionsMenuInit(title) {
    // Initiliaze action menu
    for (i = 0; i < document.forms.length; i++) {
        var form = document.forms[i];
        if (form.className == 'actionsmenu') {
            // Check if this form needs update
            var div = form.getElementsByTagName('div')[0];
            var label = div.getElementsByTagName('label')[0];
            if (label) {
                // This is the first time: remove label and do buton.
                div.removeChild(label);
                var dobutton = div.getElementsByTagName('input')[0];
                div.removeChild(dobutton);
                // and add menu title
                var select = div.getElementsByTagName('select')[0];
                var item = document.createElement('option');
                item.appendChild(document.createTextNode(title));
                item.value = 'show';
                select.insertBefore(item, select.options[0]);
                select.selectedIndex = 0;
            }
        }
    }
}
//-->
</script>

<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="/wiki/modern/css/common.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="screen" href="/wiki/modern/css/screen.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="print" href="/wiki/modern/css/print.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="projection" href="/wiki/modern/css/projection.css">
<link rel="alternate" title="Codeville Wiki Recent Changes" href="/doc/RecentChanges?action=rss_rc&amp;ddiffs=1&amp;unique=1" type="application/rss+xml">
<link rel="Start" href="/doc/FrontPage">
<link rel="Alternate" title="Wiki Markup" href="/doc/QuickStartGuide?action=raw">
<link rel="Alternate" media="print" title="Print View" href="/doc/QuickStartGuide?action=print">
<link rel="Search" href="/doc/FindPage">
<link rel="Index" href="/doc/TitleIndex">
<link rel="Glossary" href="/doc/WordIndex">
<link rel="Help" href="/doc/HelpOnFormatting">
</head>

<body  lang="en" dir="ltr">

<div id="header">
<div id="logo"><a href="/doc/FrontPage">Codeville Wiki</a></div>

<form id="searchform" method="get" action="">
<div>
<input type="hidden" name="action" value="fullsearch">
<input type="hidden" name="context" value="180">
<label for="searchinput">Search:</label>
<input id="searchinput" type="text" name="value" value="" size="20"
    onfocus="searchFocus(this)" onblur="searchBlur(this)"
    onkeyup="searchChange(this)" onchange="searchChange(this)" alt="Search">
<input id="titlesearch" name="titlesearch" type="submit"
    value="Titles" alt="Search Titles">
<input id="fullsearch" name="fullsearch" type="submit"
    value="Text" alt="Search Full Text">
</div>
</form>
<script type="text/javascript">
<!--// Initialize search form
var f = document.getElementById('searchform');
f.getElementsByTagName('label')[0].style.display = 'none';
var e = document.getElementById('searchinput');
searchChange(e);
searchBlur(e);
//-->
</script>

<ul id="username">
<li><a href="/doc/UserPreferences">Login</a></li>
</ul>


<ul id="navibar">
<li class="wikilink"><a href="/doc/FrontPage">FrontPage</a></li>
<li class="wikilink"><a href="/doc/RecentChanges">RecentChanges</a></li>
<li class="wikilink"><a href="/doc/FindPage">FindPage</a></li>
<li class="wikilink"><a href="/doc/HelpContents">HelpContents</a></li>
<li class="current"><a href="/doc/QuickStartGuide">QuickStartGuide</a></li>
</ul>

<div id="pageline"><hr style="display:none;"></div>

<ul class="editbar">
<li>Immutable Page</li>
<li><a href="/doc/QuickStartGuide?action=diff">Show Changes</a></li>
<li><a href="/doc/QuickStartGuide?action=info">Get Info</a></li>
<li>
<form class="actionsmenu" method="get" action="">
<div>
    <label>More Actions:</label>
    <select name="action"
        onchange="if ((this.selectedIndex != 0) &&
                      (this.options[this.selectedIndex].disabled == false)) {
                this.form.submit();
            }
            this.selectedIndex = 0;">
        <option value="raw">Show Raw Text</option>
<option value="print">Show Print View</option>
<option value="refresh">Delete Cache</option>
<option value="show" disabled class="disabled">--------</option>
<option value="AttachFile" disabled class="disabled">Attachments</option>
<option value="SpellCheck">Check Spelling</option>
<option value="LikePages">Show Like Pages</option>
<option value="LocalSiteMap">Show Local Site Map</option>
<option value="show" disabled class="disabled">--------</option>
<option value="RenamePage" disabled class="disabled">Rename Page</option>
<option value="DeletePage" disabled class="disabled">Delete Page</option>
    </select>
    <input type="submit" value="Do">
</div>
<script type="text/javascript">
<!--// Init menu
actionsMenuInit('More Actions:');
//-->
</script>
</form>
</li>
</ul>

</div>

<div id="page" lang="en" dir="ltr">


<h1 id="title"><a title="Click to do a full-text search for this title" href="/doc/QuickStartGuide?action=fullsearch&amp;value=linkto%3A%22QuickStartGuide%22&amp;context=180">QuickStartGuide</a></h1>
<div lang="en" id="content" dir="ltr">
<a id="top"></a>
<p>This document describes how to use a client and a server for the first time after it has been installed.  Server instructions are given after the client instructions. </p>
<p>All client instructions below assume you are within your workspace directory, not including the <tt>.cdv</tt> dir. </p>

<h3 id="head-627f62f2d8d4de1d1a3b028d70763003faccbc1b">Creating a new project</h3>

<p>Create a workspace directory and populate it with the files you want checked in. Within that directory: 
</p>
<pre>
cdv init
cdv set user &lt;username&gt;
cdv set repository &lt;URL&gt;
cdv create &lt;URL&gt;
cdv add ...
cdv commit
</pre>
<p>Note: use of an email address as the username is recommended. </p>
<p>If you do not wish to collaborate with others or use a server for any other purpose, skip both setting <tt>repository</tt> and running <tt>create</tt>. </p>
<p>A repository URL has the following form: 
</p>
<pre>
cdv://&lt;server&gt;[:&lt;port&gt;]/&lt;repository&gt;
</pre>

<h3 id="head-08d121bbb95e7bbd75c9b3ae47f58c0180144f7b">Check out an existing project</h3>


<pre>
cdv init
cdv set user &lt;username&gt;
cdv set repository &lt;URL&gt;
cdv update
</pre>

<h3 id="head-3f17e35f9598b778540a8f1333d8c22af3af5140">Making changes</h3>

<p>Codeville automatically detects when you have edited files in a client. </p>
<p>Rename or move files or directories: 
</p>
<pre>
cdv rename &lt;source&gt; &lt;dest&gt;
</pre>
<p>Delete files or directories: 
</p>
<pre>
cdv remove &lt;files&gt;
</pre>
<p>View your changes: 
</p>
<pre>
cdv diff [-r &lt;changeset1&gt; [-r &lt;changeset2&gt;]]
</pre>
<p>One <tt>-r</tt> flag will specify the change to diff from, a second the change to diff to. By default, the first change is the most recent change from the default repository (or the repository specied by <tt>-R</tt>). The second defaults to <tt>local</tt>, which is the current state of the workspace. </p>
<p>Show a more compact list of changes: 
</p>
<pre>
cdv status
</pre>
<p>When you are happy with your changes: 
</p>
<pre>
cdv commit
</pre>

<h3 id="head-52db7fc65c7dc2702d58969a435c19c82478240a">Reverting changes</h3>

<p>Discard uncommitted file edits: 
</p>
<pre>
cdv revert &lt;file&gt;
</pre>
<p>Only changes to a file's contents can be reverted at this time. Name operations (<tt>add</tt>, <tt>delete</tt>, <tt>rename</tt>) are not yet reversible. </p>

<h3 id="head-cf35de4cc3b30376f838c0148b5a9309e4f22369">Taking branches</h3>

<p>Branch using your current client state: 
</p>
<pre>
cdv create &lt;URL2&gt;
cdv -R &lt;URL2&gt; commit
</pre>
<p>URL2 does not need to be on the same server as the URL you are branching from. </p>

<h3 id="head-882d52d7d21fb238b1e15ca4e2af2ea4b231db3e">Merging branches</h3>

<p>To merge URL2 into URL, from a client with URL set as the repository: 
</p>
<pre>
cdv update
cdv -R &lt;URL2&gt; update
(Resolve any name or merge conflicts)
cdv commit
</pre>
<p>You may continue using branches after you have merged them. Codeville supports arbitrary branching, merging and remerging of any and all branches. </p>

<h3 id="head-e0f9a16ab5adc666b930591f8d061c6b5e6875b2">Resolving conflicts</h3>

<p>File conflicts are presented in a similar fashion to CVS. Conflicting sections of the file will be marked with <tt>&lt;&lt;&lt;&lt;&lt;&lt;&lt;</tt>, <tt>=======</tt> and <tt>&gt;&gt;&gt;&gt;&gt;&gt;&gt;</tt>. </p>
<p>Naming conflicts will result in mangled filenames. Look for files and directories which end with <tt>.nameconflict.local</tt>, <tt>.orphaned</tt>, <tt>.loop</tt>, etc. Sometimes there will be a file with a <tt>".info"</tt> extension which contains where the file exists according to the update which caused the problem. </p>

<h3 id="head-a72b6a5079703e9f0fd8f331442ef58da3c84370">Other stuff</h3>

<p>View history: 
</p>
<pre>
cdv history
</pre>
<p>This could use some explanation, but for now the change in parentheses is what brought this change into the repository. If you branch or merge, you may notice that many changes have the same one in parentheses. </p>

<h3 id="head-7ad8ad845de65633c89ac9c50ac33b17f18cb81b">Starting a server</h3>

<p>Choose a directory to start the server in. Change into the directory and run: 
</p>
<pre>
cdvserver -i -f .
</pre>
<p>You will also need to create at least 1 account. Do this by running the cdvpasswd program in the server directory, for example: 
</p>
<pre>
cdvpasswd -f passwd add &lt;username&gt;
</pre>
<p>The special username <tt>"anonymous"</tt> is only allowed to do read operations on the repository. </p>
<p>Run cdvserver: 
</p>
<pre>
cdvserver -n -d -f &lt;server directory&gt;
</pre>
<p>You now have a running server. Running without <tt>-d</tt> will cause the server to fork off into the background and generally act more server-like. See the server reference for more details. </p>

<h3 id="head-d41667712d3999507927d76d30284fc1dd46fdec">Ubuntu Init Script</h3>

<p>Place the following in /etc/init.d/cdv and change the permissions to be world-executable using chmod 755 /etc/init.d/cdv -- note that this was based on the OpenBSD Secure Shell init script /etc/init.d/ssh. </p>

<pre>
#! /bin/bash --
set -e

# /etc/init.d/cdv: start and stop the Codeville server

oPATH="$PATH"

PATH=/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin
export PATH

cdvserver="$(type -p cdvserver 2&gt;/dev/null)"

PATH="$oPATH"

test :"$cdvserver" = :"" &amp;&amp; exit 0

test -x "$cdvserver" || exit 0
( "$cdvserver" -h 2&gt;&amp;1 | grep -q Valid ) 2&gt;/dev/null || exit 0

if test -f /etc/default/cdv; then
    . /etc/default/cdv
fi

. /lib/lsb/init-functions

check_for_no_start() {
    # forget it if we're trying to start, and /etc/cdv/cdvserver_not_to_be_run exists
    if [ -e /etc/cdv/cdvserver_not_to_be_run ]; then
        log_end_msg 0
        log_warning_msg "Codeville server not in use (/etc/cdv/cdvserver_not_to_be_run)"
        exit 0
    fi
}

export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"

case "$1" in
  start)
        log_begin_msg "Starting Codeville server..."
        check_for_no_start
        start-stop-daemon --start --quiet --pidfile /var/run/cdvserver.pid --exec "$cdvserver" -- $CDVSERVER_OPTS || log_end_msg 1
        log_end_msg 0
        ;;
  stop)
        log_begin_msg "Stopping Codeville server..."
        start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/cdvserver.pid || log_end_msg 1
        log_end_msg 0
        ;;

  restart)
        log_begin_msg "Restarting Codeville server..."
        start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile /var/run/cdvserver.pid
        check_for_no_start
        start-stop-daemon --start --quiet --pidfile /var/run/cdvserver.pid --exec "$cdvserver" -- $CDVSERVER_OPTS || log_end_msg 1
        log_end_msg 0
        ;;

  *)
        log_success_msg "Usage: /etc/init.d/cdv {start|stop|restart}"
        exit 1
esac

exit 0
</pre>

<h3 id="head-5ff5fc428ab87e71d77729d9dbb0562a0e2ad42b">Miscellaneous notes</h3>

<p>Performance should be reasonable, there are still more optimizations to be done. For now, you will get better performance by updating after each commit. </p>
<p>All files are assumed to be text. That is, Codeville will attempt to merge them. Support for binaries and non-ascii encoded files will happen before 1.0. </p>
<p>At this point the repository format should be stable enough that there will always be an upgrade path for the servers. </p>
<a id="bottom"></a>

</div>
<p id="pageinfo" class="info" lang="en" dir="ltr">last edited 2007-09-03 23:30:41 by <span title="dsl092-187-235.sfo1.dsl.speakeasy.net">RossCohen</span></p>

<div id="pagebottom"></div>
</div>


<div id="footer">
<ul class="editbar">
<li>Immutable Page</li>
<li><a href="/doc/QuickStartGuide?action=diff">Show Changes</a></li>
<li><a href="/doc/QuickStartGuide?action=info">Get Info</a></li>
<li>
<form class="actionsmenu" method="get" action="">
<div>
    <label>More Actions:</label>
    <select name="action"
        onchange="if ((this.selectedIndex != 0) &&
                      (this.options[this.selectedIndex].disabled == false)) {
                this.form.submit();
            }
            this.selectedIndex = 0;">
        <option value="raw">Show Raw Text</option>
<option value="print">Show Print View</option>
<option value="refresh">Delete Cache</option>
<option value="show" disabled class="disabled">--------</option>
<option value="AttachFile" disabled class="disabled">Attachments</option>
<option value="SpellCheck">Check Spelling</option>
<option value="LikePages">Show Like Pages</option>
<option value="LocalSiteMap">Show Local Site Map</option>
<option value="show" disabled class="disabled">--------</option>
<option value="RenamePage" disabled class="disabled">Rename Page</option>
<option value="DeletePage" disabled class="disabled">Delete Page</option>
    </select>
    <input type="submit" value="Do">
</div>
<script type="text/javascript">
<!--// Init menu
actionsMenuInit('More Actions:');
//-->
</script>
</form>
</li>
</ul>

<ul id="credits">
<li><a href="http://moinmoin.wikiwikiweb.de/">MoinMoin Powered</a></li>
<li><a href="http://www.python.org/">Python Powered</a></li>
<li><a href="http://validator.w3.org/check?uri=referer">Valid HTML 4.01</a></li>
</ul>


</div>
</body>
</html>