versionControl/handOut.rst
author Shantanu <shantanu@fossee.in>
Fri, 21 Aug 2009 20:26:01 +0530
changeset 16 7a8f9fa7accd
parent 15 d20e3fe4fd8c
child 17 e6240ecd7ae6
permissions -rw-r--r--
Completed Getting Started with Repository.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
     1
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
     2
Version Control
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
     3
===============
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
     4
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
     5
Introduction
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
     6
------------
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
     7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
     8
The following words are from a blogpost "http://karlagius.com/2009/01/09/version-control-for-the-masses/"
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
     9
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    10
"Version control is one of those weird, geeky things that never really gained much ground in non-geek fields, despite the fact that it’s blindingly useful.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    11
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    12
Version control (or source control) is nothing more arcane than keeping copies of ones work as one make changes to it. On the surface, it’s all straight-forward; make a copy of every file before making any changes to it. That way, if something seriously messes up, one can always fall back to something that worked before, or at least compare the broken copy with one that used to work so one can figure out where it went off kilter.Accidentally deleted half of thesis and closed the word processor? No problem – out comes the backup."
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    13
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    14
Now, in the real world, it’s not so easy. One probably cooks up their own version control system without realizing it had such a geeky name. For instances files with names oldxxxxxx.odt and latestxxxxxx.odt. Every time to make some change in a file, one save it with different name then the original one. Luckily there are like, loads of version control systems out there to do this heavy lifting.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    15
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    16
Why Use Version Control
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    17
-----------------------
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    18
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    19
"Its the start which most people fail to attempt". 
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    20
One of idea behind Version Control Tools was to save that "one" step, to build onto it, rather then simply lose it. So here are some reasons why is automated version control needed:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    21
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    22
    - It will track the history and evolution of a project, so one don't have to do it manually. It allows to track what changes where made, when were they made, by whom and why.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    23
    - For a team on people working on same project, revision control software makes it easier to collaborate. For example, when people more or less simultaneously make potentially incompatible changes, the software will help them to identify and resolve those conflicts.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    24
    - It can help to recover from mistakes. If a change made at some moment of time, turns out to be in error in future, one can revert to an earlier version of one or more files. In fact, a really good revision control tool will even help in efficiently figure out exactly when a problem was introduced.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    25
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    26
Most of these reasons are equally valid for the project having one man show, or hundred people. Beyond this, even it can be used to maintain assignments related to one particular subject/course, it will help manage things in way much better way. Rather use these tools for *resource management*. All codes, documents, presentation, assignments related to one course maintained in such a inventory,and one would never need (excuse)/(face the embarrassament), "I accendently deleted my all data!"(for those who have actually done that after completing assignments), and Internet hosting for version control will make the work immune to local hard-disk crash, unless hosting crashes itself.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    27
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    28
Some of Version Control Tools available and used widely are:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    29
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    30
     - cvs (Concurrent Version System)
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    31
     - svn (Subversion)
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    32
     - hg (Mercurial)
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    33
     - bzr (Bazaar)
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    34
     - git 
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    35
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    36
Each of above mentioned tools have sets of feature which it offers in unique way. For this session we are going to concentrate on hg (mercurial). After covering the basics of hg, one can easily try other tools, and use what-ever he/she is most comfortable with.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    37
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    38
Learning the Lingo
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    39
------------------
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    40
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    41
Each Version Control uses its own nomenclature for more or less the same features. Here are some of terms which are going to used through out the rest of session:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    42
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    43
Basic Setup
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    44
~~~~~~~~~~~
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    45
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    46
     Repository(repo):
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    47
	The database/folder storing the files.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    48
     Server:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    49
	The computer storing the repo.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    50
     Client:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    51
	The computer connecting to the repo.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    52
     Working Set/Working Copy:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    53
     	Your local directory of files, where you make changes. This is what is present on client side.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    54
     Trunk/Main:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    55
	The “primary” location for code in the repo. Think of code as a family tree — the “trunk” is the main line. This is generally what is present on server.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    56
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    57
Basic Actions
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    58
~~~~~~~~~~~~~
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    59
     
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    60
     Add:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    61
	Put a file into the repo for the first time, i.e. begin tracking it with Version Control.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    62
     Revision:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    63
	What version a file is on.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    64
     Head:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    65
	The latest revision of the repo.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    66
     Check out:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    67
     	Initial download of repo onto machine.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    68
     Check in:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    69
     	Upload a file to repository(if it has changed). The file gets a new revision number, and people can “check out” the latest one.
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
    70
     Checking Message:
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    71
     	A short message describing what was changed.
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
    72
     Change log/History:
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    73
	A list of changes made to a file since it was created.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    74
     Update/Sync:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    75
	Synchronize local files with the latest from the repository on server. This get the latest revisions of all files.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    76
     Revert:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    77
	Throw away the local changes and reload the latest version from the repository.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    78
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    79
Advanced Actions:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    80
~~~~~~~~~~~~~~~~~
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    81
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    82
     Branch:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    83
	Create a separate copy of a file/folder for private use (bug fixing, testing, etc).
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    84
     Diff/Change:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    85
	Finding the differences between two files. Useful for seeing what changed between revisions.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    86
     Merge (or patch):
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    87
     	Apply the changes from one file to another, to bring it up-to-date.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    88
     Conflict:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    89
	When pending changes to a file contradict each other (both changes cannot be applied).
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    90
     Resolve:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    91
	Fixing the changes that contradict each other and checking in the correct version.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    92
     
