debian/0000755000000000000000000000000011533455055007174 5ustar debian/ToDoList.txt0000644000000000000000000000742611533450176011446 0ustar #[1]Codeville Wiki Recent Changes [2]Start [3]Wiki Markup [4]Print View [5]Search [6]Index [7]Glossary [8]Help [9]Codeville Wiki Search: ____________________ Titles Text * [10]Login * [11]FrontPage * [12]RecentChanges * [13]FindPage * [14]HelpContents * [15]ToDoList __________________________________________________________________ * Immutable Page * [16]Show Changes * [17]Get Info * More Actions: [Show Raw Text......] Do [18]ToDoList The Magic TODO list larger features * merge-through-conflict code (necessary in rare cases for revert and resurrection) * revert (for name operations, this already works for file contents) * resurrecting deleted files * access control lists on repository paths in the server * support for binaries * metadata (the execute bit, for instance) * internationalization * deal with case-insensitive file systems * more polish * cherry picking individual changes * rollback of individual changes smaller stuff * Security audit of networking code * Shared secrets are stored encrypted against the users password, should also include a salt to protect against precomputed dictionary attacks * Move authentication-related info out of the tree. * Graphical history browsing tool. * Graphical conflict resolution tool, something like dirdiff which can read the inline conflict info. * Code cleanup - there are places in the code (sync_history(), gen_changeset(), handle_contents_at_point()) which should be using DFS.py to do a topological sort instead of being ad-hoc about it. This is a good way to become more familiar with the code. * Replace the stop-and-wait changeset fetching over the network with something better. Ask on the mailing list for more details. * Better parallelize the delta fetching and history replaying by moving one of the 2 into a separate thread. * Documentation. Some [19]HowTo guides would be especially useful for things like history browsing. * Fix the file ignore pattern stuff. Should probably work more like CVS. * Remember which files had conflicts after an update and have the status command display them. * Force users to resolve name conflicts before allowing relevent files to be committed. last edited 2007-09-03 23:29:17 by RossCohen * Immutable Page * [20]Show Changes * [21]Get Info * More Actions: [Show Raw Text......] Do * [22]MoinMoin Powered * [23]Python Powered * [24]Valid HTML 4.01 References 1. http://codeville.org/doc/RecentChanges?action=rss_rc&ddiffs=1&unique=1 2. http://codeville.org/doc/FrontPage 3. http://codeville.org/doc/ToDoList?action=raw 4. http://codeville.org/doc/ToDoList?action=print 5. http://codeville.org/doc/FindPage 6. http://codeville.org/doc/TitleIndex 7. http://codeville.org/doc/WordIndex 8. http://codeville.org/doc/HelpOnFormatting 9. http://codeville.org/doc/FrontPage 10. http://codeville.org/doc/UserPreferences 11. http://codeville.org/doc/FrontPage 12. http://codeville.org/doc/RecentChanges 13. http://codeville.org/doc/FindPage 14. http://codeville.org/doc/HelpContents 15. http://codeville.org/doc/ToDoList 16. http://codeville.org/doc/ToDoList?action=diff 17. http://codeville.org/doc/ToDoList?action=info 18. http://codeville.org/doc/ToDoList?action=fullsearch&value=linkto%3A%22ToDoList%22&context=180 19. http://codeville.org/doc/HowTo 20. http://codeville.org/doc/ToDoList?action=diff 21. http://codeville.org/doc/ToDoList?action=info 22. http://moinmoin.wikiwikiweb.de/ 23. http://www.python.org/ 24. http://validator.w3.org/check?uri=referer debian/NEWS.upstream0000644000000000000000000006441511533450176011543 0ustar * [1]Home * [2]Download * [3]News * [4]Docs * [5]Todo NEWS 7/13/2007: Version 0.8.0 is out! New in this release: * Remember commit message and autofill it on next attempt if commit fails * fixed: catch requests for non-existent diffs * fixed: error handling cleanup in networking code * fixed: Windows-specific networking fixes * fixed: binary file corruption on Windows with 'construct' * fixed: glob expansion with 'describe -d' * fixed: renaming corner case involving directories, renaming and deleting * fixed: files renamed out of a deleted directory on another branch were marked as a name conflict * fixed: use case-insensitive regexps for post-commit hooks because the config parser lowercases everything * fixed: filesystem timestamp precision problems * fixed: Python 2.5 fixes These fixes have been collecting for a while. Now you all get to enjoy them too. The version number has been changed to reflect that the currect code is stable, yet is still missing some features which would be necessary for a 1.0 release __________________________________________________________________ 2/27/2006: Version 0.1.16 is out! New in this release: * Allow 'edit' to take --id * fixed: worked around slightly malformed history with respect to edits and deletes * fixed: merges of edits and deletes should be explicit in changesets Just a few cleanups, nothing too major. __________________________________________________________________ 2/23/2006: Version 0.1.15 is out! New in this release: * Relax restriction of delete and content merges introduced in previous release so we do not have to rewrite history yet * skip compilation of winrandom.pyd if python 2.4 is installed (Windows only) * fixed: independent deletes should merge implicitly * fixed: server does not rebuild when there are empty branches * fixed: bug which caused all sorts of weird and bad symptoms related to renames * fixed: traceback on checkout from a keyboard interrupt * fixed: reworked how comments are handled to really deal with locales correctly All bugfixes here, no new features. __________________________________________________________________ 12/25/2005: Version 0.1.14 is out! New in this release: * Allow specifying files by id for several commands * Quoting of CDVDIFF on Windows to allow diff programs with spaces * Quick hack to preserve execute permissions during update * Preserve ownership of the password file when using 'cdvpasswd' * Partial subcommand matching, things like 'cdv di' and 'cdv up' now work * 'cdvserver' exits immediately after initialization when given -i * Make 'cdvserver' shut down cleanly on various signals * Force all comments to be encoded in utf8 (automatically converts from local encoding) * 'diff.py' works as a standalone program * 'commit' accepts -M or --message-file to read commit message from a file * Big optimization to 'annotate' * fixed: delete bugs due to internal ambiguities * fixed: infinite loop when there were blank lines in the commit message * fixed: better cleanup when CDVDIFF fails * fixed: better detection of problems with CDVDIFF * fixed: 'revert' and 'construct' only worked from the root * fixed: cdv-agent died with EINTR * fixed: glob module removed files which don't exist from the command line (Windows only) * fixed: '...' expansion (Windows only) * fixed: 'cdvserver' would accept history with implicit merges * fixed: 'history' traceback when using -c * fixed: 'history' traceback, especially obvious when working serverless __________________________________________________________________ 7/18/2005: Version 0.1.13 is out! New in this release: * Patch from Sudhi Herle so codeville can find modules if not installed in the standard python path * 'annotate' feature courtesy of Yoshinori K. Okuji * Patch to allow specifying changeset creation time on command line from Lele Gaifax * Rewritten command line parsing. Options can now be specified anywhere on the command line, long options are supported and there is some basic help * Rewritten history browsing code for simplicity and performance * fixed: creating a new server. Use 'cdvserver -i' to initialize a server * fixed: historical and current name checks, the old code had both false positives and negatives for rename conflicts * fixed: clear out files being edited on 'construct' __________________________________________________________________ 5/7/2005: Version 0.1.12 is out! New in this release: * fixed: obscure issues in cdvupgrade pertaining to convergence * fixed: small issue with changeset generation related to the above issue * fixed: packaging issue which prevented code needed by cdvupgrade from being included * fixed: a few issues with the new unified diff code * fixed: setup.py reflects the new code license * fixed: cdvupgrade fixed so running cdvupgrade on its own output is an identity operation * fixed: cdvupgrade ignores floating history on servers __________________________________________________________________ 5/5/2005: Version 0.1.11 is out! New in this release: * optimized scanning the filesystem to find files which changed for very large projects * introduced 'cdv init' to replace manual 'mkdir CVILLE' * use urandom if present, python 2.4 on windows no longer requires the windrandom.pyd file * 'cdv construct' is a little more robust * changed history format to not allow implicit merges. this is a huge performance improvement for histories with lots of branching and merging. * fancy new O(n * log(n)) match code replaces old O(n^3) implementation. makes diffing and changeset generation faster and should also generate better/more readable deltas. * switched to zlib level 6 instead of 9, faster and not much of a space hit * use .cdv as the metadata directory instead of CVILLE * modify cdvupgrade script to work on both clients and servers * version the repository format so the tool doesn't munge an older or newer database by accident * changed license to BSD * fixed: using external diff program on windows causes traceback * fixed: bug where conflicts repeated during later merges * fixed: test for detecting conflicts in files being committed or updated is more strict * fixed: cdvpasswd looks for a config file when passed -f * fixed: 'cdv remove' does not require files to still be present in the filesystem * fixed: small issue when calling revert on an added file Current items being worked on for the next release and later are: * binary support * big improvements to the latency of the network protocol * smaller CPU and memory improvements * changes to the merge algorithm so that we can prove things about its behaviour You must run cdvupgrade on any clients and servers for this release. Note that it is much faster to do fresh checkouts than to upgrade clients. __________________________________________________________________ 4/13/2005: Mailing list and self-hosting repository There's a public mailing list up now. If you have questions or want to partipate, send mail to devel at codeville dot org. The [6]todo list is a good place to get started for helping out. More things will be added to it soon. [7][list info] The self-hosting repository which has existed since February of 2004 has been opened to the public. URL is cdv://codeville.org/codeville/devel. Username 'anonymous' and the password is blank. I have to put in a note of thanks here to the folks at [8]Mosuki. They have been using it in production since June of 2004 and done an excellent job of finding bugs, stessing the system and pointing out where the interface needs improvement. Also of note, the next version will probably be under the BSD license. __________________________________________________________________ 1/24/2005: New documentation A [9]client reference page has been added to the documentation. Thanks to Keith Irwin for writing this up. If it seems like releases have been slowing down, then you're impatient. Geez, don't I get to take a vacation? In actual fact, they have slowed down a bit. Partially, this is due to stability. Since nothing has been really broken, I've been working on other things. Some architectural design work has also been happening behind the scenes. The next release will require a history rewrite in order to address some non-critical, long standing bugs and to regain some performance. Assuming that is as stable as the recent release, I will get back to adding all those planned useful features. __________________________________________________________________ 12/11/2004: Version 0.1.10 is out! New in this release: * Un*x shell style filename expansion on windows * 'rebuild' can be done from a given changenumber * 'last-modified' can be done from a given changenumber * 'update' recognizes repository URLs of the format 'cdv://server/{changenumber}' * 'diff' can now take 'local' as either first or second -r argument * 'diff' does not display diffs for files which exist on only 1 side by default * 'diff' takes -N switch to show diffs for files which exist on only 1 side * fixed: critical bug where an invalid merge was generated and not caught by the server * fixed: locking bug on server when files are deleted * fixed: traceback when committing from windows * fixed: all files show up as modified after doing 'construct' * fixed: server sending responses out of order * fixed: merge done by 'update' was sometimes incorrect * fixed: 'update -d' not pulling in diffs * fixed: CVILLE directory could not be at the root of the filesystem * fixed: 'diff -r repo' caused traceback * fixed: 'revert' on a file deleted from the local filesystem caused traceback The critical bug is somewhat difficult to trigger, so it is unlikely that others have run into it. If you see tracebacks with 'merge error', this is what happened. Unfortunately, you have to figure out where it happened and throw away all the changes after that. Apologies, this is the first time something like this has happened in about 8 months. In this release, the bug is mostly worked around. A proper fix will be in the next release. It will also fix some nuisance bugs with the merge algorithm and eliminate the false positives when doing 'history' on specific files. Potentially, performace will be better, as well. Running 'rebuild' is required after upgrading. Documentation is imminent. I promise. __________________________________________________________________ 9/21/2004: Version 0.1.9 is out! New in this release: * Allow user to be specified on client command line via -u * Server port is configurable via the config file or -o on the command line (-p is already being used, I need to switch to long opts) * Server catches exceptions and only shuts down the offending connection, rather than exiting * 'commit' takes -b for backup, makes it not generate a new changeset * 'history' accepts filenames on the command line * New command 'heads' shows currents heads in the client * New command 'last-modified' gives the last change to modify a file * Server doesn't revalidate changes already committed to other repositories, bedtter performance for branching and merging * fixed: bad changesets being generated for some merge cases * fixed: merging a change with its ancestor caused traceback * fixed: locking bug on failed commit * fixed: 'add' of CVILLE directory issued warning but did the add anyway * fixed: 'diff' with ... tries to diff files not open for edit The first 2 bugs caused significant problems in the previous release for branching and merging. Otherwise, this is mainly a small cleanup release. The new feature of 'history' only showing changes for files you're interested in will occasionally give a false positive match. This will be fixed in a future release. It will also show changes in which the file was merged but not directly modified. __________________________________________________________________ 8/12/2004: Version 0.1.8 is out! New in this release: * Removed all significant sources of recursion, should handle long histories now * 'history' shows date of commit now, instead of date of changeset creation * 'describe' takes -d option, which shows a diff. Any additional arguments are considered filenames for which you want to see diffs * Better auxiliary data structure construction for better performance * Batch of micro-optimizations * New commands 'print_history' and 'print_dag' for dumping graphviz parseable graphs * Several commands including 'diff' and 'commit' operate in offline mode if no repository is set * Any command which took a changeset number can now also take a repository URL * Implemented a fairly fragile 'construct' command to bring your client to a particular history point. * * fixed: comment lost when merging back to a branch which has had no subsequent changes * fixed: reverting a file which has been deleted from the filesystem * fixed: rare case where commit fails with message 'unfilled line' * fixed: 'update -d' actually works * fixed: a few minor tracebacks and wrong return values * fixed: password changing works again * fixed: little endian ints don't string sort properly WARNING: The last bug fix requires a rebuild. Run 'rebuild' in your clients and start the server with -r the first time you run it. WARNING: Be careful with the 'construct' command! It will throw away all your local changes without asking. It is also pretty fragile. Cleanup will happen for the next release. Overall, this release eliminates roughly 30% of the CPU work. As mentioned briefly above, there is now an offline mode. This is automatic when no repository is set. 'commit' will always be run with the -n switch, 'diff' will diff against the last commit, etc. __________________________________________________________________ 7/21/2004: Quick bugfix release 0.1.7.1 pushed. There was a dumb bug which caused a traceback when using the internal diff in the previous release. Also a server traceback on post-commit actions. __________________________________________________________________ 7/20/2004: Version 0.1.7 is out! New in this release: * Only check for repository being set when necessary * 'diff' takes files to diff on command line * Better temp file naming when using external diff program * Slightly improved command line parsing * 'status' now supports -v, which will show extra and missing files via '??' and '!!' * Support for '...' wildcard expansion in all commands taking filenames, means recursive subdirectory scan * Regular expression list to ignore for 'add' (wildcard expansion only) and 'status -v' * More XML elements in post-commit * fixed: committing to unknown repository caused stack trace (introduced in 0.1.6) * fixed: 'revert' when result has conflicts * fixed: 'edit' can only apply to files, not directories * * fixed: cdv-agent doesn't delete socket when using -a * * fixed: cdv-agent doesn't work on platforms without poll(), such as OS X * fixed: eval `cdv-agent` hangs * fixed: check server post-commit patterns on startup * * fixed: cleanup of bsddb/bsddb3 loading * * fixed: traceback on unknown or non-unique change from user * fixed: traceback in 'update' when directory deleted which is not empty locally Lot's of polish has been done recently, I'll be back to core features pretty soon. And documentation. Really. I promise. Work done on supporting wildcard expansion will, probably in the next release, allow glob expansion for those poor souls using Windows without a shell to do it for them. The list of regular expressions to ignore should be in the file CVILLE/ignore. One per line. They must match the entire path name of the file to apply. So if you want to ignore all files ending with ~, you would say '.*~'. Keep in mind that the ignore patterns are also used by 'add' when expanding the '...' wildcard. You may still add files ignored by the expressions by explicitly naming them on the command line. __________________________________________________________________ 7/6/2004: Version 0.1.6 is out! New in this release: * Only ship sample cdvserver.conf. Prevents overwriting previous config. * Retry login a few times before failing * Verbose mode for 'history' via -v * 'history' command -m changed to -n * 'history' now supports -s # to skip displaying the first # changes * 'history' is relative to default (or named) repository * Include a cdv-agent so people don't have to type their passwords so much * Changes to the crypto code. Fixes and changes to allow the agent to work * cdvpasswd reads the config file now * cdvserver rereads password file when it changes, no longer requires restart * The various commands give return values * Added a "merged files" section to 'status' and 'commit' during merge operations * Better UI for 'update'. View is similar to 'status' and sorts files * Turned a bunch of command line errors into warnings * fixed: vi unhappy when /tmp is a symlink * fixed: modify file then delete bug * fixed: merge-only changes sometimes didn't show in 'history' The new agent supports exactly the same command line interaction as ssh-agent. It's basically transparent. If the enironment variables are set, then clients will only ask for a password if they can't log in using the agent. The password is then automatically added to the agent. There's no way the agent will work on windows. At least for now, sorry. Because of the crypto changes, it is not possible to mix and match new and old clients and servers. __________________________________________________________________ 6/18/2004: Version 0.1.5 is out! New in this release: * Server acts like a real server. See [10]server reference for more details. * Server allows commands to be run after each commit * 'commit' pops up an editor if no comment given on command line, obeys CDVEDITOR and EDITOR environment variables, in that order * 'commit' editor allows you to trim the list of files to commit * 'commit' accepts files to commit on the command line * 'history' view small UI cleanusp * 'history' takes -m #, to limit the number of changes shown * 'describe' UI cleanup * 'diff' sorts files for output * 'diff' supports external diff programs via the CDVDIFF environment variable * Report useful network error messages * fixed: rebuilding client and server left buggy history cruft * fixed: anonymous user should not be able to change password * fixed: 'diff' throws exception sometimes when diffing between 2 branches * fixed: 'revert -a' leaves files open for edit * fixed: 'remove' on a tree of files would return errors due to ordering * fixed: 'update' after file added and removed remotely * fixed: 'update' after multiple files removed remotely * fixed: 'commit' after file modified then removed locally * fixed: DNS failure throws exception * fixed: 'update' on windows spewed \r's all over files open for edit Be sure to read the server reference, there are significant changes. Python 2.3 is now required. There's too much useful stuff in there and I'm only going to use more of it in the future. __________________________________________________________________ 6/8/2004: Version 0.1.4 is out! New in this release: * Server option -r for reconstructing support data structures on startup * Server option -b for backup server mode * 'rebuild' command in client for reconstructing support data structures * 'is_ancestor' command in client, tells whether arg1 is an ancestor of arg2 * Small cleanups * 'remove' supports more than 1 file * 'history' option -h for user-specified head * 'update' option -d for pulling in changes without merging them (does not affect local files or history) * Catch generic exception in client and shut down cleanly * fixed: modifying file while merging fails * fixed: bad indexing structure creation prevents updating * fixed: traceback on update when there are conflicts in local files * fixed: tracebacks in various commands when file is removed from local filesystem * fixed: touched but unmodified files are erroneously included in changesets * fixed: server traceback when updating from non-existent repository * fixed: CVILLE is a reserved filename at any depth in the tree * fixed: removing a directory which isn't empty * fixed: renaming over existing local file * fixed: 'rename' second argument directory Once again, mostly a bugfix release. Most of the new features implemented were in support of bug-fixing activities. When upgrading, you will need to run the server with the -r switch the first time. You will also have to run cdv rebuild in all clients. The server now supports a backup mode. When started with -b, only updates from other servers can be committed. In addition, only incremental backups on an existing backup are allowed. The way to use a backup server is create repositories as usual, then in a client update from the repository you want to backup, then commit to the backup server repository. __________________________________________________________________ 5/27/2004: Version 0.1.3 is out! New in this release: * fixed: windows file problems * fixed: reusing names of deleted files * fixed: commit ignored certain types of diffs * fixed: files marked as editted but no actual changes caused traceback * fixed: files remain locked on server after commit error * fixed: spurious conflicts when lines removed from beginning or end of file * fixed: 'revert' on windows * fixed: traceback when no default repository set * Catch generic exceptions in server and shut down cleanly * Skip some unnecessary work on update * Use /dev/urandom instead of /dev/random * Confirm new password when changing passwords This is largely a bugfix release. Notably, this one should be useful under Windows. You will still have to execute as: C:\Python23\python.exe C:\Python23\Scripts\cdv.py ... Wildcard expansion doesn't work on Windows yet. A fairly elegant cherry-picking scheme has been worked out, but will have to wait until more of the basic functionality is implemented. I have upgraded my machine and am now using python 2.3. From now on, the rpm packages I make available will be for python 2.3. Please report problems with python 2.2 to me, as the current plan is to continue supporting it. __________________________________________________________________ 4/19/2004: Version 0.1.2 is out! New in this release: * Large performance improvements, works much better on large projects now * A crude "describe" command * Explicit edit mode, user specifies which files are modified instead of codeville detecting it automatically (not on by default) * Windows port * Better overlapping of CPU work with waiting on the network * Better feedback to the user during update Old clients will no longer work, the backend format has changed. Neither will old servers. To convert your server, first create a new directory where the new server will reside. Then run: cdvupgrade old_server_dir/ new_server_dir/ Then copy over the codeville_repository and passwd files. __________________________________________________________________ 3/3/2004: New release version 0.1.1 is out! New in this release: * Install script and RPM * New network protocol, authentication is now secure * Password changing through the client * Works out of the box with python 2.3 * Much improved status view * Miscellaneous little fixes * License changed to the Open Software License 2.0 __________________________________________________________________ 3/3/2004: [11]Slides from the Codecon presentation are up. __________________________________________________________________ 2/6/2004: If you are using an older version update NOW! There was a serious bug in some of the DAG code. Do not reuse your old repositories or clients. If you need to recover them, let me know and I'll write a conversion tool. The command line syntax for commit and update has changed, please look through the quickstart. -- [12]Bram and [13]Ross * [14]Home * [15]Download * [16]News * [17]Docs * [18]Todo References 1. http://codeville.org/ 2. http://codeville.org/download.php 3. http://codeville.org/news.php 4. http://codeville.org/doc/ 5. http://codeville.org/doc/ToDoList 6. http://codeville.org/docs/todo.php 7. http://mail.off.net/mailman/listinfo/codeville-devel 8. http://mosuki.com/ 9. http://codeville.org/docs/reference.php 10. http://codeville.org/docs/server.php 11. http://codeville.org/codecon/ 12. http://bitconjurer.org/ 13. mailto:rcohen@snurgle.removeme.org 14. http://codeville.org/ 15. http://codeville.org/download.php 16. http://codeville.org/news.php 17. http://codeville.org/doc/ 18. http://codeville.org/doc/ToDoList debian/source/0000755000000000000000000000000011533451165010472 5ustar debian/source/format0000644000000000000000000000001411533451165011700 0ustar 3.0 (quilt) debian/stamp-patch-debian=patches=mergelcs-shebang.patch0000644000000000000000000000000011533450713020531 0ustar debian/cdv-agent.10000644000000000000000000000132011533450176011121 0ustar .TH "CDV-AGENT" 1 "Dec 1 2005" .SH NAME cdv\-agent \- codeville authentication agent .SH SYNOPSIS .nf .B cdv\-agent [\-a \fIbind_address\fP] [\-c | \-s] [\-t life] [\-d] [command [args ...]] .B cdv\-agent [\-c | \-s] \-k .fi .SH DESCRIPTION \fBcdv-agent\fP is a agent for holding passwords for a codeville server, so that users don't need to type passwords so much. The options are taken from the \fBssh\-agent\fP and perform the same purpose. .SH SEE ALSO .BR ssh-agent (1), .BR cdvserver (1), .BR cdv (1), .UR http://www.codeville.com .BR http://www.codeville.com .SH AUTHOR This manual page was written by Michael Janssen , for the Debian GNU/Linux system (but may be used by others). debian/ClientReference.txt0000644000000000000000000003010211533450176012765 0ustar #[1]Codeville Wiki Recent Changes [2]Start [3]Wiki Markup [4]Print View [5]Search [6]Index [7]Glossary [8]Help [9]Codeville Wiki Search: ____________________ Titles Text * [10]Login * [11]FrontPage * [12]RecentChanges * [13]FindPage * [14]HelpContents * [15]ClientReference __________________________________________________________________ * Immutable Page * [16]Show Changes * [17]Get Info * More Actions: [Show Raw Text......] Do [18]ClientReference Codeville commands Options -p, --path to client -R, --repository for this operation -u, --user as whom to perform this operation -V, --version Print version information Subcommands add * Add new files to the repository. All files must be added before they will be part of the version control system. __________________________________________________________________ commit [-b] [-m |-M ] [-D ] [-n] * Commits all changes made to the repository since the last commit. A comment is required for every commit. It may either be supplied via the -m option for simple comments or if the -m option is omitted, whatever editor is specified in the EDITOR environment variable will be launched. If no editor is specified, vi is the default in all unixy environments (including OS X and cygwin) and Notepad is the default in Windows. In the editor, a comment may be added at the top, and file changes which the user does not wish to have in a given changeset can be removed by deleting them from the "### files" list at the bottom (although merging cannot be avoided through deleting things from the "### merge files" list). Every commit creates a changeset. If there are changes since the last update, files will be merged. In the event of unresolved conflicts, the user will be prompted to resolve them. -b, --backup Forces commit to not make a new changeset. This will commit changes which have already been committed locally via -n (or as a result of having multiple repositories involved), but will not create a new changeset for existing file modifications. This is especially needed for committing to back-up servers (servers started with -b) as it is the only way to commit changes to a back-up server. This is not the recommended way to commit changes to normal servers. In general, if one wishes to commit changes committed offline without committing new changes, one should commit and changeset with all the files in the "### files" list removed. -D, --date YYYY/MM/DD HH:MM:SS TZ indicating changeset creation time -m, --message Use message as the commit message -M, --message-file Get commit message from file -n, --no-network is used to commit changes off-line. Changes committed off-line can still be used with all commands, but are not visible to other users until an on-line commit is done. __________________________________________________________________ construct * Recreates the repository at the given changeset. __________________________________________________________________ create * Creates a new repository with the appropriate name. __________________________________________________________________ describe [-x|-d] [-s] * Gives the description of the changeset including the long name of the change, the user who made the change, that date it was made, the comment, the relation it has to other changesets, and what files were modified and in what manner they were modified (i.e. added, modified, renamed, or deleted). -d, --diff does a diff -x, --xml displays an XML version of the output. This is not compatible with displaying a diff. This can only be used with parenthesized changesets from the file history. It's sort of a hack right now, really. __________________________________________________________________ destroy * Destroys a repository. The opposite of create. __________________________________________________________________ diff [-r [-r ] ] [] * Does a diff between different versions of each of given files. If no files are specified, all relevant files are shown. The first -r option indicates which changeset the diff should be from, the second which it should be to. If no changesets are specified, it shows the difference between the last known state of the repository and the current client state. __________________________________________________________________ edit * Enables editting a file. When not in edit-mode, this is unnecessary. __________________________________________________________________ heads * Lists the root nodes in the graph of changesets. __________________________________________________________________ history [-h ] [-c ] [-s ] [-v] [] * Gives the history of the repository or of the files specified. Specifically, it lists all relevant change sets by short name, user, date, and comment in most recent first order. -c, --count print only the specified number of changes. -h, --head print the history starting at the given changeset. -s, --skip skips the first skip count changes. -v, --verbose causes it to print the changes verbosely which includes additional information about each changeset which affected the files. __________________________________________________________________ init * Initialize a new client with the current directory as the root. Specify a directory other than current one by using the top level -p switch. __________________________________________________________________ is_ancestor * Tells whether or not changeset1 is an ancestor of changeset2. Note that it is possible for neither changeset to be an ancestor of the other. __________________________________________________________________ last-modified * Returns the last changeset which modified a given file. __________________________________________________________________ list-repos * Lists all the repositories on the same server as the repository you are in. __________________________________________________________________ password * Change your password. __________________________________________________________________ print_dag [-h ] [-h ] [...] * Prints the directed acyclic graph which shows the changesets which have been applied to a file and their relationships. Changesets specified with -h are treated as head nodes for the graph (i.e. later changesets are excluded). __________________________________________________________________ print_history [] * Prints the directed acylcic graph of the the entire history. Starts at the given changeset, if provided. __________________________________________________________________ rebuild * Recreates all of the metadata from the static history. This should generally only be done when instructed to by software upgrade instructions. __________________________________________________________________ remove * Deletes files from the repository. __________________________________________________________________ rename * Moves or renames files. __________________________________________________________________ revert [-a] * Reverts any local changes to the file. At this time only changes to the content of the file can be reverted. The ability to revert adds, deletes, and renames will be coming in the future. There is a subtle difference in the definition of revert from what you might expect. It does not guarantee that it will restore the file to some previous state. For example, if you are in the middle of a merge and call revert on a file, it will be regenerated by running the merge. If the file were modified prior to running the merge update, the file contents will now be different from anytime in the past. Revert should be thought of as throwing away uncommitted changes. -a, --unmodified indicates files should only be reverted if they have not been modified. Basically unmarks them as open for edit. __________________________________________________________________ set * Sets a Codeville variable to a given value. __________________________________________________________________ show-vars * Show a list of all Codeville variables and what they are set to. __________________________________________________________________ status [-v] * Shows changes not yet committed to the repository in brief. -v, --verbose A more verbose status which includes mention of files which are in the directory space, but not in the repository and files missing from the directory space. __________________________________________________________________ unset * Removes a Codeville variable so that it no longer has any setting. __________________________________________________________________ update [-d] * Gets all changes made to the repository since the last time you did an update. Files will be merged as necessary. In the event of unresolved conflicts, the user will be asked to resolve them. -d, --dont-merge Pull in changesets but do not merge them. Has no effect on the workspace state. This allows a user to browse and diff changesets without having to merge. Specifying files: General Notes Files can be specified using bash-style wildcards on any platform. In addition, '...' behaves like a find command, expanding all files and directories within subdirectories. All printed graphs are output in a format intended to be run through the graphviz "dot" tool. Using tcsh as the startup shell under cygwin appears to result in the Python password command hanging, so it is incompatible with Codeville and there's not a thing we can do about it. last edited 2007-09-03 23:31:00 by RossCohen * Immutable Page * [19]Show Changes * [20]Get Info * More Actions: [Show Raw Text......] Do * [21]MoinMoin Powered * [22]Python Powered * [23]Valid HTML 4.01 References 1. http://codeville.org/doc/RecentChanges?action=rss_rc&ddiffs=1&unique=1 2. http://codeville.org/doc/FrontPage 3. http://codeville.org/doc/ClientReference?action=raw 4. http://codeville.org/doc/ClientReference?action=print 5. http://codeville.org/doc/FindPage 6. http://codeville.org/doc/TitleIndex 7. http://codeville.org/doc/WordIndex 8. http://codeville.org/doc/HelpOnFormatting 9. http://codeville.org/doc/FrontPage 10. http://codeville.org/doc/UserPreferences 11. http://codeville.org/doc/FrontPage 12. http://codeville.org/doc/RecentChanges 13. http://codeville.org/doc/FindPage 14. http://codeville.org/doc/HelpContents 15. http://codeville.org/doc/ClientReference 16. http://codeville.org/doc/ClientReference?action=diff 17. http://codeville.org/doc/ClientReference?action=info 18. http://codeville.org/doc/ClientReference?action=fullsearch&value=linkto%3A%22ClientReference%22&context=180 19. http://codeville.org/doc/ClientReference?action=diff 20. http://codeville.org/doc/ClientReference?action=info 21. http://moinmoin.wikiwikiweb.de/ 22. http://www.python.org/ 23. http://validator.w3.org/check?uri=referer debian/QuickStartGuide-1.html0000644000000000000000000001350311533450176013271 0ustar #[1]Codeville Wiki Recent Changes [2]Start [3]Wiki Markup [4]Print View [5]Search [6]Index [7]Glossary [8]Help [9]Codeville Wiki Search: ____________________ Titles Text * [10]Login * [11]FrontPage * [12]RecentChanges * [13]FindPage * [14]HelpContents * [15]QuickStartGuide _________________________________________________________________ * Immutable Page * [16]Show Changes * [17]Get Info * More Actions: [Show Raw Text......] Do [18]QuickStartGuide All client instructions below assume you are within your workspace directory, not including the .cdv dir. Creating a new project Create a workspace directory and populate it with the files you want checked in. Within that directory: cdv init cdv set user cdv set repository cdv create cdv add ... cdv commit Note: use of an email address as the username is recommended. If you do not wish to collaborate with others or use a server for any other purpose, skip both setting repository and running create. A repository URL has the following form: cdv://[:]/ Check out an existing project cdv init cdv set user cdv set repository cdv update Making changes Codeville automatically detects when you have edited files in a client. Rename or move files or directories: cdv rename Delete files or directories: cdv remove View your changes: cdv diff [-r [-r ]] One -r 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 -R). The second defaults to local, which is the current state of the workspace. Show a more compact list of changes: cdv status When you are happy with your changes: cdv commit Reverting changes Discard uncommitted file edits: cdv revert Only changes to a file's contents can be reverted at this time. Name operations (add, delete, rename) are not yet reversible. Taking branches Branch using your current client state: cdv create cdv -R commit URL2 does not need to be on the same server as the URL you are branching from. Merging branches To merge URL2 into URL, from a client with URL set as the repository: cdv update cdv -R update (Resolve any name or merge conflicts) cdv commit You may continue using branches after you have merged them. Codeville supports arbitrary branching, merging and remerging of any and all branches. Resolving conflicts File conflicts are presented in a similar fashion to CVS. Conflicting sections of the file will be marked with <<<<<<<, ======= and >>>>>>>. Naming conflicts will result in mangled filenames. Look for files and directories which end with .nameconflict.local, .orphaned, .loop, etc. Sometimes there will be a file with a ".info" extension which contains where the file exists according to the update which caused the problem. Other stuff View history: cdv history 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. Starting a server Choose a directory to start the server in. Change into the directory and run: cdvserver -i -f . You will also need to create at least 1 account. Do this by running the cdvpasswd program in the server directory, for example: cdvpasswd -f passwd add The special username "anonymous" is only allowed to do read operations on the repository. Run cdvserver: cdvserver -n -d -f You now have a running server. Running without -d will cause the server to fork off into the background and generally act more server-like. See the server reference for more details. Miscellaneous notes Performance should be reasonable, there are still more optimizations to be done. For now, you will get better performance by updating after each commit. 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. At this point the repository format should be stable enough that there will always be an upgrade path for the servers. last edited 2005-10-06 23:46:50 by RossCohen * Immutable Page * [19]Show Changes * [20]Get Info * More Actions: [Show Raw Text......] Do * [21]MoinMoin Powered * [22]Python Powered * [23]Valid HTML 4.01 References 1. http://codeville.org/doc/RecentChanges?action=rss_rc&ddiffs=1&unique=1 2. http://codeville.org/doc/FrontPage 3. http://codeville.org/doc/QuickStartGuide?action=raw 4. http://codeville.org/doc/QuickStartGuide?action=print 5. http://codeville.org/doc/FindPage 6. http://codeville.org/doc/TitleIndex 7. http://codeville.org/doc/WordIndex 8. http://codeville.org/doc/HelpOnFormatting 9. http://codeville.org/doc/FrontPage 10. http://codeville.org/doc/UserPreferences 11. http://codeville.org/doc/FrontPage 12. http://codeville.org/doc/RecentChanges 13. http://codeville.org/doc/FindPage 14. http://codeville.org/doc/HelpContents 15. http://codeville.org/doc/QuickStartGuide 16. http://codeville.org/doc/QuickStartGuide?action=diff 17. http://codeville.org/doc/QuickStartGuide?action=info 18. http://codeville.org/doc/QuickStartGuide?action=fullsearch&value=linkto%3A%22QuickStartGuide%22&context=180 19. http://codeville.org/doc/QuickStartGuide?action=diff 20. http://codeville.org/doc/QuickStartGuide?action=info 21. http://moinmoin.wikiwikiweb.de/ 22. http://www.python.org/ 23. http://validator.w3.org/check?uri=referer debian/NEWS.Debian0000644000000000000000000000347111533450176011060 0ustar codeville (0.1.16-1) unstable; urgency=low New upstream version and some documentation changes for the Debian package. Documents are now pulled from the Codeville website and wiki using the debian/rules target `doc-update'. -- Chad Walstrom Tue, 28 Feb 2006 11:12:56 -0600 codeville (0.1.12-0) experimental; urgency=low (From the NEWS section of the Codeville homepage) 5/7/2005: Version 0.1.12 is out! New in this release: * fixed: obscure issues in cdvupgrade pertaining to convergence * fixed: small issue with changeset generation related to the * above issue * fixed: packaging issue which prevented code needed by cdvupgrade * from being included * fixed: a few issues with the new unified diff code * fixed: setup.py reflects the new code license * fixed: cdvupgrade fixed so running cdvupgrade on its own output * is an identity operation * fixed: cdvupgrade ignores floating history on servers -- Chad Walstrom Thu, 12 May 2005 10:08:47 -0500 codeville (0.1.11-0) experimental; urgency=low In this version of Codeville, the biggest news for Debian is probably the license change, which is now a BSD style license instead of the Open Source License v2.0. Usability enhancements were introduced upstream, as well as a new merge algorithm and performance enhancements. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! You must run cdvupgrade on any clients and servers for this !! !! release. Note that it is much faster to do fresh checkouts !! !! than to upgrade clients. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Read the upstream changelog for more details. -- Chad Walstrom Fri, 6 May 2005 10:26:50 -0500 debian/cdvpasswd.10000644000000000000000000000111011533450176011244 0ustar .TH "CDVPASSWD" 1 "Dec 1 2005" .SH NAME cdvpasswd \- adds, removes, or sets passwords for users of a cdv server. .SH SYNOPSIS .B cdvpasswd [ add | set | delete ] \fIusername\fP .SH OPTIONS .TP .B "\-c " Specify the config file which the server is running on. .TP .B "\-f " Specify the password file to modify. .SH SEE ALSO .BR cdv (1), .BR cdvserver (1), .UR http://www.codeville.org/ .BR http://www.codeville.org/ .SH AUTHOR This manual page was written by Michael Janssen , for the Debian GNU/Linux system (but may be used by others). debian/patches/0000755000000000000000000000000011533455056010624 5ustar debian/patches/lcsmatch-shebang.patch0000644000000000000000000000022511533450176015045 0ustar --- orig/Codeville/lcsmatch.py +++ mod/Codeville/lcsmatch.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # Written by Bram Cohen and Uoti Urpala debian/patches/mergelcs-shebang.patch.level-1.log0000644000000000000000000000060211533450713017070 0ustar can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |--- Codeville/mergelcs.py.orig 2005-07-14 10:00:03.207184679 -0500 |+++ Codeville/mergelcs.py 2005-07-14 10:00:13.804793263 -0500 -------------------------- File to patch: Skip this patch? [y] Skipping patch. 1 out of 1 hunk ignored debian/patches/debian-changes-0.8.0-20000644000000000000000000003425511533455056014210 0ustar Description: Upstream changes introduced in version 0.8.0-2 This patch has been created by dpkg-source during the package build. Here's the last changelog entry, hopefully it gives details on why those changes were made: . codeville (0.8.0-2) unstable; urgency=low . * Ack NMUs - Thanks Frencesco and Nico! * Remove Chad Walstrom from Uploaders list (retired). Closes: #572671 * Remove Homepage because the link is now broken. * Update init script for $remote_fs since /usr might be remote. * Bump Standards-Version to 3.9.1 (no changes) * Use hashlib instead of sha (depreciated) . The person named in the Author field signed this changelog entry. Author: Michael Janssen Bug-Debian: http://bugs.debian.org/572671 --- The information above should follow the Patch Tagging Guidelines, please checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here are templates for supplementary fields that you might want to add: Origin: , Bug: Bug-Debian: http://bugs.debian.org/ Bug-Ubuntu: https://launchpad.net/bugs/ Forwarded: Reviewed-By: Last-Update: --- codeville-0.8.0.orig/cdvserver.conf.sample +++ codeville-0.8.0/cdvserver.conf.sample @@ -4,7 +4,7 @@ #logfile=/var/log/cdvserver.log #backup=False #port=6601 -user=cdv +#user=cdv [post-commit] # keys are regular expression matching repository names --- codeville-0.8.0.orig/Codeville/crypt.py +++ codeville-0.8.0/Codeville/crypt.py @@ -2,14 +2,14 @@ # see LICENSE.txt for license information from entropy import string_to_long, long_to_string -import sha +import hashlib def crypt(text, key, counter=0L): keylen, length = len(key), len(text) pos, cyphertext = 0, [] while pos < length: scounter = long_to_string(counter, keylen) - hash = sha.new("ctr mode crypt" + key + scounter).digest() + hash = hashlib.sha1("ctr mode crypt" + key + scounter).digest() for i in xrange(min(length-pos, len(hash))): cyphertext.append(chr(ord(hash[i]) ^ ord(text[pos]))) pos += 1 --- codeville-0.8.0.orig/Codeville/agent.py +++ codeville-0.8.0/Codeville/agent.py @@ -9,7 +9,7 @@ try: import select except ImportError: import selectpoll as select -import sha +import hashlib import socket import SRP from cStringIO import StringIO @@ -108,12 +108,12 @@ class Agent: type = msg['type'] if type == 'CDV_AGENT_ADD_PASSWORD': - id = sha.new('password' + msg['password']).digest() + id = hashlib.sha1('password' + msg['password']).digest() self.identities[id] = msg['password'] self._write_answer(sock, bencode({'id': id})) elif type == 'CDV_AGENT_ADD_SECRET': - id = sha.new('public hash check' + msg['secret']).digest() + id = hashlib.sha1('public hash check' + msg['secret']).digest() self.identities[id] = msg['secret'] self._write_answer(sock, bencode({'id': id})) @@ -123,7 +123,7 @@ class Agent: return secret = crypt(msg['secret'], self.identities[msg['id']])[0] - id = sha.new('public hash check' + secret).digest() + id = hashlib.sha1('public hash check' + secret).digest() if id != msg['secret_id']: self._write_error(sock, 'id does not match') return @@ -156,7 +156,7 @@ class Agent: base = 'session key' + self.identities[msg['id']] + \ msg['salt1'] + msg['salt2'] - key = sha.new(base).digest() + key = hashlib.sha1(base).digest() answer = {'key': key} self._write_answer(sock, bencode(answer)) --- codeville-0.8.0.orig/Codeville/lcsmatch.py +++ codeville-0.8.0/Codeville/lcsmatch.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # Written by Bram Cohen and Uoti Urpala --- codeville-0.8.0.orig/Codeville/diff.py +++ codeville-0.8.0/Codeville/diff.py @@ -1,5 +1,3 @@ -#!/usr/bin/python - # Written by Ross Cohen # see LICENSE.txt for license information --- codeville-0.8.0.orig/Codeville/client_helpers.py +++ codeville-0.8.0/Codeville/client_helpers.py @@ -16,7 +16,7 @@ from merge import find_resolution import os from os import path from path import breakup -import sha +import hashlib import stat from time import time import zlib @@ -27,14 +27,14 @@ class CommitError(Exception): def new_handle(co, txn): """Create a temporary handle for new files in the working copy""" num = bdecode(co.linforepo.get('lasthandle', txn=txn)) + 1 - handle = sha.new(str(num)).digest() + handle = hashlib.sha1(str(num)).digest() co.linforepo.put('lasthandle', bencode(num), txn=txn) return handle def create_handle(precursors, hinfo): """Create a permanent identifier for use in a changeset description""" binfo = bencode({'precursors': precursors, 'handle': hinfo}) - return sha.new(binfo).digest() + return hashlib.sha1(binfo).digest() def handle_name(co, handle, txn): """Returns a dict specifying name, parent and other info""" @@ -385,7 +385,7 @@ def gen_changeset(co, files, comment, re return None mtime = int(path.getmtime(lfile)) co.modtimesdb.put(handle, bencode(mtime), txn=txn) - hinfo['hash'] = sha.new(diff).digest() + hinfo['hash'] = hashlib.sha1(diff).digest() return zlib.compress(diff, 6) precursors = bdecode(co.linforepo.get('heads')) @@ -556,7 +556,7 @@ def gen_changeset(co, files, comment, re # put together the changeset and calculate the point bchangeset = bencode(changeset) - point = sha.new(bchangeset).digest() + point = hashlib.sha1(bchangeset).digest() # write the file locations of the diffs to the db for handle, index in indices.items(): --- codeville-0.8.0.orig/Codeville/client.py +++ codeville-0.8.0/Codeville/client.py @@ -38,7 +38,7 @@ from path import mdir, subpath, breakup, from random import randrange import re from sets import Set -import sha +import hashlib import shlex import shutil import stat @@ -1022,7 +1022,7 @@ def populate_local_repos(co, ltxn): return root = bencode({'precursors': [], 'handles': {roothandle: {'add': {'type': 'dir'}, 'name': ''}}}) - head = sha.new(root).digest() + head = hashlib.sha1(root).digest() assert head == rootnode co.lcrepo.put(head, root, txn=ltxn) co.linforepo.put('heads', bencode([head]), txn=ltxn) --- codeville-0.8.0.orig/Codeville/auth.py +++ codeville-0.8.0/Codeville/auth.py @@ -7,7 +7,7 @@ from crypt import crypt from errno import ECONNRESET from getpass import getpass from os import environ -import sha +import hashlib import socket import SRP from StringIO import StringIO @@ -79,7 +79,7 @@ class Auth: # double check the decrypted secret against the known hash # to make sure the user typed in the right password secret = crypt(esecret, self.password)[0] - if sha.new('public hash check' + secret).digest() != secret_hash: + if hashlib.sha1('public hash check' + secret).digest() != secret_hash: raise AuthError, 'Bad password' self.secret = secret @@ -89,7 +89,7 @@ class Auth: self.secret = secret # XXX: assert self.hash == hash - #hash = sha.new('public hash check' + secret).digest() + #hash = hashlib.sha1('public hash check' + secret).digest() if self.agent_sock is not None: msg = {'id': self.hash, 'secret': secret} @@ -131,7 +131,7 @@ class Auth: if self.secret is not None: base = 'session key' + self.secret + salt1 + salt2 - key = sha.new(base).digest() + key = hashlib.sha1(base).digest() elif self.agent_sock is not None: msg = {'id': self.hash, 'salt1': salt1, 'salt2': salt2} @@ -164,7 +164,7 @@ class Auth: else: self.password = getpass() - self.pwid = sha.new('password' + self.password).digest() + self.pwid = hashlib.sha1('password' + self.password).digest() if self.agent_sock is not None: msg = {'password': self.password} --- codeville-0.8.0.orig/Codeville/server.py +++ codeville-0.8.0/Codeville/server.py @@ -20,7 +20,7 @@ from passwd import Passwd from random import randrange from RawServer import RawServer import re -import sha +import hashlib import SRP from sys import version_info from threading import Event @@ -213,7 +213,7 @@ class ServerHandler(ServerRepository): return socket['user'] = msg['user'] if msg['op'] == 'get hash': - self._send_msg(s, {'hash': sha.new('public hash check' + pw['secret']).digest()}) + self._send_msg(s, {'hash': hashlib.sha1('public hash check' + pw['secret']).digest()}) socket['state'] = 3 elif msg['op'] == 'secret auth': self._secret_auth(s) @@ -268,10 +268,10 @@ class ServerHandler(ServerRepository): return base = 'session key' + pw['secret'] + socket['salt'] + msg['salt'] - key = sha.new(base).digest() + key = hashlib.sha1(base).digest() socket['m_in'] = hmac.new(key, '', sha) base = 'session key' + pw['secret'] + msg['salt'] + socket['salt'] - key = sha.new(base).digest() + key = hashlib.sha1(base).digest() socket['m_out'] = hmac.new(key, '', sha) if msg['auth'] != socket['m_out'].digest(): @@ -425,7 +425,7 @@ class ServerHandler(ServerRepository): lstate = self.socket[s][Response][rstate['ref']] changeset = msg['changeset'] del msg['changeset'] - if sha.new(changeset).digest() != rstate['changenum']: + if hashlib.sha1(changeset).digest() != rstate['changenum']: self._close(s) return write_changeset(self, rstate['changenum'], changeset, lstate['txn']) @@ -605,7 +605,7 @@ class ServerHandler(ServerRepository): 'user': self.socket[s][User], 'time': int(time()), 'handles': {}}) - new_head = request['new head'] = sha.new(changeset).digest() + new_head = request['new head'] = hashlib.sha1(changeset).digest() write_changeset(self, new_head, changeset, txn) else: new_head = request['head'] --- codeville-0.8.0.orig/Codeville/upgrade.py +++ codeville-0.8.0/Codeville/upgrade.py @@ -11,7 +11,7 @@ from Codeville.history import HistoryErr from Codeville.old.history import handle_contents_at_point as old_handle_contents_at_point from Codeville.old.history import handle_name_at_point as old_handle_name_at_point import copy -import sha +import hashlib from sys import stdout import zlib @@ -191,7 +191,7 @@ def convert_cset(UR, point): if dinfo is not None: diff = bencode(dinfo) - new_hinfo['hash'] = sha.new(diff).digest() + new_hinfo['hash'] = hashlib.sha1(diff).digest() # if this used to be a clean merge, we have to replace it if not old_cset.has_key(old_handle) or not old_cset[old_handle].has_key('hash'): @@ -237,7 +237,7 @@ def convert_cset(UR, point): forced_cset['comment'] = '--- change created by cdvupgrade ---\n' bforced_cset = bencode(forced_cset) - forced_point = sha.new(bforced_cset).digest() + forced_point = hashlib.sha1(bforced_cset).digest() UR.new_repo.lcrepo.put(forced_point, bforced_cset, txn=UR.txn) index_point = forced_point @@ -249,7 +249,7 @@ def convert_cset(UR, point): # calculate the new point name and write it out bnew_cset = bencode(new_cset) - new_point = sha.new(bnew_cset).digest() + new_point = hashlib.sha1(bnew_cset).digest() UR.new_repo.lcrepo.put(new_point, bnew_cset, txn=UR.txn) UR.point_map[point] = new_point --- codeville-0.8.0.orig/Codeville/history.py +++ codeville-0.8.0/Codeville/history.py @@ -7,7 +7,7 @@ from db import db from DFS import DFS from merge import MergeError, replay from os import path -from sha import sha +from hashlib import sha1 import struct from time import localtime, strftime from xml.sax import saxutils @@ -406,7 +406,7 @@ def _verify_manifest(co, handle, point, def validate_handle(handle, precursors, hinfo): encinfo = bencode({'precursors': precursors, 'handle': hinfo}) - if sha(encinfo).digest() != handle: + if sha1(encinfo).digest() != handle: raise HistoryError, 'bad identifier' def pretty_print_big_dag(co, heads): --- codeville-0.8.0.orig/Codeville/mergelcs.py +++ codeville-0.8.0/Codeville/mergelcs.py @@ -1,5 +1,3 @@ -#!/usr/bin/python - # Written by Uoti Urpala --- codeville-0.8.0.orig/Codeville/client_net.py +++ codeville-0.8.0/Codeville/client_net.py @@ -18,7 +18,7 @@ from merge import find_conflict_multiple from network import Request, Response, NetworkHandler, NetworkError from os import path from RawServer import RawServer -import sha +import hashlib import SRP from threading import Event import zlib @@ -186,7 +186,7 @@ class ClientHandler: def _response_get_change(self, s, mid, msg, rstate): lstate = self.socket[s][Request][rstate['ref']] - if sha.new(msg['changeset']).digest() != rstate['changenum']: + if hashlib.sha1(msg['changeset']).digest() != rstate['changenum']: raise ServerError, 'bad changeset' # write it out, decode and eject from memory --- codeville-0.8.0.orig/Codeville/SRP.py +++ codeville-0.8.0/Codeville/SRP.py @@ -9,7 +9,7 @@ distribution at http://srp.stanford.edu/ from entropy import random_long, random_string, string_to_long, long_to_string import hmac -import sha +import hashlib # Some constants defining the sizes of various entities. @@ -35,7 +35,7 @@ def hash(s): if type(s) != type(''): s = long_to_string(s) - return sha.new(s).digest() + return hashlib.sha1(s).digest() def private_key(u, s, p): """Given the username, salt, and cleartext password, return the private debian/patches/diff-shebang.patch.level-1.log0000644000000000000000000000057211533450713016205 0ustar can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |--- Codeville/diff.py.orig 2005-05-02 16:36:47.659432203 -0500 |+++ Codeville/diff.py 2005-05-02 16:36:53.518665260 -0500 -------------------------- File to patch: Skip this patch? [y] Skipping patch. 1 out of 1 hunk ignored debian/patches/lcsmatch-shebang.patch.level-1.log0000644000000000000000000000004411533450713017065 0ustar patching file Codeville/lcsmatch.py debian/patches/mergelcs-shebang.patch.level-0.log0000644000000000000000000000004411533450713017067 0ustar patching file Codeville/mergelcs.py debian/patches/mergelcs-shebang.patch0000644000000000000000000000030411533450176015046 0ustar --- Codeville/mergelcs.py.orig 2005-07-14 10:00:03.207184679 -0500 +++ Codeville/mergelcs.py 2005-07-14 10:00:13.804793263 -0500 @@ -1,5 +1,3 @@ -#!/usr/bin/python - # Written by Uoti Urpala debian/patches/series0000644000000000000000000000002711533451530012031 0ustar debian-changes-0.8.0-2 debian/patches/diff-shebang.patch.level-0.log0000644000000000000000000000004011533450713016172 0ustar patching file Codeville/diff.py debian/patches/diff-shebang.patch0000644000000000000000000000034411533450176014161 0ustar --- Codeville/diff.py.orig 2005-05-02 16:36:47.659432203 -0500 +++ Codeville/diff.py 2005-05-02 16:36:53.518665260 -0500 @@ -1,5 +1,3 @@ -#!/usr/bin/python - # Written by Ross Cohen # see LICENSE.txt for license information debian/compat0000644000000000000000000000000211533450176010371 0ustar 5 debian/cdvserver.10000644000000000000000000000300311533450176011254 0ustar .TH "CDVSERVER" 1 "Dec 1 2005" .SH NAME cdvserver \- server for the codeville distributed revision system. .SH SYNOPSIS .B cdvserver [\-c \fBfile\fP | \-n] [\-f \fBfile\fP] [\-l \fBfile\fP] [-p \fBfile\fP] [\-b] [\-d] [\-r] [\-u \fBuser\fP] .SH DESCRIPTION This manual page documents briefly the \fBcdvserver\fP command. This manual page was written for the Debian distribution because the original program does not have a manual page. .PP \fBcdvserver\fP is a server for the codeville distributed revision system. A server keeps track of revisions and holds a database used for revision control. The codeville system needs both a server and a client. \fBcdv\fP is the only known codeville client. .SH OPTIONS .B \-c Specify file to use as a configuration file. .TP .B \-n Don't use a configuration file. .TP .B \-f Specify where all the database files and password file go. .TP .B \-l Specify where the server output goes when daemonized. .TP .B \-p Specify a file to hold the process ID of the server in. .TP .B \-b Start server in backup mode. .TP .B \-d Don't daemonize, won't write pidfile or logfile. .TP .B \-u Run as the given user, must be root to do this. .TP .B \-r Rebuild internal data structures on startup. .SH SEE ALSO .BR cdv (1), .BR cdvpasswd (1), .UR http://www.codeville.org .BR http://www.codeville.org .SH AUTHOR This manual page was written by Michael Janssen , for the Debian GNU/Linux system (but may be used by others). debian/rules0000755000000000000000000000375711533451513010263 0ustar #!/usr/bin/make -f # -*- makefile -*- # Debian rules file for codeville # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 # Python DEB_PYTHON_SYSTEM=pysupport ################################################################################ # CDBS File Inclusions and Variable Declarations ################################################################################ include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/python-distutils.mk # Careful, fails to recognize epochs UPSTREAM_VERSION=$(shell dpkg-parsechangelog|sed -n -e 's/^Version: \(.*\)-.*/\1/ p') # Pure python library for site-python directory #DEB_PYTHON_INSTALL_ARGS_ALL = --no-compile -O0 --install-purelib=/usr/lib/site-python doc-update: doc-update-stamp doc-update-stamp: @echo "Fetching documentation from site and wiki." lynx -dump http://codeville.org/news.php > debian/NEWS.upstream lynx -dump http://codeville.org/doc//QuickStartGuide > debian/QuickStartGuide.txt lynx -source http://codeville.org/doc//QuickStartGuide > debian/QuickStartGuide.html lynx -dump http://codeville.org/doc/ServerReference > debian/ServerReference.txt lynx -source http://codeville.org/doc/ServerReference > debian/ServerReference.html lynx -dump http://codeville.org/doc/ClientReference > debian/ClientReference.txt lynx -source http://codeville.org/doc/ClientReference > debian/ClientReference.html lynx -dump http://codeville.org/doc/ToDoList > debian/ToDoList.txt lynx -source http://codeville.org/doc/ToDoList > debian/ToDoList.html : > $@ # codeville tries to install documentation in the Right Place(TM), but # gets it wrong for Debian. Already included the LICENSE.txt in the # copyright file. install/codeville:: mkdir -p debian/codeville/etc mv debian/codeville/usr/share/doc/Codeville-$(UPSTREAM_VERSION)/cdvserver.conf.sample \ debian/codeville/etc/cdvserver.conf rm -rf debian/codeville/usr/share/doc/Codeville-$(UPSTREAM_VERSION) clean:: -find -name \*.pyc -exec rm \{\} \; -rm doc-update-stamp debian/stamp-patched0000644000000000000000000000000011533450713011633 0ustar debian/pyversions0000644000000000000000000000000511533450176011332 0ustar 2.3- debian/ServerReference.html0000644000000000000000000002447011533450176013155 0ustar ServerReference - Codeville Wiki

