summaryrefslogtreecommitdiff
path: root/Version_Control/vcs1/vcs1_rec.rst
blob: 01e264e883ff094b8da68944bddfe7cc2a70b949 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
---------------------------------
Version Control using Hg Part I 
---------------------------------

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

.. None

.. Author : Primal Pappachan
   Internal Reviewer : Kiran Isukapatla
   Date: Jan 27, 2012

----------------------
Spoken Tutorial Script
----------------------



+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| *{{{ Show the first slide containing title, name of the production team along    | Hello friends and welcome to the first part of tutorial on 'Version Control      |
| with the logo of MHRD}}}*                                                        | using Hg'                                                                        |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| *{{{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 and intialize a repository                                 |
|                                                                                  |                                                                                  |
|                                                                                  |                                                                                  |
|                                                                                  | First, let's understand what 'Version Control' is.                               |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| *{{{Show the slide 'what is version control'}}*}                                 | '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.                     |
|                                                                                  |                                                                                  |
|                                                                                  | As the quote from the famous blog post 'Version Control for masses' says         |
|                                                                                  |                                                                                  |
|                                                                                  | "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." |
|                                                                                  |                                                                                  |
|                                                                                  | Over the course of these 3 spoken tutorials, we are going to see a handful of    |
|                                                                                  | such things, which are widely used in the programmer world, but not so much in   |
|                                                                                  | the scientific computing world, even when if they would be very useful.          |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| *{{{Show the slide 'Home-brewed'}}}*                                             | Let's 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, without            |
|                                                                                  | realizing, there were tools built by others, that performs the task in a more    |
|                                                                                  | organized and systematic way.                                                    |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| *{{{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                                                               |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| *{{{Show the slide 'The need for Version Control'}}}*                            | Having seen the problems of a home brewed setup, let's now move onto             |
|                                                                                  | identifying the needs for a 'Version Control System'.                            |
|                                                                                  |                                                                                  |
|                                                                                  |  1. To err is Human . . .                                                        |
|                                                                                  |  #. Tracking the history and evolution of a project                              |
|                                                                                  |  #. To collaborate effectively on a project                                      |
|                                                                                  |  #. To efficiently track down bugs and pin-point the                             |
|                                                                                  |  #. changes that caused it                                                       |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| *{{{Show the slide 'The need for Version Control'}}}*                            | 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 p |
|                                                                                  | 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 |
|                                                                                  | 4. It is good for a one man show as it is for a big group of people working on a |
|                                                                                  |                                                                                  |
|                                                                                  | Keeping your stuff version controlled will help avoid accidental deletion of     |
|                                                                                  | individual files etc. Hosting it on a remote server will protect your sanity     |
|                                                                                  | from a hard disk crash.                                                          |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| *{{{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 course of   |
|                                                                                  | the game.                                                                        |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| *{{{Show the slide 'Mercurial or hg'}}}*                                         | Some of the Version Control tools available and used widely are:                 |
|                                                                                  |                                                                                  |
|                                                                                  |  1. cvs(Concurrent Version Systems)                                              |
|                                                                                  |  #. svn(subversion)                                                              |
|                                                                                  |  #. hg(mercurial)                                                                |
|                                                                                  |  #. git                                                                          |
|                                                                                  |                                                                                  |
|                                                                                  |                                                                                  |
|                                                                                  | Each of these tools have their own merits and demerits. In this tutorial we      |
|                                                                                  | shall learn how to use mercurial or hg which is easy to learn and use and        |
|                                                                                  | comparatively light weight. Once you learn how to use hg, you can easily try     |
|                                                                                  | other tools and switch to one that you feel most comfortable with.               |
|                                                                                  |                                                                                  |
|                                                                                  | Let's now get into Installation. For Linux distributions, Ubuntu and Debian      |
|                                                                                  | type the following in command line terminal                                      |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| ``sudo apt-get install mercurial``                                               | For Windows,                                                                     |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| ``http://mercurial.selenic.com/downloads/``                                      |                                                                                  |
|                                                                                  |                                                                                  |
| ``http://hgbook.red-bean.com/read/a-tour-of-mercurial-the-basics.html``          |                                                                                  |
|                                                                                  |                                                                                  |
| .. R 11                                                                          |                                                                                  |
|                                                                                  |                                                                                  |
| For any other Operating system, please refer the hg book for installation        |                                                                                  |
| instruction -                                                                    |                                                                                  |
|                                                                                  |                                                                                  |
| Type 'hg' which lists out all the commands                                       |                                                                                  |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| ``$hg``                                                                          | and 'hg version' which gives the version number.                                 |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| ``$hg version``                                                                  | This brings us to the end of the tutorial. In this tutorial, we have             |
|                                                                                  | seen,                                                                            |
|                                                                                  |                                                                                  |
| *{{{Show the 'summary' slide'}}}*                                                | 1. the motivation to use version control                                         |
|                                                                                  | #. an analogy of version control with playing a video game                       |
|                                                                                  | #. how to check if mercurial is installed, and it's version using hg version     |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| *{{{Show self assessment questions slide}}}*                                     | Here are some self assessment questions for you to solve                         |
|                                                                                  |                                                                                  |
|                                                                                  |  1. Is Mercurial a Centralized VCS or Distributed VCS? Justify your reasoning.   |
|                                                                                  |  #. How can you verify whether Mercurial has been installed properly?            |
|                                                                                  |  #. What is the command for accessing built-in help system of Mercurial?         |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| *{{{Show the solutions slide to self assessment questions }}}*                   | And the answers,                                                                 |
|                                                                                  |                                                                                  |
|                                                                                  |  1. Mercurial is a Centralized Version Control system. To read more go here, htt |
|                                                                                  |  #. $hg version                                                                  |
|                                                                                  |  #. $hg help command                                                             |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| *{{{Show the thank you slide}}}*                                                 | Hope you have enjoyed this tutorial and found it useful. Feel free to play       |
|                                                                                  | around with Mercurial and read the documentation given by hg help command. When  |
|                                                                                  | you are ready to move on, please proceed to the second tutorial on 'Version      |
|                                                                                  | Control using Hg'                                                                |
|                                                                                  |                                                                                  |
|                                                                                  | Thank you                                                                        |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+