wiki:Notes/RevisionControl

Distributed Revision Control Software

Mostly for software repositories, but possible for distributed file system applications as well.

http://en.wikipedia.org/wiki/Distributed_revision_control

Distributed revision control takes a peer-to-peer approach to version control, as opposed to the client-server approach of centralized systems. Rather than a single, central repository on which clients synchronize, each peer's working copy of the codebase is a complete repository. Distributed revision control synchronizes repositories by exchanging patches (sets of changes) from peer to peer. This results in some important differences from a centralized system:

No canonical, reference copy of the codebase exists by default; only working copies.

Common operations (such as commits, viewing history, and reverting changes) are fast, because there is no need to communicate with a central server.

Communication is only necessary when sharing changes among other peers.

Each working copy effectively functions as a remote backup of the codebase and of its change-history, protecting against data loss.

Other differences include:

Multiple "central" repositories.

Code from disparate repositories is merged based on a web of trust, i.e., historical merit or quality of changes.

Numerous different development models are possible, such as development / release branches or a Commander / Lieutenant model, allowing for efficient delegation of topical developments in very large projects. Lieutenants are project members who have the power to dynamically decide which branches to merge.

Network is not involved for common operations.

A separate set of "sync" operations are available for committing or receiving changes with remote repositories.

http://en.wikipedia.org/wiki/List_of_revision_control_software

http://en.wikipedia.org/wiki/Comparison_of_revision_control_software

Bazaar

http://bazaar.canonical.com/

Bazaar is a version control system that helps you track project history over time and to collaborate easily with others.

http://en.wikipedia.org/wiki/GNU_Bazaar

Bazaar is written in the Python programming language, with packages for major GNU/Linux distributions, Mac OS X and Microsoft Windows. Bazaar is free software and part of the GNU Project ...

Bazaar also allows for interoperation with many other systems (including CVS, Darcs, Git, Perforce, Mercurial) by allowing one to import/export the history.

Search wiki for 'bazaar'

Git

http://git-scm.com/

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and Clear Case with features like cheap local branching, convenient staging areas, and multiple workflows.

http://en.wikipedia.org/wiki/Git_%28software%29

Git is a distributed revision control system with an emphasis on speed, data integrity, and support for distributed, non-linear workflows. Git was initially designed and developed by Linus Torvalds for Linux kernel development in 2005, and has since become the most widely adopted version control system for software development.

Also see:

https://github.com/

Powerful collaboration, code review, and code management for open source and private projects. Need private repositories? Upgraded plans start at $7/mo.

Fossil

Runs on top of SQLite

http://en.wikipedia.org/wiki/Fossil_%28software%29

Fossil is a cross-platform server that runs on Linux, BSD derivatives, Mac and Windows. It is capable of performing distributed version control, bug tracking, wiki services, and blogging. The software has a built-in web interface ...

http://www.fossil-scm.org/index.html/doc/trunk/www/index.wiki

Fossil is a simple, high-reliability, distributed software configuration management system with these advanced features:

Integrated Bug Tracking, Wiki, and Technotes - In addition to doing distributed version control like Git and Mercurial, Fossil also supports bug tracking, wiki, and technotes.

Built-in Web Interface - Fossil has a built-in and intuitive web interface with a rich assortment of information pages (examples) designed to promote situational awareness.

This entire website is just a running instance of Fossil. The pages you see here are all wiki or embedded documentation. When you clone Fossil from one of its self-hosting repositories, you get more than just source code - you get this entire website. ( except the download page)

Self-Contained - Fossil is a single self-contained stand-alone executable. To install, simply download a precompiled binary for Linux, Mac, OpenBSD, or Windows and put it on your $PATH. Easy-to-compile source code is also available.

Simple Networking - No custom protocols or TCP ports. Fossil uses ordinary HTTP (or HTTPS or SSH) for network communications, so it works fine from behind restrictive firewalls, including proxies. The protocol is bandwidth efficient to the point that Fossil can be used comfortably over dial-up.

CGI/SCGI Enabled - No server is required, but if you want to set one up, Fossil supports four easy server configurations.

Autosync - Fossil supports "autosync" mode which helps to keep projects moving forward by reducing the amount of needless forking and merging often associated with distributed projects.