ServerReference

Running a Server

  • cdvserver

Unix and OS X

Config file options

-c <configfile>
-n

no config file

Files and Directories

-f <datadir>

where all the database files and password file go

-l <logfile>

server output goes here when daemonized

-p <pidfile>

Control options

-b

start server in backup mode

-d

don"t daemonize, won"t write pidfile or logfile

-u <user>

run as the given user, must be root to do this

-r

rebuild internal data structures on startup

General Notes

By default, the server will look for a config file in /etc/cdvserver.conf. The distributed version includes the defaults for the various options commented out. Command line options take precedence over the config file.

Windows

The above options largely apply, except the server does not look for a config file by default, does not daemonize and assumes the data dir is the current directory.

Config File

The [control] section of the config file should be self-explanatory. Key/value pairs in [post-commit] allow you to execute scripts in response to checkins. Keys are regular expressions, matched against the repository name. Values are scripts into which some XML describing the checkin will be sent as stdin. The XML is the same as the output of describe with the -x option, only there is also a <repository> tag in the server generated version.

last edited 2007-09-03 23:32:52 by RossCohen

debian/control0000644000000000000000000000132111533453101010562 0ustar Source: codeville Section: devel Priority: optional Maintainer: Michael Janssen Build-Depends: cdbs (>= 0.4.43), python (>= 2.3.5-11), debhelper (>= 5.0.37.2), python-support (>= 0.3) Standards-Version: 3.9.1 Package: codeville Architecture: all Depends: ${python:Depends}, ${misc:Depends}, ${shlibs:Depends} Recommends: python-psyco Provides: ${python:Provides} XB-Python-Version: ${python:Versions} Description: a distributed version control system Codeville is a python-based distributed version control system that began with a novel idea for a merge algorithm and has grown from there. It is designed to be easy to use and scale from small personal projects to very large distributed ones. debian/stamp-patch-debian=patches=lcsmatch-shebang.patch0000644000000000000000000000000011533450713020526 0ustar debian/ToDoList.html0000644000000000000000000002453511533450176011573 0ustar ToDoList - Codeville Wiki