8
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
    93
Types of Version Control:
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
    94
~~~~~~~~~~~~~~~~~~~~~~~~~
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
    95
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
    96
Based on how source management is carried out in a tool there are two categories of Version Control Systems(VCS):
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
    97
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
    98
      - Centralized VCS: 
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
    99
      	In this kind of system all the revision control functions are performed on a shared server. If two developers try to change the same file at the same time, without some method of managing access the developers may end up overwriting each other's work. Centralized revision control systems solve this problem in one of two different "source management models": file locking and version merging. Both svn and cvs follows this kind of management.
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   100
   
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   101
      - Distributed VCS:
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   102
      	In a distributed model, every developer has their own repo. Diffs, commits, and reverts are all done locally, one needs Internet only to share the changes with others. It makes work faster, handles branching and merging in better way, with less management. hg, bzr and git uses this work flow.
8
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   103
15
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   104
Get Going with Hg:
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   105
------------------
8
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   106
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   107
Why hg?
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   108
~~~~~~~
15
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   109
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   110
	- It is easy to learn and use.
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   111
	- It is lightweight.
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   112
	- It scales excellently.
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   113
	- It is based on Python.
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   114
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   115
Getting Started:
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   116
~~~~~~~~~~~~~~~~
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   117
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   118
Following command tells the version of hg installed on machine:
15
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   119
   
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   120
   $hg version
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   121
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   122
   Mercurial Distributed SCM (version 1.1.2)
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   123
   Copyright (C) 2005-2008 Matt Mackall <mpm@selenic.com> and others
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   124
   This is free software; see the source for copying conditions. There is NO
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   125
   warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   126
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   127
Built-in help, Mercurial provides a built-in help system. Following command will print a brief list of commands, along with a description of what each does. ::
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   128
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   129
   $hg help
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   130
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   131
   Mercurial Distributed SCM
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   132
   list of commands:
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   133
   add          add the specified files on the next commit
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   134
   addremove	-----------------------
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   135
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   136
For specific command, just follow the command name after the help. ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   137
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   138
    $hg help diff
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   139
    hg diff [OPTION]... [-r REV1 [-r REV2]] [FILE]...
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   140
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   141
    diff repository (or selected files)
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   142
    Show differences between revisions for the specified files.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   143
    Differences between files are shown using the unified diff format.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   144
    NOTE:____________
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   145
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   146
Let there be Repository:
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   147
~~~~~~~~~~~~~~~~~~~~~~~~
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   148
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   149
In Mercurial, everything happens inside a repository. The repository for a project contains all of the files that “belong to” that project, along with a historical record of the project's files.A repository is simply a directory tree in filesystem that Mercurial treats as special.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   150
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   151
There can be two ways to create a repo, either getting local copy for existing repo available on Internet or machine, or creating a new repo. For getting already existing repo hg uses command *"clone"* ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   152
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   153
      $hg clone http://hg.serpentine.com/tutorial/hello localCopyhello
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   154
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   155
      requesting all changes
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   156
      adding changesets
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   157
      adding manifests
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   158
      adding file changes
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   159
      added 5 changesets with 5 changes to 2 files
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   160
      updating working directory
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   161
      2 files updated, 0 files merged, 0 files removed, 0 files unresolved
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   162
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   163
If clone succeeded, there would be a local directory called localCopyhello, with some files: ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   164
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   165
      $ls localCopyhello/
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   166
      hello.c  Makefile
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   167
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   168
Every Mercurial repository is complete, self-contained, and independent. It contains its own private copy of a project's files and history.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   169
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   170
To start a new repository hg uses *"init"*: ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   171
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   172
   $ mkdir newRepo
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   173
   $ cd newRepo/
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   174
   $ cp ../Desktop/handOut.rst .
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   175
   $ ls -a
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   176
   .  ..  handOut.rst
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   177
   $ hg init
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   178
   $ ls -a
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   179
   .  ..  handOut.rst  .hg
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   180
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   181
*.hg* directory indicates that this new dir is now a repo.This is where Mercurial keeps all of its metadata for the repository.The contents of the .hg directory and its subdirectories are private to Mercurial. Rest all files are for the user to use them as they pleases.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   182
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   183
Creating a branch of existing local repo is very easy via hg using clone command: ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   184
	
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   185
    $ hg clone localCopyhello newCopy
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   186
    updating working directory
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   187
    2 files updated, 0 files merged, 0 files removed, 0 files unresolved
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   188
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   189
now newCopy is exact copy of already existing repo. And this command can be used to create branch of locally created repo also: ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   190
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   191
    $ hg clone newRepo copyNewRepo
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   192
    updating working directory
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   193
    1 files updated, 0 files merged, 0 files removed, 0 files unresolved
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   194
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   195
These local branches can prove really handy at times. It allows keep multiple copies of local branch for different purposes, say for debugging, testing, working version.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   196
	
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   197
History or Logs:
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   198
~~~~~~~~~~~~~~~~	  
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   199
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   200
For the new repo created, first thing which can be tried is to check the logs/history. What changes were made and when and why, answers to all those questions are stored in logs safely. So for the the cloned repo the history can be viewed using command *"log"* (we are working here on localCopyhello repo). ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   201
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   202
    $hg log
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   203
    changeset:   4:2278160e78d4
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   204
    tag:         tip
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   205
    user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   206
    date:        Sat Aug 16 22:16:53 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   207
    summary:     Trim comments.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   208
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   209
    changeset:   3:0272e0d5a517
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   210
    user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   211
    date:        Sat Aug 16 22:08:02 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   212
    summary:     Get make to generate the final binary from a .o file.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   213
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   214
    changeset:   2:fef857204a0c
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   215
    user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   216
    date:        Sat Aug 16 22:05:04 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   217
    summary:     Introduce a typo into hello.c.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   218
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   219
    changeset:   1:82e55d328c8c
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   220
    user:        mpm@selenic.com
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   221
    date:        Fri Aug 26 01:21:28 2005 -0700
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   222
    summary:     Create a makefile
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   223
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   224
    changeset:   0:0a04b987be5a
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   225
    user:        mpm@selenic.com
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   226
    date:        Fri Aug 26 01:20:50 2005 -0700
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   227
    summary:     Create a standard "hello, world" program
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   228
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   229
By default, this command prints a brief paragraph of output for each change to the project that was recorded.The fields in a record of output from hg log are as follows:
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   230
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   231
   - changeset: This field has the format of a number, followed by a colon, followed by a hexadecimal (or hex) string. These are identifiers for the changeset. The hex string is a unique identifier: the same hex string will always refer to the same changeset in every copy of this repository. 
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   232
   - user: The identity of the person who created the changeset.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   233
   - date: The date and time on which the changeset was created, and the timezone in which it was created.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   234
   - summary: The first line of the text message that the creator of the changeset entered to describe the changeset.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   235
   - tag: A tag is another way to identify a changeset, by giving it an easy-to-remember name.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   236
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   237
To narrow the output of hg log down to a single revision, use the -r (or --rev) option. ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   238
   
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   239
   $hg log -r 3
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   240
   changeset:   3:0272e0d5a517
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   241
   user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   242
   date:        Sat Aug 16 22:08:02 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   243
   summary:     Get make to generate the final binary from a .o file.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   244
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   245
*range notation* can be used to get history of several revisions without having to list each one. ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   246
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   247
   $ hg log -r 2:4
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   248
   changeset:   2:fef857204a0c
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   249
   user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   250
   date:        Sat Aug 16 22:05:04 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   251
   summary:     Introduce a typo into hello.c.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   252
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   253
   changeset:   3:0272e0d5a517
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   254
   user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   255
   date:        Sat Aug 16 22:08:02 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   256
   summary:     Get make to generate the final binary from a .o file.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   257
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   258
   changeset:   4:2278160e78d4
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   259
   tag:         tip
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   260
   user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   261
   date:        Sat Aug 16 22:16:53 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   262
   summary:     Trim comments.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   263
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   264
The hg log  command's -v (or --verbose) option gives you this extra detail. ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   265
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   266
    $ hg log -v -r 3
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   267
    changeset:   3:0272e0d5a517
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   268
    user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   269
    date:        Sat Aug 16 22:08:02 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   270
    files:       Makefile
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   271
    description:
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   272
    Get make to generate the final binary from a .o file.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   273
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   274
All about command options??? should we use this?
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   275
8
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   276
Suggested Reading:
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   277
------------------
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   278
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   279
	* http://karlagius.com/2009/01/09/version-control-for-the-masses/
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   280
	* http://betterexplained.com/articles/a-visual-guide-to-version-control/
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   281
	* http://en.wikipedia.org/wiki/Revision_control
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   282
	* http://hgbook.red-bean.com/
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   283
	* http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/