.. Prerequisites
.. -------------

.. None

.. Author : Primal Pappachan
   Internal Reviewer : Kiran Isukapatla
   Date: May 10 2012

--------
Script
--------



+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{ Show the first slide containing title, name of the production team along     | Hello friends and welcome to the tutorial on 'Version Control with Hg'           |
| with the logo of MHRD}}}                                                         |                                                                                  |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{Show the slide containing the objectives}}}                                   | At the end of this tutorial you will be able to                                  |
|                                                                                  |                                                                                  |
|                                                                                  | 1. Understand what is Version Control.                                           |
|                                                                                  |                                                                                  |
|                                                                                  | #. Identify the need for using Version Control.                                  |
|                                                                                  |                                                                                  |
|                                                                                  | #. Install Mercurial.                                                            |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{Show the slide 'what is version control'}}}                                   | First, let's understand what 'Version Control' is.                               |
|                                                                                  |                                                                                  |
|                                                                                  | 'Version control' is a way to track files over time and share them.              |
|                                                                                  | This allows access to earlier versions of a file(s) if and when required.        |
|                                                                                  | It therefore enables us to make changes to the content of a file, view it's      |
|                                                                                  | change log and collaborate on a single piece of work with a team of people.      |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{Show the slide 'Home-brewed'}}}                                               | Lets look at an example of home-brewed Version Control system.Version control    |
|                                                                                  | is a way of backing up files, before making changes. Most people would have      |
|                                                                                  | cooked up their own version control system.                                      |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{Show the next slide 'Home-brewed'}}}                                          | Listing the files in the folder we observe that after a point of time it         |
|                                                                                  | becomes difficult to maintain proper names for different versions of a file.     |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{Show the slide 'Problems'}}}                                                  | Let's look at the various problems associated with this set-up.                  |
|                                                                                  |                                                                                  |
|                                                                                  | 1. Name and changes made are not related or linked.                              |
|                                                                                  |                                                                                  |
|                                                                                  | #. Can't track sequence of changes made to a file.                               |
|                                                                                  |                                                                                  |
|                                                                                  | #. Does not scale.                                                               |
|                                                                                  |                                                                                  |
|                                                                                  | To overcome this problems there are more general purpose tools which can         |
|                                                                                  | do this task in an organized way.                                                |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{Show the slide 'The need for Version Control'}}}                              | Now, let's move to identifying the needs for a 'Version Control System'.         |
|                                                                                  |                                                                                  |
|                                                                                  | We have seen that one of the main motivations to use a Version Control system    |
|                                                                                  | is the ability to go back to a working version of a file, when something         |
|                                                                                  | goes wrong. Below are a few more advantages of using an automated version        |
|                                                                                  | control system.                                                                  |
|                                                                                  |                                                                                  |
|                                                                                  | 1. By tracking the history of a project, any person may see the evolution        |
|                                                                                  | of a project.                                                                    |
|                                                                                  |                                                                                  |
|                                                                                  | 2. Allows for effective collaboration on a project, as everything is shared.     |
|                                                                                  |                                                                                  |
|                                                                                  | 3. Helps to identify which additions have broken down a project and thus         |
|                                                                                  | aids in efficient tracking down of the bugs.                                     |
|                                                                                  |                                                                                  |
|                                                                                  | 4. It is good for a one man show as it is for a big group of people working      |
|                                                                                  | on a project.                                                                    |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{Show the slide 'How does it work? - Analogy}}}                                | It is, in some ways, similar to playing a video game. We generally play games    |
|                                                                                  | in stages. While playing, we save the game at some instances as per our choice.  |
|                                                                                  | We continue playing, but we could, if necessary, choose to go back to one of the |
|                                                                                  | saved states and start over. In this manner, we could change the state of        |
|                                                                                  | the game.                                                                        |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{Show the slide 'Mercurial or hg'}}}                                           | Some of the Version Control tools available and used widely are: cvs, svn,       |
|                                                                                  | git and so on.                                                                   |
|                                                                                  |                                                                                  |
|                                                                                  | Each of these tools have their own merits and demerits. In this tutorial we      |
|                                                                                  | shall learn how to use mercurial or hg.                                          |
|                                                                                  |                                                                                  |
|                                                                                  | Mercurial or hg is:                                                              |
|                                                                                  |                                                                                  |
|                                                                                  | 1. Easy to learn and use                                                         |
|                                                                                  |                                                                                  |
|                                                                                  | #. Lightweight                                                                   |
|                                                                                  |                                                                                  |
|                                                                                  | #. Scales excellently                                                            |
|                                                                                  |                                                                                  |
|                                                                                  | #. Written in Python                                                             |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{Switch to terminal}}}                                                         | Type sudo apt-get install mercurial                                              |
| ::                                                                               |                                                                                  |
|                                                                                  | Type hg                                                                          |
|     $sudo apt-get install mercurial                                              |                                                                                  |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
|                                                                                  |                                                                                  |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| ::                                                                               | It will give you the list of basic commands.                                     |
|                                                                                  |                                                                                  |
|     $hg                                                                          |                                                                                  |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| ::                                                                               | and 'hg version' gives the version number of mercurial you are presently using.  |
|                                                                                  |                                                                                  |
|     $hg version                                                                  |                                                                                  |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{Show the 'summary' slide'}}}                                                  | This brings us to the end of the tutorial. In this tutorial, we have             |
|                                                                                  | learnt:                                                                          |
|                                                                                  |                                                                                  |
|                                                                                  | 1. What is Version Control.                                                      |
|                                                                                  |                                                                                  |
|                                                                                  | #. Identify the need for using Version Control                                   |
|                                                                                  |                                                                                  |
|                                                                                  | #. Install Mercurial.                                                            |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{Show self assessment questions slide}}}                                       | Here are some self assessment questions for you to solve                         |
|                                                                                  |                                                                                  |
|                                                                                  | 1. Is Mercurial a Centralized VCS or Distributed Version Control System?         |
|                                                                                  |                                                                                  |
|                                                                                  | #. How can you retrive the version of Mercurial installed?                       |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{Show the solutions slide to self assessment questions }}}                     | And the answers,                                                                 |
|                                                                                  |                                                                                  |
|                                                                                  | 1. Mercurial is a Distributed Version Control system.                            |
|                                                                                  |                                                                                  |
|                                                                                  | #. hg version                                                                    |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{ Show the SDES & FOSSEE slide }}}                                             | Software Development techniques for Engineers and Scientists - SDES, is an       |
|                                                                                  | initiative by FOSSEE. For more information, please visit the given link.         |
|                                                                                  |                                                                                  |
|                                                                                  | Free and Open-source Software for Science and Engineering Education - FOSSEE, is |
|                                                                                  | based at IIT Bombay which is funded by MHRD as part of National Mission on       |
|                                                                                  | Education through ICT.                                                           |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{ Show the ``About the Spoken Tutorial Project'' slide }}}                     | Watch the video available at the following link. It summarises the Spoken        |
|                                                                                  | Tutorial project.If you do not have good bandwidth, you can download and         |
|                                                                                  | watch it.                                                                        |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{ Show the `` Spoken Tutorial Workshops'' slide }}}                            | The Spoken Tutorial Project Team conducts workshops using spoken tutorials,      |
|                                                                                  | gives certificates to those who pass an online test.                             |
|                                                                                  |                                                                                  |
|                                                                                  | For more details, contact contact@spoken-tutorial.org                            |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{ Show the ``Acknowledgements'' slide }}}                                      | Spoken Tutorial Project is a part of the "Talk to a Teacher" project.            |
|                                                                                  | It is supported by the National Mission on Education through ICT, MHRD,          |
|                                                                                  | Government of India. More information on this mission is available at the        |
|                                                                                  | given link.                                                                      |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{Show the thank you slide}}}                                                   | Hope you have enjoyed this tutorial and found it useful.                         |
|                                                                                  | Thank you                                                                        |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+