ToDoList

The Magic TODO list

larger features

  • merge-through-conflict code (necessary in rare cases for revert and resurrection)

  • revert (for name operations, this already works for file contents)

  • resurrecting deleted files

  • access control lists on repository paths in the server

  • support for binaries

  • metadata (the execute bit, for instance)

  • internationalization

  • deal with case-insensitive file systems

  • more polish

  • cherry picking individual changes

  • rollback of individual changes

smaller stuff

  • Security audit of networking code

  • Shared secrets are stored encrypted against the users password, should also include a salt to protect against precomputed dictionary attacks

  • Move authentication-related info out of the tree.

  • Graphical history browsing tool.

  • Graphical conflict resolution tool, something like dirdiff which can read the inline conflict info.

  • Code cleanup - there are places in the code (sync_history(), gen_changeset(), handle_contents_at_point()) which should be using DFS.py to do a topological sort instead of being ad-hoc about it. This is a good way to become more familiar with the code.

  • Replace the stop-and-wait changeset fetching over the network with something better. Ask on the mailing list for more details.

  • Better parallelize the delta fetching and history replaying by moving one of the 2 into a separate thread.

  • Documentation. Some HowTo guides would be especially useful for things like history browsing.

  • Fix the file ignore pattern stuff. Should probably work more like CVS.

  • Remember which files had conflicts after an update and have the status command display them.

  • Force users to resolve name conflicts before allowing relevent files to be committed.

