/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&ddiffs=1&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&value=linkto%3A%22QuickStartGuide%22&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 <username>
cdv set repository <URL>
cdv create <URL>
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://<server>[:<port>]/<repository>
</pre>
<h3 id="head-08d121bbb95e7bbd75c9b3ae47f58c0180144f7b">Check out an existing project</h3>
<pre>
cdv init
cdv set user <username>
cdv set repository <URL>
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 <source> <dest>
</pre>
<p>Delete files or directories:
</p>
<pre>
cdv remove <files>
</pre>
<p>View your changes:
</p>
<pre>
cdv diff [-r <changeset1> [-r <changeset2>]]
</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 <file>
</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 <URL2>
cdv -R <URL2> 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 <URL2> 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><<<<<<<</tt>, <tt>=======</tt> and <tt>>>>>>>></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 <username>
</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 <server directory>
</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>/dev/null)"
PATH="$oPATH"
test :"$cdvserver" = :"" && exit 0
test -x "$cdvserver" || exit 0
( "$cdvserver" -h 2>&1 | grep -q Valid ) 2>/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>
|