Robust & Reliable - Fossil stores content using an enduring file format in an SQLite database so that transactions are atomic even if interrupted by a power loss or system crash. Automatic self-checks verify that all aspects of the repository are consistent prior to each commit.

Free and Open-Source - Uses the 2-clause BSD license.

https://www.fossil-scm.org/fossil/doc/trunk/www/quickstart.wiki

https://www.fossil-scm.org/fossil/doc/trunk/www/concepts.wiki

Fossil is a software configuration management system. Fossil is software that is designed to control and track the development of a software project and to record the history of the project. There are many such systems in use today. Fossil strives to distinguish itself from the others by being extremely simple to setup and operate ...

Fossil is completely self-contained. It is not necessary to install any other software in order to use fossil. You do not need CVS, gzip, diff, rsync, Python, Perl, Tcl, Java, apache, PostgreSQL, MySQL, SQLite, patch, or any similar software on your system in order to use fossil effectively. You will want to have some kind of text editor for entering check-in comments. Fossil will use whatever text editor is identified by your VISUAL environment variable.

https://www.fossil-scm.org/fossil/doc/trunk/www/tech_overview.wiki

Fossil stores state information in SQLite database files. SQLite keeps an entire relational database, including multiple tables and indices, in a single disk file. The SQLite library allows the database files to be efficiently queried and updated using the industry-standard SQL language. SQLite updates are atomic, so even in the event of a system crashes or power failure the repository content is protected.

Fossil uses three separate classes of SQLite databases:

The configuration database

Repository databases

Checkout databases

https://www.fossil-scm.org/fossil/doc/trunk/www/sync.wiki

Fossil supports commands push, pull, and sync for transferring information from one repository to another. The command is run on the client repository. A URL for the server repository is specified as part of the command ...

https://www.fossil-scm.org/download.html

The Good, "No-brainer SCM with Fossil" - http://www.fredshack.com/docs/fossil.html

The Ugly ( as of 2010 ) - http://www.reddit.com/comments/bxcto/why_not_fossil_scm/

Merging sucks, it has no easy way to resolve merge conflicts without cleaning out lots of ======== MERGE CONFLICT BEGINS droppings everywhere ...

So who wants to merge anyway ? ... Branch Baby Branch !!''

The lack of deleting anything ...

Uhhh, whoops ...

http://fossil-scm.org/xfer/help/delete

This command does NOT remove the files from disk. It just marks the files as no longer being part of the project. In other words, future changes to the named files will not be versioned.

May be OK.

http://fossil-scm.org/xfer/doc/trunk/www/shunning.wiki

Every Fossil repository maintains a list of the SHA1 hash names of "shunned" artifacts. Fossil will refuse to push or pull any shunned artifact. Furthermore, all shunned artifacts (but not the shunning list itself) are removed from the repository whenever the repository is reconstructed using the "rebuild" command.

Fossilizer

Python ! - https://github.com/gcw/Fossilizer

web2py application for multiple self-hosted fossil-scm projects/repositories ...

... The documentation in this repository is formatted using the fossil-scm wiki formatting rules which happens to be very close to a subset of the wikimedia format ...

... This project is self-hosted on the Secution, Inc. fossil server at http://fossil.secution.com/u/gcw/fossilizer Note: unreachable.

Last real release July 2011. The code seems to be simple and rather straightforward, at least not too nasty ...

See PythonFramework#Web2Py

Using MongoDB

Doable on a small scale ...

https://github.com/thiloplanz/v7files/wiki/Vermongo

Vermongo: Simple Document Versioning with MongoDB

http://mongoid.org/en/mongoid/docs/extras.html#versioning

http://software.danielwatrous.com/representing-revision-data-in-mongodb/

http://igd-geo.github.io/mongomvcc/

Multiversion concurrency control (MVCC) on top of MongoDB

See MongoDB

CouchDB

CouchDB has got a versioning capability and a workable DB to DB synchronization function. May be simpler and more direct than MongoDB.

CouchDB Replication Protocol - http://docs.couchdb.org/en/1.6.1/replication/protocol.html

See Erlang#CouchDB ... Erlang ???

Also See

ConfigurationManagement

http://en.wikipedia.org/wiki/Clustered_file_system#Distributed_file_systems

That is, using Distributed Revision Control in place of heavy-weight dependency-laden DFS ...

Servers#PeertoPeerServers

Last modified 2 years ago Last modified on 10/28/2015 06:26:06 PM