last edited 2007-09-03 23:29:17 by RossCohen

debian/ServerReference.txt0000644000000000000000000000657211533450176013033 0ustar #[1]Codeville Wiki Recent Changes [2]Start [3]Wiki Markup [4]Print View [5]Search [6]Index [7]Glossary [8]Help [9]Codeville Wiki Search: ____________________ Titles Text * [10]Login * [11]FrontPage * [12]RecentChanges * [13]FindPage * [14]HelpContents * [15]ServerReference __________________________________________________________________ * Immutable Page * [16]Show Changes * [17]Get Info * More Actions: [Show Raw Text......] Do [18]ServerReference Running a Server * cdvserver Unix and OS X Config file options -c -n no config file Files and Directories -f where all the database files and password file go -l server output goes here when daemonized -p Control options -b start server in backup mode -d don"t daemonize, won"t write pidfile or logfile -u run as the given user, must be root to do this -r rebuild internal data structures on startup General Notes By default, the server will look for a config file in /etc/cdvserver.conf. The distributed version includes the defaults for the various options commented out. Command line options take precedence over the config file. Windows The above options largely apply, except the server does not look for a config file by default, does not daemonize and assumes the data dir is the current directory. Config File The [control] section of the config file should be self-explanatory. Key/value pairs in [post-commit] allow you to execute scripts in response to checkins. Keys are regular expressions, matched against the repository name. Values are scripts into which some XML describing the checkin will be sent as stdin. The XML is the same as the output of describe with the -x option, only there is also a tag in the server generated version. last edited 2007-09-03 23:32:52 by RossCohen * Immutable Page * [19]Show Changes * [20]Get Info * More Actions: [Show Raw Text......] Do * [21]MoinMoin Powered * [22]Python Powered * [23]Valid HTML 4.01 References 1. http://codeville.org/doc/RecentChanges?action=rss_rc&ddiffs=1&unique=1 2. http://codeville.org/doc/FrontPage 3. http://codeville.org/doc/ServerReference?action=raw 4. http://codeville.org/doc/ServerReference?action=print 5. http://codeville.org/doc/FindPage 6. http://codeville.org/doc/TitleIndex 7. http://codeville.org/doc/WordIndex 8. http://codeville.org/doc/HelpOnFormatting 9. http://codeville.org/doc/FrontPage 10. http://codeville.org/doc/UserPreferences 11. http://codeville.org/doc/FrontPage 12. http://codeville.org/doc/RecentChanges 13. http://codeville.org/doc/FindPage 14. http://codeville.org/doc/HelpContents 15. http://codeville.org/doc/ServerReference 16. http://codeville.org/doc/ServerReference?action=diff 17. http://codeville.org/doc/ServerReference?action=info 18. http://codeville.org/doc/ServerReference?action=fullsearch&value=linkto%3A%22ServerReference%22&context=180 19. http://codeville.org/doc/ServerReference?action=diff 20. http://codeville.org/doc/ServerReference?action=info 21. http://moinmoin.wikiwikiweb.de/ 22. http://www.python.org/ 23. http://validator.w3.org/check?uri=referer debian/cdvupgrade.10000644000000000000000000000106711533450176011405 0ustar .TH "CDVUPGRADE" 1 "Aug 1 2006" .SH NAME cdvupgrade \- upgrades codeville repositories and server directories .SH SYNOPSIS .B cdvupgrade [ \fI\fP ] .SH OPTIONS .TP .B "" Specify the directory to upgrade. This directory can be the base directory of either a checked-out repository or a server instance. .SH SEE ALSO .BR cdv (1), .BR cdvserver (1), .UR http://www.codeville.org/ .BR http://www.codeville.org/ .SH AUTHOR This manual page was written by Michael Janssen , for the Debian GNU/Linux system (but may be used by others). debian/codeville.default0000644000000000000000000000125611533450176012513 0ustar # Default configuration for bittorrent tracker, bttrack # If you want the bittorrent tracker to run, switch this to 1. START_CODEVILLE=0 # chroot to this directory before starting the daemon. This can also help keep # the daemon secure, but may interact with all sorts of file locations in # unexpected ways. #DAEMONCHROOT=/var/local/lib/cdv-sandbox # Move to this directory before starting the daemon. This may be useful in # conjunction with DAEMONCHROOT. #DAEMONCHDIR=/var/local/lib/cdv-sandbox # Run the daemon at this "nice" priority. Setting a positive value here will # dissuade the system from giving all its CPU time to bttrack requests from the # network. DAEMONNICE=5 debian/QuickStartGuide.txt0000644000000000000000000001760111533450176013011 0ustar #[1]Codeville Wiki Recent Changes [2]Start [3]Wiki Markup [4]Print View [5]Search [6]Index [7]Glossary [8]Help [9]Codeville Wiki Search: ____________________ Titles Text * [10]Login * [11]FrontPage * [12]RecentChanges * [13]FindPage * [14]HelpContents * [15]QuickStartGuide __________________________________________________________________ * Immutable Page * [16]Show Changes * [17]Get Info * More Actions: [Show Raw Text......] Do [18]QuickStartGuide 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. All client instructions below assume you are within your workspace directory, not including the .cdv dir. Creating a new project Create a workspace directory and populate it with the files you want checked in. Within that directory: cdv init cdv set user cdv set repository cdv create cdv add ... cdv commit Note: use of an email address as the username is recommended. If you do not wish to collaborate with others or use a server for any other purpose, skip both setting repository and running create. A repository URL has the following form: cdv://[:]/ Check out an existing project cdv init cdv set user cdv set repository cdv update Making changes Codeville automatically detects when you have edited files in a client. Rename or move files or directories: cdv rename Delete files or directories: cdv remove View your changes: cdv diff [-r [-r ]] One -r 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 -R). The second defaults to local, which is the current state of the workspace. Show a more compact list of changes: cdv status When you are happy with your changes: cdv commit Reverting changes Discard uncommitted file edits: cdv revert Only changes to a file's contents can be reverted at this time. Name operations (add, delete, rename) are not yet reversible. Taking branches Branch using your current client state: cdv create cdv -R commit URL2 does not need to be on the same server as the URL you are branching from. Merging branches To merge URL2 into URL, from a client with URL set as the repository: cdv update cdv -R update (Resolve any name or merge conflicts) cdv commit You may continue using branches after you have merged them. Codeville supports arbitrary branching, merging and remerging of any and all branches. Resolving conflicts File conflicts are presented in a similar fashion to CVS. Conflicting sections of the file will be marked with <<<<<<<, ======= and >>>>>>>. Naming conflicts will result in mangled filenames. Look for files and directories which end with .nameconflict.local, .orphaned, .loop, etc. Sometimes there will be a file with a ".info" extension which contains where the file exists according to the update which caused the problem. Other stuff View history: cdv history 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. Starting a server Choose a directory to start the server in. Change into the directory and run: cdvserver -i -f . You will also need to create at least 1 account. Do this by running the cdvpasswd program in the server directory, for example: cdvpasswd -f passwd add The special username "anonymous" is only allowed to do read operations on the repository. Run cdvserver: cdvserver -n -d -f You now have a running server. Running without -d will cause the server to fork off into the background and generally act more server-like. See the server reference for more details. Ubuntu Init Script 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. #! /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 e xists 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 --exe c "$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.p id || 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 --exe c "$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 Miscellaneous notes Performance should be reasonable, there are still more optimizations to be done. For now, you will get better performance by updating after each commit. 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. At this point the repository format should be stable enough that there will always be an upgrade path for the servers. last edited 2007-09-03 23:30:41 by RossCohen * Immutable Page * [19]Show Changes * [20]Get Info * More Actions: [Show Raw Text......] Do * [21]MoinMoin Powered * [22]Python Powered * [23]Valid HTML 4.01 References 1. http://codeville.org/doc/RecentChanges?action=rss_rc&ddiffs=1&unique=1 2. http://codeville.org/doc/FrontPage 3. http://codeville.org/doc/QuickStartGuide?action=raw 4. http://codeville.org/doc/QuickStartGuide?action=print 5. http://codeville.org/doc/FindPage 6. http://codeville.org/doc/TitleIndex 7. http://codeville.org/doc/WordIndex 8. http://codeville.org/doc/HelpOnFormatting 9. http://codeville.org/doc/FrontPage 10. http://codeville.org/doc/UserPreferences 11. http://codeville.org/doc/FrontPage 12. http://codeville.org/doc/RecentChanges 13. http://codeville.org/doc/FindPage 14. http://codeville.org/doc/HelpContents 15. http://codeville.org/doc/QuickStartGuide 16. http://codeville.org/doc/QuickStartGuide?action=diff 17. http://codeville.org/doc/QuickStartGuide?action=info 18. http://codeville.org/doc/QuickStartGuide?action=fullsearch&value=linkto%3A%22QuickStartGuide%22&context=180 19. http://codeville.org/doc/QuickStartGuide?action=diff 20. http://codeville.org/doc/QuickStartGuide?action=info 21. http://moinmoin.wikiwikiweb.de/ 22. http://www.python.org/ 23. http://validator.w3.org/check?uri=referer debian/codeville.init0000644000000000000000000000364211533452446012035 0ustar #! /bin/sh ### BEGIN INIT INFO # Provides: codeville # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $local_fs $remote_fs # Should-Start: # Should-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start a codeville server # Description: Starts a codeville daemon for remote # access to codeville repositories. ### END INIT INFO set -e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="codeville server" NAME=cdvserver DAEMON=/usr/bin/$NAME PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/codeville # Gracefully exit if the package has been removed. test -x $DAEMON || exit 0 DATADIR=/var/lib/codeville LOGFILE=/var/log/codeville.log # Read config file if it is present. if [ -r /etc/default/codeville ] then . /etc/default/codeville fi # Add optional option $1 with argument $2 to OPTS, if $2 is nonempty add_opt () { if ! test -z "$2" ; then OPTS="$OPTS $1 $2" fi } # Add arguments for start-stop-daemon, based on variables set in # /etc/default/$NAME OPTS="" add_opt --chroot "$DAEMONCHROOT" add_opt --chdir "$DAEMONCHDIR" add_opt --nicelevel "$DAEMONNICE" METAOPTS="$OPTS" # #Function that starts the daemon/service. # d_start() { if [ $START_CODEVILLE -ne 1 ]; then echo -n "disabled in /etc/default/codeville" else echo -n "$NAME" start-stop-daemon --start --background --quiet \ --pidfile "$PIDFILE" \ $METAOPTS \ --exec $DAEMON -- -c /etc/cdvserver.conf fi } # #Function that stops the daemon/service. # d_stop() { start-stop-daemon --stop --oknodo --quiet --pidfile "$PIDFILE" } case "$1" in start) echo -n "Starting $DESC: " d_start echo "." ;; stop) echo -n "Stopping $DESC: $NAME" d_stop echo "." ;; restart|force-reload) echo -n "Restarting $DESC: $NAME" d_stop sleep 1 d_start echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0 debian/changelog0000644000000000000000000001072711533455053011053 0ustar codeville (0.8.0-2) unstable; urgency=low * Ack NMUs - Thanks Frencesco and Nico! * Remove Chad Walstrom from Uploaders list (retired). Closes: #572671 * Remove Homepage because the link is now broken. * Update init script for $remote_fs since /usr might be remote. * Bump Standards-Version to 3.9.1 (no changes) * Use hashlib instead of sha (depreciated) -- Michael Janssen Wed, 02 Mar 2011 08:54:18 -0600 codeville (0.8.0-1.2) unstable; urgency=low * Non-maintainer upload. * Remove arch-specific recommends, psycho is only i386 anyway and it only breaks dpkg-gencontrol in this case since the package is arch-all (Closes: #581308). -- Nico Golde Mon, 26 Jul 2010 13:22:42 +0200 codeville (0.8.0-1.1) unstable; urgency=low * Non-maintainer upload. * debian/rules: moved rules to clean doc directory from common-install-indep target to install/codeville target. (Closes: #526573, #527828) * debian/compat: updated to 5. * debian/control: bump Standards-Version to 3.8.3 * debian/control: added build-depends-indep on lynx. (Closes: #528738) -- Francesco Namuri Thu, 27 Aug 2009 17:54:26 +0200 codeville (0.8.0-1) unstable; urgency=low * New upstream release. Closes: #457221 * Bump Standards-Version to 3.7.3.0. * Use new "Homepage" field. * Add cdvserver init script, disabled by default. Closes: #325805 * Change recommends so they can install on all archs. Closes: #436642 -- Michael Janssen Sun, 06 Jan 2008 09:49:36 -0600 codeville (0.1.16-3) unstable; urgency=low * Codeville runs fine on newer pythons, so let it work on 2.4. Closes: #385455 -- Michael Janssen Wed, 6 Sep 2006 07:36:10 -0500 codeville (0.1.16-2) unstable; urgency=low * Added manpages for cdv, cdvserver, cdvpasswd, cdv-agent, and cdvupgrade. Closes: #325806 * Bump Standards-Version to 3.7.2.0 * Migrate to python-support and new python policy. Closes: #380762 -- Michael Janssen Tue, 1 Aug 2006 22:31:37 -0500 codeville (0.1.16-1) unstable; urgency=low * New upstream version. Closes: #353158 * debian/{reference.html,client.html,server.html}: Replaced with text and html version of documents on the Codeville wiki. * debian/NEWS: Replaced with text version of news.php file on Codeville site. * debian/ToDoList.{txt,html}: Pulled from Codeville wiki. * debian/rules: added `doc-update' target to run lynx to update wiki/web documentation pull. (Maintainer help tool. Not run by default.) -- Chad Walstrom Tue, 28 Feb 2006 11:10:11 -0600 codeville (0.1.13-1) unstable; urgency=low * New upstream version. * Removed debian/patched/pathfix.patch (included in upstream) -- Michael Janssen Wed, 20 Jul 2005 00:37:32 -0500 codeville (0.1.12-2) unstable; urgency=low * debian/patches/pathfix.patch: Patch submitted to codeville developer's email list by Sudhi Herle . Fixes cdv's dependence on PYTHONPATH to find required modules. * debian/patches/mergelcs-shebang.patch: Remove shebang in Codeville/mergelcs.py -- Chad Walstrom Thu, 14 Jul 2005 10:01:01 -0500 codeville (0.1.12-1) experimental; urgency=low * debian/README.Debian: Removed section about non-free. * debian/*.html: Updated documentation to recent upstream web docs. -- Chad Walstrom Tue, 24 May 2005 17:17:15 -0500 codeville (0.1.12-0) experimental; urgency=low * New upstream version. * debian/control: Changed Maintainer to Michael Janssen . Added "Uploaders" field. * debian/NEWS: Added "Changelog" style comments from http://codeville.org/ regarding this version. * debian/control: linda didn't like the short description being repeated in the long description. -- Chad Walstrom Thu, 12 May 2005 10:57:51 -0500 codeville (0.1.11-0) experimental; urgency=low * New upstream. * debian/NEWS: New file explaining important changes. * debian/copyright: Upstream license changed to BSD style! * debian/patches/lcsmatch-shebang.patch: Added to shut lintian up. * debian/rules: Cleaned up to recognize upstream version. -- Chad Walstrom Fri, 6 May 2005 11:40:18 -0500 codeville (0.1.10-0) experimental; urgency=low * Initial package release. Closes: #280209 -- Chad Walstrom Mon, 2 May 2005 12:26:06 -0500 debian/cdv.10000644000000000000000000001742711533452551010043 0ustar .TH "CDV" 1 "Dec 1 2005" .SH NAME cdv \- codeville command line client tool .SH SYNOPSIS .B cdv \fIcommand\fP [\fIoptions\fP] .SH DESCRIPTION \fBcdv\fP is a client for \fBcodeville\fP, a distributed version control system. It aims to perform the same job as SVN, CVS, RCS, arch, etc. .SH COMMAND OVERVIEW .TP .B "add " Add new files to the repository. All files must be added before they will be part of the version control system. .TP .B "commit [\-b] [\-m """"] [\-n]" Commits all changes made to the repository since the last commit. A comment is required for every commit. It may either be supplied via the \-m option for simple comments or if the \-m option is omitted, whatever editor is specified in the EDITOR environment variable will be launched. If no editor is specified, vi is the default in all unixy environments (including OS X and cygwin) and Notepad is the default in Windows. In the editor, a comment may be added at the top, and file changes which the user does not wish to have in a given changeset can be removed by deleting them from the "### files" list at the bottom (although merging cannot be avoided through deleting things from the "### merge files" list). Every commit creates a changeset. If there are changes since the last update, files will be merged. In the event of unresolved conflicts, the user will be prompted to resolve them. .B "\-n" used to commit changes off-line. Changes committed off-line can still be used with all commands, but are not visible to other users until an on-line commit is done. .B "\-b" forces commit to not make a new changeset. This will commit changes which have already been committed locally via \-n (or as a result of having multiple repositories involved), but will not create a new changeset for existing file modifications. This is especially needed for committing to back-up servers (servers started with \-b) as it is the only way to commit changes to a back-up server. This is not the recommended way to commit changes to normal servers. In general, if one wishes to commit changes committed offline without committing new changes, one should commit and changeset with all the files in the ""### files"" list removed. .TP .B "construct " Recreates the repository at the given changeset. .TP .B "create " Creates a new repository with the appropriate name. .TP .B "describe [\-x|\-d] [\-s] " Gives the description of the changeset including the long name of the change, the user who made the change, that date it was made, the comment, the relation it has to other changesets, and what files were modified and in what manner they were modified (i.e. added, modified, renamed, or deleted). .B "\-s" gives a short description .B "\-d" does a diff .B "\-x" displays an XML version of the output. This is not compatible with displaying a diff. This can only be used with parenthesized changesets from the file history. It's sort of a hack right now, really. .TP .B "destroy " Destroys a repository. The opposite of create. .TP .B "diff [\-r [\-r ] ] []" Does a diff between different versions of each of given files. If no files are specified, all relevant files are shown. The first \-r option indicates which changeset the diff should be from, the second which it should be to. If no changesets are specified, it shows the difference between the last known state of the repository and the current client state. .TP .B "edit " Enables editing a file. When not in edit-mode, this is unnecessary. .TP .B "heads" Lists the root nodes in the graph of changesets. .TP .B "history [\-h ] [\-n ] [\-s ] [\-v] []" Gives the history of the repository or of the files specified. Specifically, it lists all relevant change sets by short name, user, date, and comment in most recent first order. .B \-n limits the number of changes printed to the given number .B \-h causes it to print the history starting at the given changeset. .B \-s skips the first changes. .B \-v causes it to print the changes verbosely which includes additional information about each changeset which affected the files. .TP .B "init" Initialize a new client with the current directory as the root. Specify a directory other than current one by using the top level .B \-p switch. .TP .B "is_ancestor Tells whether or not is an ancestor of . Note that it is possible for neither changeset to be an ancestor of the other. .TP .B "last-modified " Returns the last changeset which modified a given file. .TP .B "list-repos" Lists all the repositories on the same server as the repository you are in. .TP .B "password" Change your password. .TP .B "print_dag [\-h ] [\-h ] [...] " Prints the directed acyclic graph which shows the changesets which have been applied to a file and their relationships. Changesets specified with .B \-h are treated as head nodes for the graph (i.e. later changesets are excluded). .TP .B "print_history []" Prints the directed acylcic graph of the the entire history. Starts at the given changeset, if provided. .TP .B "rebuild" Recreates all of the metadata from the static history. This should generally only be done when instructed to by software upgrade instructions. .TP .B "remove " Deletes files from the repository. .TP .B "rename " Moves or renames files. .TP .B "revert [\-a] " Reverts any local changes to the file. At this time only changes to the content of the file can be reverted. The ability to revert adds, deletes, and renames will be coming in the future. There is a subtle difference in the definition of revert from what you might expect. It does not guarantee that it will restore the file to some previous state. For example, if you are in the middle of a merge and call revert on a file, it will be regenerated by running the merge. If the file were modified prior to running the merge update, the file contents will now be different from anytime in the past. Revert should be thought of as throwing away uncommitted changes. .B \-a indicates files should only be reverted if they have not been modified. Basically unmarks them as open for edit. .TP .B "set " Sets a Codeville variable to a given value. .TP .B "show-vars" Show a list of all Codeville variables and what they are set to. .TP .B "status [\-v]" Shows changes not yet committed to the repository in brief. .B \-v gives more verbose status which includes mention of files which are in the directory space, but not in the repository and files missing from the directory space. .TP .B "unset " Removes a Codeville variable so that it no longer has any setting. .TP .B "update [\-d]" Gets all changes made to the repository since the last time you did an update. Files will be merged as necessary. In the event of unresolved conflicts, the user will be asked to resolve them. .B \-d pull in changesets but do not merge them. Has no effect on the workspace state. This allows a user to browse and diff changesets without having to merge. .SH SPECIFYING FILES Files can be specified using bash-style wildcards on any platform. In addition, '...' behaves like a find command, expanding all files and directories within subdirectories. General notes: Flags are listed in no particular order. All printed graphs are output in a format intended to be run through graphviz tools' "dot" tool. .SH "SEE ALSO" .BR cdvpasswd (1), .UR http://www.codeville.org/ .BR http://www.codevile.org/ .SH AUTHOR This manual page was written by Michael Janssen from the documentation available at .UR http://www.codeville.org/ .BR http://www.codeville.org/, for the Debian GNU/Linux system (but may be used by others). debian/codeville.manpages0000644000000000000000000000013211533450176012652 0ustar debian/cdv.1 debian/cdv-agent.1 debian/cdvpasswd.1 debian/cdvserver.1 debian/cdvupgrade.1 debian/dirs0000644000000000000000000000003011533450176010050 0ustar usr/share/doc/codeville debian/copyright0000644000000000000000000000326411533450176011133 0ustar This package was debianized by Chad Walstrom on Mon May 2 11:49:12 CDT 2005. It was downloaded from: http://www.codeville.org/download/Codeville-0.1.10.tar.gz Copyright (C) 2002-2005 Bram Cohen and Ross Cohen All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Codeville nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. debian/stamp-patch-debian=patches=diff-shebang.patch0000644000000000000000000000000011533450713017640 0ustar debian/ClientReference.html0000644000000000000000000004563411533450176013132 0ustar ClientReference - Codeville Wiki

ClientReference

Codeville commands

Options

-p, --path

<path> to client

-R, --repository

<repository> for this operation

-u, --user

<user> as whom to perform this operation

-V, --version

Print version information

Subcommands

add <files>
  • Add new files to the repository. All files must be added before they will be part of the version control system.


commit [-b] [-m <comment>|-M <comment-file>] [-D <date>] [-n]
  • Commits all changes made to the repository since the last commit. A comment is required for every commit. It may either be supplied via the -m option for simple comments or if the -m option is omitted, whatever editor is specified in the EDITOR environment variable will be launched. If no editor is specified, vi is the default in all unixy environments (including OS X and cygwin) and Notepad is the default in Windows. In the editor, a comment may be added at the top, and file changes which the user does not wish to have in a given changeset can be removed by deleting them from the "### files" list at the bottom (although merging cannot be avoided through deleting things from the "### merge files" list). Every commit creates a changeset. If there are changes since the last update, files will be merged. In the event of unresolved conflicts, the user will be prompted to resolve them.

-b, --backup

Forces commit to not make a new changeset. This will commit changes which have already been committed locally via -n (or as a result of having multiple repositories involved), but will not create a new changeset for existing file modifications. This is especially needed for committing to back-up servers (servers started with -b) as it is the only way to commit changes to a back-up server. This is not the recommended way to commit changes to normal servers. In general, if one wishes to commit changes committed offline without committing new changes, one should commit and changeset with all the files in the "### files" list removed.

-D, --date

YYYY/MM/DD HH:MM:SS TZ indicating changeset creation time

-m, --message

Use message as the commit message

-M, --message-file

Get commit message from file

-n, --no-network

is used to commit changes off-line. Changes committed off-line can still be used with all commands, but are not visible to other users until an on-line commit is done.


construct <changeset>
  • Recreates the repository at the given changeset.


create <repository name>
  • Creates a new repository with the appropriate name.


describe [-x|-d] [-s] <changeset>
  • Gives the description of the changeset including the long name of the change, the user who made the change, that date it was made, the comment, the relation it has to other changesets, and what files were modified and in what manner they were modified (i.e. added, modified, renamed, or deleted).

-d, --diff

does a diff

-x, --xml

displays an XML version of the output. This is not compatible with displaying a diff. This can only be used with parenthesized changesets from the file history. It's sort of a hack right now, really.


destroy <repository>
  • Destroys a repository. The opposite of create.


diff [-r <changeset> [-r <changeset>] ] [<files>]
  • Does a diff between different versions of each of given files. If no files are specified, all relevant files are shown. The first -r option indicates which changeset the diff should be from, the second which it should be to. If no changesets are specified, it shows the difference between the last known state of the repository and the current client state.


edit <files>
  • Enables editting a file. When not in edit-mode, this is unnecessary.


heads
  • Lists the root nodes in the graph of changesets.


history [-h <changeset>] [-c <count>] [-s <skip count>] [-v] [<files>]
  • Gives the history of the repository or of the files specified. Specifically, it lists all relevant change sets by short name, user, date, and comment in most recent first order.

-c, --count

print only the specified number of changes.

-h, --head

print the history starting at the given changeset.

-s, --skip

skips the first skip count changes.

-v, --verbose

causes it to print the changes verbosely which includes additional information about each changeset which affected the files.


init
  • Initialize a new client with the current directory as the root. Specify a directory other than current one by using the top level -p switch.


is_ancestor <changeset1> <changeset2>
  • Tells whether or not changeset1 is an ancestor of changeset2. Note that it is possible for neither changeset to be an ancestor of the other.


last-modified <file>
  • Returns the last changeset which modified a given file.


list-repos
  • Lists all the repositories on the same server as the repository you are in.


password
  • Change your password.


print_dag [-h <changeset>] [-h <changeset>] [...] <file>
  • Prints the directed acyclic graph which shows the changesets which have been applied to a file and their relationships.

    Changesets specified with -h are treated as head nodes for the graph (i.e. later changesets are excluded).


print_history [<changeset>]
  • Prints the directed acylcic graph of the the entire history. Starts at the given changeset, if provided.


rebuild
  • Recreates all of the metadata from the static history. This should generally only be done when instructed to by software upgrade instructions.


remove <files>
  • Deletes files from the repository.


rename <file> <newname>
  • Moves or renames files.


revert [-a] <files>
  • Reverts any local changes to the file. At this time only changes to the content of the file can be reverted. The ability to revert adds, deletes, and renames will be coming in the future.

    There is a subtle difference in the definition of revert from what you might expect. It does not guarantee that it will restore the file to some previous state. For example, if you are in the middle of a merge and call revert on a file, it will be regenerated by running the merge. If the file were modified prior to running the merge update, the file contents will now be different from anytime in the past.

    Revert should be thought of as throwing away uncommitted changes.

-a, --unmodified

indicates files should only be reverted if they have not been modified. Basically unmarks them as open for edit.


set <variable> <value>
  • Sets a Codeville variable to a given value.


show-vars
  • Show a list of all Codeville variables and what they are set to.


status [-v]
  • Shows changes not yet committed to the repository in brief.

-v, --verbose

A more verbose status which includes mention of files which are in the directory space, but not in the repository and files missing from the directory space.


unset <variable>
  • Removes a Codeville variable so that it no longer has any setting.


update [-d]
  • Gets all changes made to the repository since the last time you did an update. Files will be merged as necessary. In the event of unresolved conflicts, the user will be asked to resolve them.

-d, --dont-merge

Pull in changesets but do not merge them. Has no effect on the workspace state. This allows a user to browse and diff changesets without having to merge.

Specifying files:

General Notes

Files can be specified using bash-style wildcards on any platform. In addition, '...' behaves like a find command, expanding all files and directories within subdirectories.

All printed graphs are output in a format intended to be run through the graphviz "dot" tool.

Using tcsh as the startup shell under cygwin appears to result in the Python password command hanging, so it is incompatible with Codeville and there's not a thing we can do about it.

last edited 2007-09-03 23:31:00 by RossCohen

debian/QuickStartGuide-1.txt0000644000000000000000000001350311533450176013144 0ustar #[1]Codeville Wiki Recent Changes [2]Start [3]Wiki Markup [4]Print View [5]Search [6]Index [7]Glossary [8]Help [9]Codeville Wiki Search: ____________________ Titles Text * [10]Login * [11]FrontPage * [12]RecentChanges * [13]FindPage * [14]HelpContents * [15]QuickStartGuide _________________________________________________________________ * Immutable Page * [16]Show Changes * [17]Get Info * More Actions: [Show Raw Text......] Do [18]QuickStartGuide All client instructions below assume you are within your workspace directory, not including the .cdv dir. Creating a new project Create a workspace directory and populate it with the files you want checked in. Within that directory: cdv init cdv set user cdv set repository cdv create cdv add ... cdv commit Note: use of an email address as the username is recommended. If you do not wish to collaborate with others or use a server for any other purpose, skip both setting repository and running create. A repository URL has the following form: cdv://[:]/ Check out an existing project cdv init cdv set user cdv set repository cdv update Making changes Codeville automatically detects when you have edited files in a client. Rename or move files or directories: cdv rename Delete files or directories: cdv remove View your changes: cdv diff [-r [-r ]] One -r 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 -R). The second defaults to local, which is the current state of the workspace. Show a more compact list of changes: cdv status When you are happy with your changes: cdv commit Reverting changes Discard uncommitted file edits: cdv revert Only changes to a file's contents can be reverted at this time. Name operations (add, delete, rename) are not yet reversible. Taking branches Branch using your current client state: cdv create cdv -R commit URL2 does not need to be on the same server as the URL you are branching from. Merging branches To merge URL2 into URL, from a client with URL set as the repository: cdv update cdv -R update (Resolve any name or merge conflicts) cdv commit You may continue using branches after you have merged them. Codeville supports arbitrary branching, merging and remerging of any and all branches. Resolving conflicts File conflicts are presented in a similar fashion to CVS. Conflicting sections of the file will be marked with <<<<<<<, ======= and >>>>>>>. Naming conflicts will result in mangled filenames. Look for files and directories which end with .nameconflict.local, .orphaned, .loop, etc. Sometimes there will be a file with a ".info" extension which contains where the file exists according to the update which caused the problem. Other stuff View history: cdv history 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. Starting a server Choose a directory to start the server in. Change into the directory and run: cdvserver -i -f . You will also need to create at least 1 account. Do this by running the cdvpasswd program in the server directory, for example: cdvpasswd -f passwd add The special username "anonymous" is only allowed to do read operations on the repository. Run cdvserver: cdvserver -n -d -f You now have a running server. Running without -d will cause the server to fork off into the background and generally act more server-like. See the server reference for more details. Miscellaneous notes Performance should be reasonable, there are still more optimizations to be done. For now, you will get better performance by updating after each commit. 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. At this point the repository format should be stable enough that there will always be an upgrade path for the servers. last edited 2005-10-06 23:46:50 by RossCohen * Immutable Page * [19]Show Changes * [20]Get Info * More Actions: [Show Raw Text......] Do * [21]MoinMoin Powered * [22]Python Powered * [23]Valid HTML 4.01 References 1. http://codeville.org/doc/RecentChanges?action=rss_rc&ddiffs=1&unique=1 2. http://codeville.org/doc/FrontPage 3. http://codeville.org/doc/QuickStartGuide?action=raw 4. http://codeville.org/doc/QuickStartGuide?action=print 5. http://codeville.org/doc/FindPage 6. http://codeville.org/doc/TitleIndex 7. http://codeville.org/doc/WordIndex 8. http://codeville.org/doc/HelpOnFormatting 9. http://codeville.org/doc/FrontPage 10. http://codeville.org/doc/UserPreferences 11. http://codeville.org/doc/FrontPage 12. http://codeville.org/doc/RecentChanges 13. http://codeville.org/doc/FindPage 14. http://codeville.org/doc/HelpContents 15. http://codeville.org/doc/QuickStartGuide 16. http://codeville.org/doc/QuickStartGuide?action=diff 17. http://codeville.org/doc/QuickStartGuide?action=info 18. http://codeville.org/doc/QuickStartGuide?action=fullsearch&value=linkto%3A%22QuickStartGuide%22&context=180 19. http://codeville.org/doc/QuickStartGuide?action=diff 20. http://codeville.org/doc/QuickStartGuide?action=info 21. http://moinmoin.wikiwikiweb.de/ 22. http://www.python.org/ 23. http://validator.w3.org/check?uri=referer debian/README.Debian0000644000000000000000000000235411533450176011240 0ustar Codeville on Debian =================== Codeville is a Python-based distributed version control system. It began with a novel idea for a merge algorithm and has grown from there. It is designed to be easy to use and scale from small personal projects to very large distributed ones. Originally written by Bram Cohen of BitTorrent fame, it is now being maintained Ross Cohen. Because this software isn't really intended as a developer module, it is being installed as a stand-alone package that depends upon the latest default python version for Debian Sarge. Codeville requires Berkeley DB library >= 4.1, which is installed by default with Debian's Python package. Running the Server ================== This package provides an init.d mechanism for which to start the Codeville server. This server is disabled by default - in order to enable the server, change START_CODEVILLE to 1 in the /etc/default/codeville file. .. note:: You do not need to run a server for locally-hosted repositories. Upgrading Repositories ====================== Because Codeville is a new version control system, the on-disk format of the repository changes from time to time. The script cdvupgrade is provided in order to upgrade an older on-disk format to a newer one. debian/pycompat0000644000000000000000000000000211533450176010742 0ustar 2 debian/QuickStartGuide.html0000644000000000000000000003646511533450176013147 0ustar QuickStartGuide - Codeville Wiki

QuickStartGuide

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.

All client instructions below assume you are within your workspace directory, not including the .cdv dir.

Creating a new project

Create a workspace directory and populate it with the files you want checked in. Within that directory:

cdv init
cdv set user <username>
cdv set repository <URL>
cdv create <URL>
cdv add ...
cdv commit

Note: use of an email address as the username is recommended.

If you do not wish to collaborate with others or use a server for any other purpose, skip both setting repository and running create.

A repository URL has the following form:

cdv://<server>[:<port>]/<repository>

Check out an existing project

cdv init
cdv set user <username>
cdv set repository <URL>
cdv update

Making changes

Codeville automatically detects when you have edited files in a client.

Rename or move files or directories:

cdv rename <source> <dest>

Delete files or directories:

cdv remove <files>

View your changes:

cdv diff [-r <changeset1> [-r <changeset2>]]

One -r 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 -R). The second defaults to local, which is the current state of the workspace.

Show a more compact list of changes:

cdv status

When you are happy with your changes:

cdv commit

Reverting changes

Discard uncommitted file edits:

cdv revert <file>

Only changes to a file's contents can be reverted at this time. Name operations (add, delete, rename) are not yet reversible.

Taking branches

Branch using your current client state:

cdv create <URL2>
cdv -R <URL2> commit

URL2 does not need to be on the same server as the URL you are branching from.

Merging branches

To merge URL2 into URL, from a client with URL set as the repository:

cdv update
cdv -R <URL2> update
(Resolve any name or merge conflicts)
cdv commit

You may continue using branches after you have merged them. Codeville supports arbitrary branching, merging and remerging of any and all branches.

Resolving conflicts

File conflicts are presented in a similar fashion to CVS. Conflicting sections of the file will be marked with <<<<<<<, ======= and >>>>>>>.

Naming conflicts will result in mangled filenames. Look for files and directories which end with .nameconflict.local, .orphaned, .loop, etc. Sometimes there will be a file with a ".info" extension which contains where the file exists according to the update which caused the problem.

Other stuff

View history:

cdv history

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.

Starting a server

Choose a directory to start the server in. Change into the directory and run:

cdvserver -i -f .

You will also need to create at least 1 account. Do this by running the cdvpasswd program in the server directory, for example:

cdvpasswd -f passwd add <username>

The special username "anonymous" is only allowed to do read operations on the repository.

Run cdvserver:

cdvserver -n -d -f <server directory>

You now have a running server. Running without -d will cause the server to fork off into the background and generally act more server-like. See the server reference for more details.

Ubuntu Init Script

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.

#! /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

Miscellaneous notes

Performance should be reasonable, there are still more optimizations to be done. For now, you will get better performance by updating after each commit.

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.

At this point the repository format should be stable enough that there will always be an upgrade path for the servers.

last edited 2007-09-03 23:30:41 by RossCohen

debian/docs0000644000000000000000000000034311533450176010046 0ustar debian/NEWS.upstream debian/ClientReference.html debian/ClientReference.txt debian/QuickStartGuide.html debian/QuickStartGuide.txt debian/ServerReference.html debian/ServerReference.txt debian/ToDoList.html debian/ToDoList.txt