summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Latex/Latex1/latex_install_script.rst51
-rw-r--r--Latex/Latex2/latex_intro.tex16
-rw-r--r--Latex/Latex2/latex_intro_script.rst182
-rw-r--r--Latex/Latex3/latex_basics.tex31
-rw-r--r--Latex/Latex3/latex_basics_and_structure_script.rst187
-rw-r--r--Latex/Latex4/Latex_Typesetting_Text.tex16
-rw-r--r--Latex/Latex5/Latex_FTF.tex20
-rw-r--r--Latex/Latex6/latex_math2beamer.tex18
-rw-r--r--Latex/Latex6/latex_math_biblo_beamer_script.rst117
-rw-r--r--TDD/getting_started_with_tdd/tdd1.tex69
-rwxr-xr-xTDD/getting_started_with_tdd/tdd1_script.rst8
-rw-r--r--TDD/using_python_framework_for_tdd/tdd2.tex20
-rwxr-xr-xTDD/using_python_framework_for_tdd/tdd2_script.rst51
-rw-r--r--Version_Control/images/fossee-logo.pngbin13587 -> 0 bytes
-rw-r--r--Version_Control/images/iitb-logo.jpgbin325871 -> 0 bytes
-rw-r--r--Version_Control/vcs1/folder.png (renamed from Version_Control/images/folder.png)bin45829 -> 45829 bytes
-rw-r--r--Version_Control/vcs1/mercurial_logo.png (renamed from Version_Control/images/mercurial_logo.png)bin6684 -> 6684 bytes
-rw-r--r--Version_Control/vcs1/vcs1.rst269
-rw-r--r--Version_Control/vcs1/vcs1_2col.rst152
-rw-r--r--Version_Control/vcs1/vcs1_slide.tex270
-rw-r--r--Version_Control/vcs1/vcslide1.tex205
-rw-r--r--Version_Control/vcs2/vcs2.rst254
-rw-r--r--Version_Control/vcs2/vcs2twocol.rst195
-rw-r--r--Version_Control/vcs2/vcslide2.tex49
-rw-r--r--Version_Control/vcs3/vcs3.rst116
-rw-r--r--Version_Control/vcs3/vcs3_2col.rst132
-rw-r--r--Version_Control/vcs4/vcs4.rst307
-rw-r--r--Version_Control/vcs4/vcs4_rec.rst215
-rw-r--r--ult/Documentation/5.1.rst43
-rw-r--r--ult/Documentation/5.2.rst32
-rw-r--r--ult/Documentation/5.3.rst20
-rw-r--r--ult/Documentation/5.4.rst20
-rw-r--r--ult/Documentation/6.1.rst51
-rw-r--r--ult/Documentation/6.2.rst23
-rw-r--r--ult/Documentation/6.3.rst18
-rw-r--r--ult/Documentation/6.4.rst20
-rw-r--r--ult/Documentation/7.1.rst28
-rw-r--r--ult/Documentation/7.2.rst29
-rw-r--r--ult/Documentation/7.3.rst19
-rw-r--r--ult/Documentation/7.4.rst24
-rw-r--r--ult/Documentation/7.5.rst24
-rw-r--r--ult/Documentation/8.1.rst28
-rw-r--r--ult/Documentation/8.2.rst23
-rw-r--r--ult/Documentation/8.3.rst20
-rw-r--r--ult/Documentation/8.4.rst15
-rw-r--r--ult/Documentation/8.5.rst41
46 files changed, 2463 insertions, 965 deletions
diff --git a/Latex/Latex1/latex_install_script.rst b/Latex/Latex1/latex_install_script.rst
index 2013e40..bae8060 100644
--- a/Latex/Latex1/latex_install_script.rst
+++ b/Latex/Latex1/latex_install_script.rst
@@ -1,16 +1,29 @@
+.. Objectives
+.. ----------
+
+.. At the end of this tutorial, you will
+
+.. Install LaTeX on your computer.
+.. Learn how to install a plug-in for a TeX editor.
+.. Configure the TeX editor with the LaTeX plug-in.
+.. Useful information on some LaTeX packages.
+.. Compile a TeX file to pdf.
+
.. Prerequisites
.. -------------
-.. 1. You'll need a TeX distribution.
-... A good text editor and a DVI or PDF viewer.
-... Updated Linux distribution as Operating System.
-... Working internet connection (for installation over the network).
+.. You'll need a TeX distribution.
+.. A good text editor and a DVI or PDF viewer.
+.. Updated Linux distribution as Operating System.
+.. Working internet connection (for installation over the network).
-.. Author: Kiran Isukapatla < kiran [at] fossee [dot] in >
-.. Internal Reviewer:
-.. Check-list OK?: <put date stamp here, if OK>
---------
+.. Author : Kiran Isukapatla < kiran [at] fossee [dot] in >
+ Internal Reviewer : Kiran Isukapatla < kiran [at] fossee [dot] in >
+ External Reviewer :
+ Langauge Reviewer :
+ Checklist OK? : 25-Feb-2012
+
Script
--------
@@ -28,13 +41,13 @@ Hello friends, welcome to the tutorial on 'LaTeX Installation'.
.. R2
-At the end of this tutorial you will be able to:
+At the end of this tutorial you will be able to
-.. 1. Install LaTeX on your computer.
-.. #. Learn how to install a plug-in for a TeX editor.
-.. #. Configure the TeX editor with the LaTeX plug-in.
-.. #. Useful information on some LaTeX packages.
-.. #. Compile a TeX file to pdf.
+1. Install LaTeX on your computer.
+#. Learn how to install a plug-in for a TeX editor.
+#. Configure the TeX editor with the LaTeX plug-in.
+#. Useful information on some LaTeX packages.
+#. Compile a TeX file to pdf.
.. L3
@@ -111,11 +124,11 @@ This produces an output file, in the pdf format.
This brings us to the end of the tutorial. In this tutorial, we have
learnt to,
-.. 1. Install LaTeX on your computer.
-.. #. How to install a plug-in for a TeX editor.
-.. #. Configure the TeX editor with the LaTeX plug-in.
-.. #. Choose a LaTeX packages as per requirement.
-.. #. Compile a TeX file to pdf.
+1. Install LaTeX on your computer.
+#. How to install a plug-in for a TeX editor.
+#. Configure the TeX editor with the LaTeX plug-in.
+#. Choose a LaTeX packages as per requirement.
+#. Compile a TeX file to pdf.
.. L11
diff --git a/Latex/Latex2/latex_intro.tex b/Latex/Latex2/latex_intro.tex
index 2bb0314..eca5367 100644
--- a/Latex/Latex2/latex_intro.tex
+++ b/Latex/Latex2/latex_intro.tex
@@ -77,7 +77,19 @@ At the end of this tutorial, you will be able to,
\end{itemize}
\end{frame}
+\begin{frame}
+\frametitle{Pre-requisite}
+\label{sec-3}
+
+ Spoken tutorial on -
+
+\begin{itemize}
+\item Installing {\LaTeX}.
+\end{itemize}
+\end{frame}
+
\begin{frame}[fragile]
+ \frametitle{Introduction}
\begin{block}{{\LaTeX} - Introduction}
\begin{itemize}
\item Typesetting program
@@ -92,7 +104,7 @@ At the end of this tutorial, you will be able to,
\end{frame}
\begin{frame}[fragile]
- \frametitle{Why \LaTeX?}
+ \frametitle{Why {\LaTeX}?}
\begin{itemize}
\item Excellent visual quality!
\item Handles the typesetting; Lets you focus on content
@@ -216,7 +228,7 @@ At the end of this tutorial, you will be able to,
\begin{frame}[fragile]
-\frametitle{Evaluation}
+\frametitle{Self assessment questions}
\label{sec-9}
\begin{enumerate}
\item Convert the temp.dvi created during the course of this tutorial to temp\_1.ps using the dvips command. Verify that the two files indeed look the same.
diff --git a/Latex/Latex2/latex_intro_script.rst b/Latex/Latex2/latex_intro_script.rst
index 390f0eb..a5cdc57 100644
--- a/Latex/Latex2/latex_intro_script.rst
+++ b/Latex/Latex2/latex_intro_script.rst
@@ -1,7 +1,7 @@
.. Objectives
.. ----------
-.. By the end of this tutorial, you will
+.. At the end of this tutorial, you will
.. 1. Get acquainted to LaTeX.
.. #. Know why we prefer LaTeX?
@@ -16,15 +16,14 @@
.. Prerequisites
.. -------------
-.. 1. Should have already installed LaTeX and its supported packages on the host machine.
-.. #. Should be comfortable using a text editor of your choice.
+.. 1. Installing LaTeX
.. Author : Harish Badrinath < harish [at] fossee [dot] in >
Internal Reviewer : Kiran Isukapatla < kiran [at] fossee [dot] in >
External Reviewer :
Langauge Reviewer :
- Checklist OK? : <put date stamp here, if OK>
+ Checklist OK? : 25-Feb-2012
Script
------
@@ -36,38 +35,39 @@ team along with the logo of MHRD }}}
.. R1
-Hello Friends and welcome to the tutorial on introduction to LaTeX.
+Hello Friends and welcome to the tutorial on 'Introduction to LaTeX'.
.. L2
-{{{ Show the objectives slide }}}
+{{{ Show the "Objectives" slide }}}
.. R2
-.. By the end of this tutorial, you will
+At the end of this tutorial, you will
-.. 1. Get acquainted to LaTeX.
-.. #. Know why we prefer LaTeX?
-.. #. Know the advantages and disadvantages of typesetting documents
-.. using the LaTeX approach.
-.. #. Have a description, of a typical work flow; which uses LaTeX to typeset
-.. documents.
-.. #. Recognize and differentiate between LaTeX commands, LaTeX comments and
-.. special characters, spacing and actual document content.
-.. #. Be able to create and compile a very simple LaTeX document.
+1. Get acquainted to LaTeX.
+#. Know why we prefer LaTeX?
+#. Know the advantages and disadvantages of typesetting documents
+ using the LaTeX approach.
+#. Have a description of a typical work flow; which uses LaTeX to typeset
+ documents.
+#. Recognize and differentiate between LaTeX commands, LaTeX comments and
+ special characters, spacing and actual document content.
+#. Be able to create and compile a very simple LaTeX document.
.. L3
-{{{ Switch to the pre-requisite slide }}}
+{{{ Show the "Pre-requisite" slide }}}
.. R3
-Before beginning this tutorial, we would suggest having a working installation of
-LaTeX on your computer. You can do this by completing the tutorial titled
+Before beginning this tutorial, we would suggest having a working installation
+of LaTeX on your computer. You can do this by completing the tutorial on
"Installing LaTeX".
.. L4
+{{{ Show the "Introduction" slide }}}
.. R4
@@ -75,10 +75,10 @@ LaTeX began as TeX, a computer program originally created by
Donald E. Knuth. Its was designed mainly to aid typesetting
of text and mathematical formulae.
-LaTeX is a typesetting program that produces excellently typeset documents.
+It is a typesetting program that produces excellently typeset documents.
Typesetting is placing text onto a page with all the style formatting defined,
-so that content looks as intended. It is extensively used for producing high
-quality scientific and mathematical documents. It may also be used for
+so that the content looks as intended. It is extensively used for producing
+high quality scientific and mathematical documents. It may also be used for
producing other kinds of documents, ranging from simple one page articles to
complete books.
@@ -88,29 +88,37 @@ technology.
.. L5
+{{{ Show the "Why LaTeX?" slide }}}
.. R5
-Below are some of the reasons we prefer LaTeX
+Why we prefer LaTeX?
(a) LaTeX offers excellent visual quality.
-(b) It handles typesetting and lets you focus on content.
-(c) Its makes writing complex math equation extremely simple.
+(b) Handles typesetting and lets you focus on content.
+(c) Makes writing complex math equation extremely simple.
(d) It is also a standard used widely, especially by the scientific community.
+.. L6
+
+{{{ Show the "Why LaTeX? ..." slide }}}
+
+.. R6
+
We can define LaTex as a document based markup language. This sentence is
deceptively simple, as it reveals a lot about LaTex. We now break this sentence
up as follows
-Mark-up — a system of annotating text, adding extra information to
-specify structure and presentation of text
-Document based markup - you don’t have to worry about each
-element individually.
+Mark-up: a system of annotating text, adding extra information to specify
+structure and presentation of text.
+Document based markup: you don’t have to worry about each element individually.
+
This is essentially a fancy way of saying,LaTeX handles typesetting and lets
you focus on content.
-.. L6
+.. L7
+{{{ Show the "Advantages of using LaTeX" slide }}}
-.. R6
+.. R7
Some of the advantages of using LaTeX approach to typesetting are
(1) Easy availability of professionally crafted layouts.
@@ -122,20 +130,22 @@ of the document.
(4) Presence of lots of add-on packages.
(5) It encourages creation of well structured texts.
-.. L7
+.. L8
+{{{ Show the "Disadvantages of using LaTeX" slide }}}
-.. R7
+.. R8
-Some of the disadvantages of using LaTeX approach to typesetting is
+Some of the disadvantages of using LaTeX approach to typesetting are
(1) Designing a whole new layout is difficult.
(2) LaTeX is not a word processor, that is the document author is not expected
to worry about presentation details like the size of font, for example.
-.. L8
+.. L9
+{{{ Show the "LaTeX input file format" slide }}}
-.. R8
+.. R9
LaTeX input files are simple ASCII text files that are processed by a TeX
processing engine.
@@ -152,13 +162,14 @@ The command pdflatex is used to convert LaTeX input files directly to pdf files.
The resultant PDF files can be viewed using standard tools on most platforms
(Eg: evince on Gnu/Linux). PDF file are also widely supported.
-.. L9
+.. L10
+{{{ Show the "Commands,Comments&Special Characters" slide }}}
-.. R9
+.. R10
LaTeX, like most utilities in Linux, LaTeX is case sensitive. Commands begin
-with a backslash.LaTeX environments have a begin and end marker. The begin and
+with a backslash. LaTeX environments have a begin and end marker. The begin and
end document commands, mark the beginning and the end of the content of the
LaTeX document. The text in between the begin and end commands is typeset in
the output document.Any content after \end{document} is ignored. The type of
@@ -170,20 +181,22 @@ command and ends with an end command.
So, as expected LaTeX ignores anything that is written after the \end{document}
command. Essentially, anything written after the \end{document} command turns
-out to be a comment. But, how do we write comments with in the document. % is
-the character to indicate comments. Anything written after a % symbol in a
-line, is ignored.
+out to be a comment.
-.. L10
+.. L11
+{{{ Show the "Commands,Comments&Special Characters ..." slide }}}
-.. R10
+.. R11
+But, how do we write comments with in the document. % is
+the character to indicate comments. Anything written after a % symbol in a
+line, is ignored.
But what if we wanted to insert the % symbol in the document? We can do so by
escaping it with a \ (backslash). % is one of the many special characters in
-LaTeX. The others are, ~ # $ ^ & _ { } \. All of them, except the \ itself, can
-be inserted by escaping it with a \. To insert a \ in our document, we use the
-command \textbackslash.
+LaTeX. The others are shown on the screen. All of them, except the \ itself,
+can be inserted by escaping it with a \. To insert a \ in our document, we use
+the command \textbackslash.
What would happen if we escape a \ with a \?
A double backslash is actually another command. It inserts a new line in the
@@ -191,26 +204,28 @@ typeset document. Normally LaTeX automatically spaces the given input optimally.
But, sometimes we have to insert manual line breaks. The \\ command or \newline
command is used to insert a newline in the output document. Line breaks in the
input document, do not translate into line breaks in the output document. A
-single line break in the input document, doesn't cause any change in the output.
+single line break in the input document, doesn't cause any change in the
+output document.
A single empty line causes a change in paragraphs in the output. (Multiple
empty lines are equivalent to a single empty line.) Similarly, multiple spaces
are treated as a single space.
-.. L11
+.. L12
-{{{ Show slide with exercise 1 }}}
+{{{ Show the "Typesetting a minimal document" slide }}}
-.. R11
+.. R12
-Now, we try to create a simple LaTeX document. Pause the tutorial and type the
+Now, try to create a simple LaTeX document. Pause the tutorial and type the
content shown on the screen in a text editor. Save the file as temp.tex
-.. L12
+.. L13
{{{continue from paused state}}}
+{{{ Show the "Compiling to DVI" slide }}}
-.. R12
+.. R13
Now we compile the commands in the LaTeX input file that is, temp.tex into a
typeset file.
@@ -221,13 +236,13 @@ file temp.tex into a DVI file, we use the following command
latex temp.tex.
-The output file would be temp.dvi.On Gnu/Linux use a program like xdvi to view
-the output file.
+The output file would be temp.dvi.
-.. L13
+.. L14
+{{{ Show the "Compiling to PDF" slide }}}
-.. R13
+.. R14
The other alternative is to create PDF files from LaTeX input files.
We use the pdflatex command for this purpose. For compiling the LaTeX input
@@ -235,35 +250,32 @@ file temp.tex into a PDF file, we use the following command
pdflatex temp.tex
-The output file would be temp.pdf.On Gnu/Linux use a program like evince to
-view the output file.
-
Please note that, throughout this course we shall be using pdflatex to compile
our documents.
-.. L14
+.. L15
-{{{ Show summary slide }}}
+{{{ Show the "Summary" slide }}}
-.. R14
+.. R15
This brings us to the end of this tutorial. In this tutorial, we have learnt
-.. 1. About LaTeX.
-.. #. why we prefer LaTeX.
-.. #. About the advantages and disadvantages of typesetting documents
-.. using the LaTeX approach.
-.. #. A description, of a typical work flow; which uses LaTeX to typeset
-.. documents.
-.. #. The ability to recognize and differentiate between LaTeX commands, LaTeX
-.. comments and special characters, spacing and actual document content.
-.. #. Created and compiled a very simple LaTeX document.
+1. About LaTeX.
+#. why we prefer LaTeX.
+#. About the advantages and disadvantages of typesetting documents
+ using the LaTeX approach.
+#. A description, of a typical work flow; which uses LaTeX to typeset
+ documents.
+#. The ability to recognize and differentiate between LaTeX commands, LaTeX
+ comments and special characters, spacing and actual document content.
+#. Created and compiled a very simple LaTeX document.
-.. L15
+.. L16
-{{{Show self assessment questions slide}}}
+{{{ Show the "Self assessment questions" slide }}}
-.. R15
+.. R16
Here are some self assessment questions for you to solve
@@ -274,25 +286,23 @@ using the dvips command. Verify that the two files indeed look the same.
temp_1.pdf using the dvipdfm command. Verify that the two files indeed look the
same.
-.. L16
+.. L17
-{{{Show self assessment questions slide}}}
+{{{ Show the "Solutions" slide }}}
-.. R16
+.. R17
And the answers,
-1. We can use the following command to convert temp.dvi to temp_1.ps
-dvips -o temp_1.ps temp.dvi
+1. dvips -o temp_1.ps temp.dvi
-2. We can use the following command to convert temp.dvi to temp_1.pdf
-dvipdfm -o temp_1.pdf temp.dvi
+2. dvipdfm -o temp_1.pdf temp.dvi
-.. L17
+.. L18
-{{{ Show the thank you slide }}}
+{{{ Show the "Thank you" slide }}}
-.. R17
+.. R18
Hope you have enjoyed this tutorial and found it useful.
Thank you!
diff --git a/Latex/Latex3/latex_basics.tex b/Latex/Latex3/latex_basics.tex
index 27142bf..d09aa92 100644
--- a/Latex/Latex3/latex_basics.tex
+++ b/Latex/Latex3/latex_basics.tex
@@ -74,6 +74,18 @@
\end{itemize}
\end{frame}
+\begin{frame}
+\frametitle{Pre-requisite}
+\label{sec-3}
+
+ Spoken tutorial on -
+
+\begin{itemize}
+\item Introduction to {\LaTeX}.
+\end{itemize}
+\end{frame}
+
+
\begin{frame}[fragile]
\frametitle{A Very Basic {\LaTeX} document}
{\tiny
@@ -105,7 +117,7 @@
\end{frame}
\begin{frame}[fragile]
- \frametitle{\typ{documentclass command}\ \ldots}
+ \frametitle{\typ{documentclass command: A Closer look}}
\begin{itemize}
\item Used to select the \emph{class} of our document
\item Some available classes - \typ{article}, \typ{proc},
@@ -267,6 +279,16 @@
\end{frame}
\begin{frame}[fragile]
+ \frametitle{Appendices}
+ \begin{itemize}
+ \item \lstinline{\appendix} command indicates the beginning of appendices.
+ \item Any content after \lstinline{\appendix}, will be added to the appendix.
+ \item Use sectioning commands to add sections.
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}[fragile]
\frametitle{\typ{Table of Contents [TOC]}}
\begin{itemize}
\item Our document is short, but let's learn to add a TOC
@@ -292,8 +314,7 @@
\begin{frame}[fragile]
\frametitle{\typ{Exercise 1}}
\begin{center}
- Write a LaTeX script that creates a document of type article, which contains both a table of content and an appendix. The table of content should be at the
-beginning of the document and the appendix at the end.
+ Write a LaTeX script that creates a document of type article, which contains both a table of content and an appendix. The table of content should be at the beginning of the document and the appendix at the end.
The book should contain two chapters, with the first chapter containing two numbered and two un-numbered sections. The first un-numbered section should be present in the table of content.
\end{center}
\end{frame}
@@ -347,9 +368,9 @@ beginning of the document and the appendix at the end.
\end{frame}
\begin{frame}[fragile]
- \frametitle{\typ{Evaluation}}
+ \frametitle{\typ{Self assessment questions}}
\label{sec-9}
- {\small
+ {\footnotesize
\begin{enumerate}
\item Is the LaTeX code given below a valid input file (File compiles successfully and produces the intended result, that is to produce a book with two chapters and an appendix.
{\tiny
diff --git a/Latex/Latex3/latex_basics_and_structure_script.rst b/Latex/Latex3/latex_basics_and_structure_script.rst
index 09e8d2a..d1db08b 100644
--- a/Latex/Latex3/latex_basics_and_structure_script.rst
+++ b/Latex/Latex3/latex_basics_and_structure_script.rst
@@ -1,73 +1,74 @@
.. Objectives
.. ----------
-.. By the end of this tutorial, you will be able to
+.. At the end of this tutorial, you will be able to
.. 1. Understand basic structure of a LaTeX document, its various document
.. classes and loading packages that add new features to the LaTeX system.
.. #. Create a LaTeX document with a title and an abstract.
-.. #. Create numbered and non-numbered sections and subsections in a LaTeX
+.. #. Create numbered and non-numbered sections and sub-sections in a LaTeX
.. document.
.. #. Create an appendix in a LaTeX document.
-.. #. Create a table of content in a LaTeX document.
+.. #. Create a 'table of contents' in a LaTeX document.
.. Prerequisites
.. -------------
-.. 1. latex_intro
+.. 1. Introduction to LaTeX
.. Author : Harish Badrinath < harish [at] fossee [dot] in >
- Internal Reviewer :
+ Internal Reviewer : Kiran Isukapatla < kiran [at] fossee [dot] in >
External Reviewer :
Langauge Reviewer :
- Checklist OK? : <put date stamp here, if OK>
+ Checklist OK? : 26-Feb-2012
Script
------
.. L1
-{{{ Show the first slide containing title, name of the production
+{{{ Show the first slide containing the title, name of the production
team along with the logo of MHRD }}}
.. R1
-Hello friends and welcome to the tutorial titled "Basics of LaTeX and its
+Hello friends and welcome to the tutorial on "Basics of LaTeX and its
document structure".
.. L2
-{{{ Show the objectives slide }}}
+{{{ Show the "Objectives" slide }}}
.. R2
-.. By the end of this tutorial, you will be able to
+At the end of this tutorial, you will be able to
-.. 1. Understand basic structure of a LaTeX document, its various document
-.. classes and loading packages that add new features to the LaTeX system.
-.. #. Create a LaTeX document with a title and an abstract.
-.. #. Create numbered and non-numbered sections and subsections in a LaTeX
-.. document.
-.. #. Create an appendix in a LaTeX document.
-.. #. Create a table of content in a LaTeX document.
+1. Understand basic structure of a LaTeX document, its various document
+ classes and loading packages that add new features to the LaTeX system.
+#. Create a LaTeX document with a title and an abstract.
+#. Create numbered and non-numbered sections and subsections in a LaTeX
+ document.
+#. Create an 'appendix' in a LaTeX document.
+#. Create a table of content in a LaTeX document.
.. L3
-{{{ Switch to the pre-requisite slide }}}
+{{{ Show the "Pre-requisite" slide }}}
.. R3
-Before beginning this tutorial,we would suggest having a working installation of
-LaTeX and suggest you to complete the tutorial titled "Introduction to LaTeX".
+Before beginning this tutorial, we would suggest having a working installation
+of LaTeX and also complete the tutorial "Introduction to LaTeX".
.. L4
+{{{ Show the "A Very Basic LaTeX document" slide }}}
.. R4
We begin this tutorial with an example introduced in the previous tutorial.
-The text in the document is illustrative and can be replaced replaced by a
+The text in the document is illustrative and can be replaced by a
single alpha-numeric character, for example. When done so, the resulting
document could be described as the shortest possible LaTeX input document, that
creates an output file. It consists of 3 LaTeX commands and one line/character
@@ -86,33 +87,38 @@ The first line reads
.. L5
+{{{ Show the "documentclass command" slide }}}
.. R5
-which more generally can be written as
+documentclass article, which more generally can be written as
.. L6
+{{{ Show the "documentclass command ..." slide }}}
.. R6
+documentclass parameters DocumentClass.
Where documentclass is a LaTeX command.
Parameters specify if you want to use a non default font size, for example.
More specifically the parameters can be used to alter things like font size of
the document, paper size, two sided or single sided printing, etc, for each
class, that is supported by LaTeX.
-The supported classes have a few differences, in how the content of the document is typeset.
+The supported classes have a few differences, in how the content of the document
+is typeset.
.. L7
+{{{ Show the "documentclass command: A Closer look" slide }}}
.. R7
We now look at a hypothetical documentclass command.
The command being shown on the screen, instructs LaTeX to
Create a new document of class report. The available classes are article, proc,
-report, book, slides, letter.
+report, book, slides and letter.
12 pt: sets the font size of main font. Other are relatively adjusted. 10pt is
the default.
a4paper: specifies the paper size
@@ -121,59 +127,66 @@ with a square in the margin
.. L8
+{{{ Show the "usepackage command" slide }}}
.. R8
-This statement can be used optionally and is used to include packages, which are
-used to extend the LaTeX's capabilities. There are a number of packages that are
-included by default with LaTeX2 base distribution. You can use the texdoc
-command for accessing package documentation.
+The usepackage command is called with package name argument, prepended with
+optional parameters. It is included optionally in a LaTeX document, to include
+packages, which further extend the LaTeX's capabilities. There are a number of
+packages that are included by default with LaTeX2 base distribution. You can use
+the texdoc command for accessing package documentation.
.. L9
-::
+{{{ Show the "Top Matter" slide }}}
.. R9
We add the title, the author and the date to the document before the
\begin{document} directive. We compile the document to see if the details
-appear in the document, but they donot.
+appear in the document, but they do not.
.. L10
+{{{ Show the "Top Matter ..." slide }}}
.. R10
The command \maketitle adds title, authors name and date to the output file.
-Of these only the date is optional. If date command is specified, then the given
-date is used else today's date is used.
+Of these only the date is optional. The date command can be called with an
+optional parameter. If the optional parameter is not provided, the date of
+compilation of the LaTeX document is used. The parameter, if specified is used
+to override this value.
.. L11
+{{{ Show the "abstract command" slide }}}
.. R11
-The abstract command is used to insert abstract of a document, into the output
-file.Place it in the location, where you want your abstract to present in
-the document. It is available for the document classes article and report, but
-not book
+The abstract command is used to insert the abstract of a document, into the
+output file.Place it in the location, where you want your abstract to present
+in the document. It is available for the document classes article and report,
+but not for the book class.
.. L12
-
+{{{ Show the "Sectioning" slide }}}
.. R12
Titles chapters and sections are used to help the user find his or her way
through your work. The following commands are available in the article class:
section, subsection, subsubsection, paragraph and sub paragraph. The default
-behavior is to use numbered sections. We can use un-numbered sections appending
-* to section command. If you want to split your document without influencing the
-section or chapter numbering use the part command.
-
+behavior is to use numbered sections. We can use un-numbered sections by
+appending * to section command. If you want to split your document without
+influencing the section or chapter numbering, use the part command.
.. L13
+{{{ Show the "Creating Chapters" slide }}}
+
.. R13
Longer documents can use report or book class. We can add a new chapter using
@@ -182,42 +195,42 @@ file shown in the slide we notice that subsections are not numbered.
.. L14
+{{{ Show the "Sectioning and numbering" slide }}}
.. R14
-We can change this behavior with the command setcounter , calling it as shown
-in the slide.
+We can change this behavior with the setcounter command, calling it with
+parameters shown on the slide.
.. L15
+{{{ Show the "Appendix" slide }}}
.. R15
-Appendix can be added to the document using \appendix command. any content after
-\appendix will be added to the appendix. In the report or book class, we have to
-use \chapter to indicate that the chapters are to be numbered as appendices.
+Appendix can be added to the document using \appendix command. Any content
+after the \appendix command will be added to the appendix. In the report or
+book class, we have to use \chapter command to indicate that the chapters are
+to be numbered as appendices.
-similarly for the article class we have to use the section command to indicate
-that sections are to be numbered as appendices.
+Similarly for the article class, we have to use the \section command to indicate
+the sections that are to be numbered as appendices.
.. L16
+{{{ Show the "Table of Contents [TOC]" slide }}}
.. R16
-Lets add a Table of content to the document. The LaTeX command to add a TOC to a
-document is using \tableofcontents command and is placed at the point at which
-the table of content is to be placed.
-
-Now, compile the document and look at the output document. It does not have the table of contents!
-
-We compile our LaTeX file as usual. On the first compilation only the "Contents"
-heading appears in the document, but the actual table does not appear. You will
-need to compile your document once more, for the actual table to appear in your
-document. On the first run, LaTeX has gone through your document and generated
-a temporary file (.toc), with the entries that should go into the table of
-contents. These entries are made, when you compile your document for the second
-time.
+We use the \tableofcontents command to add a TOC to a document is and is placed
+at the point at which the table of content is to be placed. It must be noted
+that \tableofcontents command requires the LaTeX input file to be compiled
+twice. On the first compilation only the "Contents" heading appears in the
+document, but the actual table does not appear. LaTeX has now gone through
+the input document and generated a temporary file (.toc), with the entries that
+should go into the table of contents. When the input document is compiled for
+the second time, these entries are made and the actual table will appear in
+your output document.
Note that any section/block that has been numbered automatically appears in the
table of contents. It is possible to get un-numbered sections, for instance a
@@ -225,22 +238,23 @@ Preface or a Foreword section to appear in the Table of Contents.
.. L17
+{{{ Show the "TOC ..." slide }}}
.. R17
Un-numbered sections are added to TOC using \addcontentsline command.
-For example we use the command
-\addcontentsline{toc}{section}{Intro}
-where "Intro" is the text that you want to appear in the Table of contents.
+For example we use the addcontentsline command called with the parameters
+"{toc}{section}{Intro}", for the text "Intro" to appear in the Table of
+contents.
.. L18
-{{{ Show slide with exercise 1 }}}
+{{{ Show the "Exercise 1" slide }}}
.. R18
-Write a LaTeX script that creates a document of type article, which contains both
-a table of content and an appendix. The table of content should be at the
+Write a LaTeX script that creates a document of type article, which contains
+an appendix and a table of contents. The table of content should be at the
beginning of the document and the appendix at the end.
The book should contain two chapters, with the first chapter containing two
@@ -252,7 +266,7 @@ Please pause the tutorial and check back for a possible solution
.. L19
{{{continue from paused state}}}
-{{{ Show slide with solution to exercise 1 }}}
+{{{ Show the "Excercise 1: Solution" slide }}}
.. R19
@@ -260,24 +274,24 @@ This slide on screen shows a possible valid solution to the given exercise.
.. L20
-{{{ Show summary slide }}}
+{{{ Show the "Summary" slide }}}
.. R20
This brings us to the end of this tutorial. In this tutorial, we have,
-.. 1. Gained an understanding of the basic structure of a LaTeX document, its
-.. various document classes and loading packages that add new features to
-.. the LaTeX system.
-.. #. Created a LaTeX document with a title and an abstract.
-.. #. Created both numbered and non-numbered sections and subsections in a
-.. LaTeX document.
-.. #. Created an appendix in a LaTeX document.
-.. #. Created a table of content in a LaTeX document.
+1. Gained an understanding of the basic structure of a LaTeX document, its
+ various document classes and loading packages that add new features to
+ the LaTeX system.
+#. Created a LaTeX document with a title and an abstract.
+#. Created both numbered and non-numbered sections and subsections in a
+ LaTeX document.
+#. Created an appendix in a LaTeX document.
+#. Created a table of content in a LaTeX document.
.. L21
-{{{Show self assessment questions slide}}}
+{{{ Show the "Self assessment questions" slide }}}
.. R21
@@ -287,28 +301,29 @@ Here are some self assessment questions for you to solve
and produces the intended result, that is to produce a book with two chapters
and an appendix.
- 2. subsection command can be placed at any arbitrary level. If they get numbered
-by default using the appropriate setcounter command and secnumdepth parameter,
-do they automatically appear in the table of content ??
+ 2. subsection command can be placed at any arbitrary level. If they get
+numbered by default using the appropriate setcounter command and secnumdepth
+parameter, do they automatically appear in the table of content ??
.. L22
-{{{Show self assessment questions slide}}}
+{{{ Show the "Solutions" slide }}}
.. R22
And the answers,
-1. Although the given file looks syntactically valid, the output file is not what
-we expected. This is mainly because we are trying to use the section command to
-create sections in the appendix, for a document whose type is given as a book.
+1. Although the given file looks syntactically valid, the output file is not
+what we expected. This is mainly because we are trying to use the section
+command to create sections in the appendix, for a document whose type is given
+as a book.
2. No, the \tableofcontents command normally shows only numbered section
headings, and only down to the level defined by the tocdepth counter.
.. L23
-{{{ Show the thankyou slide }}}
+{{{ Show the "Thank you" slide }}}
.. R23
diff --git a/Latex/Latex4/Latex_Typesetting_Text.tex b/Latex/Latex4/Latex_Typesetting_Text.tex
index ef9ad49..5576521 100644
--- a/Latex/Latex4/Latex_Typesetting_Text.tex
+++ b/Latex/Latex4/Latex_Typesetting_Text.tex
@@ -178,18 +178,24 @@
\begin{frame}[fragile]
\frametitle{Evaluation}
\begin{enumerate}
-\item
-\item
-\item
+\item Which environment is used including a block of code?
+\item What are the basic lists that make environments?
+\item Joe has numerous used labels inside his Latex document. But all the references to label names come up as question marks. What might be the problem?
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Solutions}
\begin{enumerate}
-\item
+\item lstlistings
\vspace{15pt}
-\item
+\item
+\begin{enumerate}
+\item itemize(for unorderd lists)
+\item enumerate(for ordered lists)
+\item description(lists where you want to specify your own label)
+\end{enumerate}
+\item While using labels, the latex document should be compiled twice for the references to show up.
\end{enumerate}
\end{frame}
\begin{frame}
diff --git a/Latex/Latex5/Latex_FTF.tex b/Latex/Latex5/Latex_FTF.tex
index 0ef52ca..c7c50ae 100644
--- a/Latex/Latex5/Latex_FTF.tex
+++ b/Latex/Latex5/Latex_FTF.tex
@@ -214,20 +214,30 @@
\begin{frame}[fragile]
\frametitle{Evaluation}
\begin{enumerate}
-\item
-\item
-\item
+\item Why the figures and tables are called as floats?
+\item What are the input parameters the figure environment take to make it float?
+\item What is the mandatory arguement in tabular environment specification?
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Solutions}
\begin{enumerate}
-\item
\vspace{15pt}
-\item
+\item Figures and tables are called as floats because they float to the nearest location.
+\item The following can be used as parameters to a figure environment to make it float.
+\begin{itemize}
+\item t - Top of the page.
+\item b - Bottom of the page.
+\item p - Separate pages for float
+\item h - Here(the place where command appears)
+\item !- To override Latex internal parameters for good position
+\end{itemize}
+
+\item Alignment of each column
\end{enumerate}
\end{frame}
+
\begin{frame}
\begin{block}{}
diff --git a/Latex/Latex6/latex_math2beamer.tex b/Latex/Latex6/latex_math2beamer.tex
index d8ba927..4b981ee 100644
--- a/Latex/Latex6/latex_math2beamer.tex
+++ b/Latex/Latex6/latex_math2beamer.tex
@@ -76,6 +76,18 @@
\end{itemize}
\end{frame}
+\begin{frame}
+ \frametitle{Pre-requisite}
+ \label{sec-3}
+
+ Spoken tutorial on -
+
+ \begin{itemize}
+ \item Basics of LaTeX and its document structure.
+ \item Typesetting LaTeX text.
+ \end{itemize}
+\end{frame}
+
\begin{frame}[fragile]
\frametitle{\LaTeX\ \&\ Mathematics : An Introduction}
\begin{itemize}
@@ -262,7 +274,7 @@
\end{frame}
\begin{frame}[fragile]
- \frametitle{Greek characters \& Spacing}
+ \frametitle{Greek characters \& Spacing in math environments}
\begin{itemize}
\item Typesetting Greek characters is simple
\item \lstinline+\alpha+, \lstinline+\beta+, \lstinline+\gamma+,
@@ -364,7 +376,7 @@
\end{frame}
\begin{frame}[fragile]
- \frametitle{Beamer \ldots}
+ \frametitle{Beamer: An Example presentation}
\tiny{
\begin{verbatim}
\documentclass{beamer}
@@ -407,7 +419,7 @@
\end{frame}
\begin{frame}[fragile]
- \frametitle{\typ{Evaluation}}
+ \frametitle{\typ{Self assessment questions}}
\label{sec-9}
{\small
\begin{enumerate}
diff --git a/Latex/Latex6/latex_math_biblo_beamer_script.rst b/Latex/Latex6/latex_math_biblo_beamer_script.rst
index b98a750..a1de297 100644
--- a/Latex/Latex6/latex_math_biblo_beamer_script.rst
+++ b/Latex/Latex6/latex_math_biblo_beamer_script.rst
@@ -11,8 +11,7 @@
.. Prerequisites
.. -------------
-.. 1. Introduction to LaTeX.
-.. #. Basics of LaTeX and its document structure.
+.. 1. Basics of LaTeX and its document structure.
.. #. Typesetting LaTeX text.
.. 1. latex_intro
@@ -41,12 +40,12 @@ formulae, bibliography and presentations, using LaTeX.
.. R2
-.. At the end of this tutorial, you will be able to
+At the end of this tutorial, you will be able to
-.. 1. Write simple mathematical formulae in LaTeX.
-.. #. Typeset simple mathematical formulae in LaTeX.
-.. #. Write bibliography for a LaTeX document.
-.. #. Make presentations in LaTeX, using beamer.
+1. Write simple mathematical formulae in LaTeX.
+#. Typeset simple mathematical formulae in LaTeX.
+#. Write bibliography for a LaTeX document.
+#. Make presentations in LaTeX, using beamer.
.. L3
@@ -55,39 +54,44 @@ formulae, bibliography and presentations, using LaTeX.
.. R3
Before beginning this tutorial, it is recommended to complete the tutorials
-given in the prerequisite.
+titled "Basics of LaTeX and its document structure" and "Typesetting LaTeX
+text".
.. L4
+{{{ Show the "LaTeX & Mathematics : An Introduction" slide }}}
+
.. R4
In general, it is advisable to use the AMS-LaTeX bundle to typeset mathematics
in LaTeX. AMS-LaTeX is a collection of packages and classes for mathematical
typesetting.
-We can load amsmath by issuing the \usepackage{amsmath} in the preamble.It must
+We can load amsmath by issuing the \usepackage{amsmath} in the preamble.It must
be noted that amsmath is included in the base distribution of LaTex, in atleast
the most recent versions.
-Math formulae can be embedded in two ways,
- “inline” or “text style ” method, which is done by enclosing the
- required command and text within two dollar signs or between an backslash
- opening bracket and backslash closing bracket.
+Math formulae can be embedded in one of two ways. The first is, “inline” or
+“text style ” method, which is done by enclosing the required commands and
+text within two dollar signs or between an backslash opening bracket and
+backslash closing bracket.
- By enclosing them in a dedicated environment respectively/displayed style.
+The second method is by enclosing them in a dedicated environment respectively,
+this is also called displayed style.
The most common LaTeX environment used to typeset mathematical formulae is
-from equation family.
+from the equation family.
.. L5
+{{{ Show the "Matrices" slide }}}
.. R5
An environment like bmatrix for example, is used to render a matrix. The syntax
-for specifying a matrix is similar to that used in the tabular environment. The
-& symbol is used for demarcating columns and \\ is used to demarcate rows.
+for specifying a matrix is similar to that used for the tabular environment.
+The & symbol is used for demarcating columns and \\ is used to demarcate rows.
There are 5 other matrix environments and each have different/no type of
delimiters. A table showing the data is being shown on the screen. The matrix
@@ -95,10 +99,11 @@ and its allied environments are defined by the amsmath package.
.. L6
+{{{ Show the "Matrices ..." slide }}}
.. R6
-The screen shows the an example, that renders different types of matrices using
+The screen shows the example, that renders different types of matrices using
LaTeX.
It also shows the two ways in which mathmatical formulae can be embedded into
@@ -109,42 +114,46 @@ Please pause the tutorial and go through the example shown on the screen.
.. L7
{{{continue from paused state}}}
+{{{ Show the "Superscripts & Subscripts" slide }}}
.. R7
To typeset superscripts in LaTeX, the carat character is used. The carat
-operator just acts on the next character.
+operator just acts on the immediate next character.
To typeset subscripts in LaTeX, the underscore character is used. The carat
-operator just acts on the next character.
-Multiple characters and ambiguity is resolved by grouping them using opening
-and closing curly brackets.
+operator just acts on the immediate next character.
+Multi character grouping and ambiguity is resolved by grouping them using
+opening and closing curly brackets.
.. L8
+{{{ Show the "Summation & integration" slide }}}
.. R8
-To typeset the summation symbol, use the sum command. Similarly, the integral
-symbol is obtained using the int command. The upper and lower limits, for both
-the sum and int command are specified using the carat and underscore characters
-, respectively.
+To typeset the summation symbol, we use the sum command. Similarly, the
+integral symbol is obtained using the int command.
+The upper and lower limits, for both the sum and int command are specified
+using the carat and underscore characters, respectively.
.. L9
+{{{ Show the "displayed math" slide }}}
.. R9
-We now move onto using the equation environment to render mathematical formulae,
-which are numbered. Another environment called equation star environment renders
+We now move onto using the equation environment to render mathematical formulae
+which are numbered. Another allied environment called equation star renders
unnumbered equations.
-Backslash and opening square bracket and its counterpart the backslash
-closing square bracket is a short hand for equation star environment.
+Backslash opening square bracket and its counterpart the backslash closing
+square bracket is a short hand for equation star environment.
There is no similar shorthand for equation environment (i.e, the numbered
equation environment).
.. L10
+{{{ Show the "Groups of equations" slide }}}
.. R10
@@ -162,18 +171,22 @@ ampersand symbol.
.. L11
+{{{ Show the "Fractions & Surds" slide }}}
.. R11
-To typeset fractions use the frac command. To typeset surds, we use the sqrt
-command with the optional paramter of [n].
+To typeset fractions we use the frac command and to typeset surds, we use the
+sqrt command with the optional paramter of [n]. The optional parameter for the
+sqrt command is used to render roots not equal to 2.
-Please note that there is a special command dfrac, that can be used to render
-fractions as if its placed in display mode and is meant to be used even in
+Please note that there is a special command dfrac that can be used to render
+fractions, as if its placed in display mode and is meant to be used even in
inline mode.
.. L12
+{{{ Show the "Greek characters & Spacing in math environments" slide }}}
+
.. R12
Inserting Greek letters into LaTeX is simple. we use commands named alpha, beta,
@@ -187,6 +200,8 @@ to specify the spacing required.
.. L13
+{{{ Show the "Bibliography" slide }}}
+
.. R13
Writing bibliographies in LaTeX using the thebibliography environment is pretty
@@ -197,24 +212,25 @@ Each entry of the bibliography begins with the command bibitem. It takes an
optional parameter called label and a name for the entry.The label option
replaces the numbers from the auto enumeration with the labels given.
-The to cite the bibliography item within the document, we use the cite command,
+Then to cite the bibliography item within the document we use the cite command,
containing name as a parameter.
We start the bibliography environment with a numerical parameter. This defines
how much space is to be reserved for all the labels.
If for example, we have less than 10 items in the Bibliography we would begin
-the bibliography environment with an parameter, whose value is 9.
+the bibliography environment with a parameter, whose value is 9.
.. L14
{{{continue from paused state}}}
+{{{ Show the "Beamer" slide }}}
.. R14
It is highly recommended to use beamer to create presentations, especially when
-you are using LaTeX typesetting your report. This is mainly because, it would be
-really easy to reuse the LaTeX that you have used for the report/document for
-the presentation as well.
+you are using LaTeX typesetting your report. This is mainly because it would be
+really easy to reuse the LaTeX content that you have already used for the
+report/document for, the presentation as well.
We begin a beamer document with the documentclass being set to beamer.
@@ -223,6 +239,8 @@ that content is divided into slides.
.. L15
+{{{ Show the "Beamer ..." slide }}}
+
.. R15
The usetheme command is used to specify the theme to be used for the current
@@ -237,7 +255,8 @@ We must also note that the title page of the presentation can be set like any
other LaTeX document.
If we have to use fragile environemts like verbatim or lstlisting inside a
-slide, then we have to pass an additional parameter to begin frame, fragile.
+slide, then we have to pass an additional parameter to begin frame, namely
+fragile.
Overlays and simple animation can be achieved using the pause command.
@@ -246,6 +265,8 @@ this marvelous utility.
.. L16
+{{{ Show the "Beamer: An Example presentation" slide }}}
+
.. R16
This screen shows a very basic LaTeX presentation done using beamer. We use the
@@ -257,20 +278,20 @@ example shown on the screen.
.. L17
{{{continue from paused state}}}
-{{{ Show summary slide }}}
+{{{ Show the "Summary" slide }}}
.. R17
This brings us to the end of this tutorial. In this tutorial, we have,
-.. 1. Written simple mathematical formulae in LaTeX.
-.. #. Typeset simple mathematical formulae in LaTeX.
-.. #. Written bibliography for a LaTeX document.
-.. #. Made a sample presentations in LaTeX, using beamer.
+1. Written simple mathematical formulae in LaTeX.
+#. Typeset simple mathematical formulae in LaTeX.
+#. Written bibliography for a LaTeX document.
+#. Made a sample presentations in LaTeX, using beamer.
.. L18
-{{{Show self assessment questions slide}}}
+{{{ Show the "Self assessment questions" slide }}}
.. R18
@@ -284,7 +305,7 @@ remove the line.
.. L19
-{{{Show self assessment questions slide}}}
+{{{ Show the "Solutions" slide }}}
.. R19
@@ -300,7 +321,7 @@ package.
.. L20
-{{{ Show the thankyou slide }}}
+{{{ Show the "Thank you" slide }}}
.. R20
diff --git a/TDD/getting_started_with_tdd/tdd1.tex b/TDD/getting_started_with_tdd/tdd1.tex
index f056ce5..042c5c4 100644
--- a/TDD/getting_started_with_tdd/tdd1.tex
+++ b/TDD/getting_started_with_tdd/tdd1.tex
@@ -254,7 +254,7 @@ def fibonacci(n):
\begin{itemize}
-\item Undestand the basic steps involved in Test driven development.
+\item Understand the basic steps involved in Test driven development.
\item Design a TDD approach for a given \texttt{fibonacci} function.
\end{itemize}
@@ -267,20 +267,75 @@ def fibonacci(n):
\begin{enumerate}
-\item ?
+\item Design a TDD approach for a \texttt{factorial} function.
\vspace{8pt}
-\item ?
+\item Design a TDD approach for an \texttt{armstrong} function.
\end{enumerate}
\end{frame}
-\begin{frame}
+
+\begin{frame}[fragile]
\frametitle{Solutions}
\label{sec-10}
+\begin{enumerate}
+\vspace{15pt}
+\item
+{\tiny
+\begin{lstlisting}
+def factorial(n):
+ if n < 0 :
+ return None;
+ if n == 1:
+ return 1
+ else:
+ return n * factorial (n - 1)
+if __name__ == '__main__':
+ f = factorial(3)
+ if f != 6 :
+ print 'Test Failed...'
+ exit (1)
+ f = factorial(-5)
+ if f != None :
+ print 'Test Failed...'
+ exit (1)
+ print 'All tests passed...'
+\end{lstlisting}
+}
+\end{enumerate}
+\end{frame}
-
+\begin{frame}[fragile]
+\frametitle{Solutions}
+\label{sec-10}
\begin{enumerate}
-\item
\vspace{15pt}
-\item
+\item
+{\tiny
+\begin{lstlisting}
+def armstrong(n):
+ sum = 0
+ temp = 0
+ remainder = 0
+ temp = n
+ while temp > 0 :
+ remainder = temp % 10
+ sum = sum + remainder * remainder * remainder
+ temp = temp / 10
+ if n == sum:
+ return True
+ else:
+ return False
+if __name__ == '__main__':
+ is_armstrong = armstrong(0)
+ if is_armstrong != True:
+ print "this is not armstrong"
+ exit(1)
+ is_armstrong = armstrong(371)
+ if is_armstrong == True:
+ print "this is armstrong"
+ exit(1)
+ print 'All tests passed...'
+\end{lstlisting}
+}
\end{enumerate}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/TDD/getting_started_with_tdd/tdd1_script.rst b/TDD/getting_started_with_tdd/tdd1_script.rst
index 9da1613..88c1227 100755
--- a/TDD/getting_started_with_tdd/tdd1_script.rst
+++ b/TDD/getting_started_with_tdd/tdd1_script.rst
@@ -175,9 +175,9 @@ This brings us to the end of the tutorial.In this tutorial,
.. R14
Here are some self assessment questions for you to solve
- 1.
- 2.
+ 1. Design a TDD approach for a factorial function.
+ 2. Design a TDD approach for an armstrong function.
.. L14
@@ -186,9 +186,9 @@ Here are some self assessment questions for you to solve
.. R15
And the answers are,
- 1.
+ 1. {{{ show answer slide-1 }}}
- 2.
+ 2. {{{ show answer slide-2 }}}
.. L15
diff --git a/TDD/using_python_framework_for_tdd/tdd2.tex b/TDD/using_python_framework_for_tdd/tdd2.tex
index 561f4a2..1aa409f 100644
--- a/TDD/using_python_framework_for_tdd/tdd2.tex
+++ b/TDD/using_python_framework_for_tdd/tdd2.tex
@@ -294,7 +294,7 @@ if __name__ == '__main__':
\item Allows us to pick and choose which tests to run
\item Helps output the test-results and aggregate them in various
formats
- \item Not part of the Python distribution itself
+ \item Not part of the Python distribution itself \footnote{$http://packages.python.org/distribute/easy$\textunderscore$install.html$}
\begin{lstlisting}
$ easy_install nose
\end{lstlisting} %$
@@ -328,9 +328,19 @@ $ nosetests
\begin{enumerate}
-\item ?
+\item An underlying assumption of TDD is that you have a testing framework available to you.\\
+ \begin{enumerate}
+ \item True
+ \item False
+ \end{enumerate}
\vspace{8pt}
-\item ?
+\item Test-Driven Development is an advanced technique of using automated \_\_\_\_\_\_\_\_\_ tests to drive the design of software and force deoupling of dependecies.\\
+ \begin{enumerate}
+ \item Incremental
+ \item Unit
+ \item Programming
+ \item Object
+ \end{enumerate}
\end{enumerate}
\end{frame}
\begin{frame}
@@ -339,9 +349,9 @@ $ nosetests
\begin{enumerate}
-\item
+\item True
\vspace{15pt}
-\item
+\item Unit
\end{enumerate}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/TDD/using_python_framework_for_tdd/tdd2_script.rst b/TDD/using_python_framework_for_tdd/tdd2_script.rst
index d90c5eb..b775b01 100755
--- a/TDD/using_python_framework_for_tdd/tdd2_script.rst
+++ b/TDD/using_python_framework_for_tdd/tdd2_script.rst
@@ -155,7 +155,7 @@ tests into collections and improves reporting.
.. L11
-{{{ Switch to slide-11, Unittest }}}
+{{{ Switch to slide-11(stay for 5 seconds) and switch to slide 12 }}}
.. R12
@@ -170,7 +170,7 @@ files too.
.. L12
-{{{ Show slide13, unittesting fibonacci.py }}}
+{{{ Show slide13(stay for 3 seconds) and switch to slide14 }}}
.. R13
@@ -183,10 +183,31 @@ and closes ``fibonacci_testcases.dat`` file.
.. L13
-{{{ Show slide13(stay for 3 seconds) and switch to slide14 }}}
+{{{ Show slide 15, test_fibonacci.py }}}
+
+
+.. R14
+
+Individual unittests and doctests may not be fiseable to use when
+multiple files are to be tested. For this purpose we have a python
+utility called Nose. Nose test aggregates unittests and doctests. Nose
+test utility can be installed by using the following command
+``$ easy_install nose``. It can be run by issuing the command ``$ nosetests``
+in the root level of the directory containing all your python files to be tested.
+
+.. L14
+
+{{{ Show slide15(for 5 seconds), nose tests }}}
+
+{{{ Follow the commands in terminal. }}}
+::
+
+ $ easy_install nose
+ $ nosetests
+
+.. R15
-.. R23
This brings us to the end of the tutorial.In this tutorial,
we have learnt to,
@@ -195,38 +216,38 @@ we have learnt to,
#. Design a Test driven approach for a given ``fibonacci`` function.
-.. L23
+.. L15
-{{{ switch to slide-13,Summary }}}
+{{{ switch to slide-17,Summary }}}
-.. R14
+.. R16
Here are some self assessment questions for you to solve
1.
2.
-.. L14
+.. L16
-{{{ switch to slide-14, Evaluation }}}
+{{{ switch to slide-18, Evaluation }}}
-.. R15
+.. R17
And the answers are,
1.
2.
-.. L15
+.. L17
-{{{ switch to slide-15 ,Solutions}}}
+{{{ switch to slide-19 ,Solutions}}}
-.. R16
+.. R18
Hope you have enjoyed this tutorial and found it useful.
Thank you!
-.. L16
+.. L18
-{{{ Switch to slide-16, Thank you}}}
+{{{ Switch to slide-20, Thank you}}}
diff --git a/Version_Control/images/fossee-logo.png b/Version_Control/images/fossee-logo.png
deleted file mode 100644
index 49d1797..0000000
--- a/Version_Control/images/fossee-logo.png
+++ /dev/null
Binary files differ
diff --git a/Version_Control/images/iitb-logo.jpg b/Version_Control/images/iitb-logo.jpg
deleted file mode 100644
index 2a63fae..0000000
--- a/Version_Control/images/iitb-logo.jpg
+++ /dev/null
Binary files differ
diff --git a/Version_Control/images/folder.png b/Version_Control/vcs1/folder.png
index 42d01a2..42d01a2 100644
--- a/Version_Control/images/folder.png
+++ b/Version_Control/vcs1/folder.png
Binary files differ
diff --git a/Version_Control/images/mercurial_logo.png b/Version_Control/vcs1/mercurial_logo.png
index 4cd736e..4cd736e 100644
--- a/Version_Control/images/mercurial_logo.png
+++ b/Version_Control/vcs1/mercurial_logo.png
Binary files differ
diff --git a/Version_Control/vcs1/vcs1.rst b/Version_Control/vcs1/vcs1.rst
index 306dfda..11a61f5 100644
--- a/Version_Control/vcs1/vcs1.rst
+++ b/Version_Control/vcs1/vcs1.rst
@@ -1,7 +1,3 @@
----------------------------------
-Version Control using Hg Part I
----------------------------------
-
.. Prerequisites
.. -------------
@@ -9,21 +5,20 @@ Version Control using Hg Part I
.. Author : Primal Pappachan
Internal Reviewer : Kiran Isukapatla
- Date: Jan 27, 2012
+ Date: May 10 2012
-----------------------
-Spoken Tutorial Script
-----------------------
+--------
+Script
+--------
.. L1
-{{{ Show the first slide containing title, name of the production team along
+{{{ Show the first slide containing title, name of the production team along
with the logo of MHRD}}}
.. R1
-Hello friends and welcome to the first part of tutorial on 'Version Control
-using Hg'
+Hello friends and welcome to the tutorial on 'Version Control with Hg'
.. L2
@@ -33,214 +28,252 @@ using Hg'
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
+1. Understand what is Version Control.
-.. R3
+#. Identify the need for using Version Control.
-First, let's understand what 'Version Control' is.
+#. Install Mercurial.
.. L3
{{{Show the slide 'what is version control'}}}
-.. R4
-
-'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."
+.. R3
-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.
+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.
+
.. L4
{{{Show the slide 'Home-brewed'}}}
-.. R5
-
-Let's look at an example of home-brewed Version Control system
+.. R4
-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.
+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.
.. L5
+{{{Show the next slide 'Home-brewed'}}}
+
+.. R5
+
+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.
+
+.. L6
+
{{{Show the slide 'Problems'}}}
.. R6
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
+1. Name and changes made are not related or linked.
-.. L6
+#. Can't track sequence of changes made to a file.
-{{{Show the slide 'The need for Version Control'}}}
+#. Does not scale.
-.. R7
-
-Having seen the problems of a home brewed setup, let's now move onto
-identifying the needs for a 'Version Control System'.
+To overcome this problems there are more general purpose tools which can
+do this task in an organized way.
- 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
.. L7
{{{Show the slide 'The need for Version Control'}}}
-.. R8
+.. R7
+
+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.
+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. This helps to track what changes were made at what point of time, when
-and by whom.
- #. Allows for effective collaboration on a project, as everything is shared.
- #. Helps to identify which additions have broken down a project and thus aids
- in efficient tracking down of the bugs.
- #. It is good for a one man show as it is for a big group of people working on
- a project.
+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.
-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.
.. L8
{{{Show the slide 'How does it work? - Analogy}}}
-.. R9
+.. R8
-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
+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.
.. L9
{{{Show the slide 'Mercurial or hg'}}}
-.. R10
+.. R9
-Some of the Version Control tools available and used widely are:
+Some of the Version Control tools available and used widely are: cvs, svn,
+git and so on.
- 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.
-.. R11
+Mercurial or hg is:
-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.
+1. Easy to learn and use
+
+#. Lightweight
-Let's now get into Installation. For Linux distributions, Ubuntu and Debian
-type the following in command line terminal
+#. Scales excellently
-.. L10
+#. Written in Python
-sudo apt-get install mercurial
+.. L10
-.. R12
+{{{Show the slide 'Installation'}}}
-For Windows,
+.. R10
-.. L11
+Let's now get into Installation
-http://mercurial.selenic.com/downloads/
+.. L10
-http://hgbook.red-bean.com/read/a-tour-of-mercurial-the-basics.html
+{{{Switch to terminal}}}
+::
+
+ $sudo apt-get install mercurial
-.. R 13
+.. R10
-For any other Operating system, please refer the hg book for installation
-instruction -
+Type sudo apt-get install mercurial
-Type 'hg' which lists out all the commands
+Type hg
.. L12
+::
-$hg
+ $hg
-.. R14
+.. R12
-and 'hg version' which gives the version number.
+It will give you the list of basic commands.
.. L13
+::
+
+ $hg version
+
+.. R13
-$hg version
+and 'hg version' gives the version number of mercurial you are presently using.
.. L14
{{{Show the 'summary' slide'}}}
-.. R15
+.. R14
This brings us to the end of the tutorial. In this tutorial, we have
-seen,
- 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
+learnt:
+
+1. What is Version Control.
+
+#. Identify the need for using Version Control
+
+#. Install Mercurial.
.. L15
{{{Show self assessment questions slide}}}
-.. R16
+.. R15
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?
+1. Is Mercurial a Centralized VCS or Distributed Version Control System?
+
+#. How can you retrive the version of Mercurial installed?
+
.. L16
{{{Show the solutions slide to self assessment questions }}}
-.. R17
+.. R16
And the answers,
- 1. Mercurial is a Centralized Version Control system. To read more go here,
- http://en.wikipedia.org/wiki/Distributed_revision_control
- #. $hg version -
- #. $hg help command
+1. Mercurial is a Distributed Version Control system.
+#. hg version
.. L17
-{{{Show the thank you slide}}}
+{{{ Show the SDES & FOSSEE slide }}}
+
+.. R17
+
+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.
+
+.. L18
+
+{{{ Show the ``About the Spoken Tutorial Project'' slide }}}
.. R18
-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'
+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.
+
+.. L19
+
+{{{ Show the `` Spoken Tutorial Workshops'' slide }}}
+
+.. R19
+
+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
+
+.. L20
+
+{{{ Show the ``Acknowledgements'' slide }}}
+
+.. R20
+
+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.
+
+.. L21
+
+{{{Show the thank you slide}}}
+
+.. R21
+Hope you have enjoyed this tutorial and found it useful.
Thank you
diff --git a/Version_Control/vcs1/vcs1_2col.rst b/Version_Control/vcs1/vcs1_2col.rst
new file mode 100644
index 0000000..8e88b2b
--- /dev/null
+++ b/Version_Control/vcs1/vcs1_2col.rst
@@ -0,0 +1,152 @@
+.. 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 |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
diff --git a/Version_Control/vcs1/vcs1_slide.tex b/Version_Control/vcs1/vcs1_slide.tex
new file mode 100644
index 0000000..24f8ee4
--- /dev/null
+++ b/Version_Control/vcs1/vcs1_slide.tex
@@ -0,0 +1,270 @@
+\documentclass[17pt,compress]{beamer}
+\usepackage{beamerthemesplit}
+\mode<presentation>
+{
+ \usetheme{Warsaw}
+ \useoutertheme{infolines}
+ \setbeamercovered{transparent}
+ \setbeamertemplate{navigation symbols}{}
+}
+% Taken from Fernando's slides.
+\usepackage{ae,aecompl}
+\usepackage[scaled=.95]{helvet}
+
+\usepackage[english]{babel}
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+
+% change the alerted colour to LimeGreen
+\definecolor{LimeGreen}{RGB}{50,205,50}
+\setbeamercolor{structure}{fg=LimeGreen}
+\author[FOSSEE]{}
+\institute[IIT Bombay]{}
+\date[]{}
+% \setbeamercovered{transparent}
+
+% theme split
+\usepackage{verbatim}
+\newenvironment{colorverbatim}[1][]%
+{%
+\color{blue}
+\verbatim
+}%
+{%
+\endverbatim
+}%
+
+\usepackage{mathpazo,courier,euler}
+\usepackage{listings}
+\lstset{language=sh,
+ basicstyle=\ttfamily\bfseries,
+ showstringspaces=false,
+ keywordstyle=\color{black}\bfseries}
+
+% logo
+\logo{\includegraphics[height=1.30 cm]{3t-logo.pdf}}
+\logo{\includegraphics[height=1.30 cm]{fossee-logo.pdf}
+
+\hspace{7.5cm}
+\includegraphics[scale=0.99]{../images/fossee-logo.pdf}\\
+\hspace{281pt}
+\includegraphics[scale=0.80]{../images/3t-logo.pdf}}
+
+%%%from primal's doc
+\newcommand{\typ}[1]{\lstinline{#1}}
+\newcommand{\inctime}[1]{\addtocounter{time}{#1}{\tiny \thetime\ m}}
+%%%
+
+\begin{document}
+
+\sffamily \bfseries
+\title
+[Version Control with hg]
+{Version Control with hg}
+\author
+[FOSSEE]
+{\small Talk to a Teacher\\{\color{blue}\url{http://spoken-tutorial.org}}\\\vspace{0.25cm}National Mission on Education
+ through ICT\\{\color{blue}\url{ http://sakshat.ac.in}} \\ [1.65cm]
+ Contributed by FOSSEE Team \\IIT Bombay \\[0.3cm]
+}
+
+% slide 1
+\begin{frame}
+ \titlepage
+\end{frame}
+
+\begin{frame}
+\frametitle{Objectives}
+\label{sec-2}
+
+At the end of this tutorial, you will be able to,
+\begin{itemize}
+ \item Understand what is Version Control
+ \item Identify the need for using Version Control
+ \item Install Mercurial
+\end{itemize}
+\end{frame}
+
+% Introduction to course-need of version control, history, options available.
+\section{Introduction}
+
+\begin{frame}[fragile]
+ \begin{block}{What is Version Control?}
+
+ A way to track changes made to files over time, by keeping copies
+ of files as we change them.
+
+ \end{block}
+\end{frame}
+
+%% Home made version control system?
+\begin{frame}[fragile]
+ \frametitle{Home-brewed}
+ \begin{center}
+ An example of a \typ{home-brew} Version Control system
+ \includegraphics[height=1.7in,width=4in]{folder.png}
+ %%a screen-shot of folder with all crazy names.
+ \end{center}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Home-brewed contd.}
+ \begin{itemize}
+ \item Listing the files in the folder:
+ \end{itemize}
+ \begin{lstlisting}
+ $ ls
+ a.out id1.txt id2.txt string.txt
+ identifier.cpp id.txt pda1.cpp
+ pda2.cpp pda.cpp pda.txt
+ \end{lstlisting} %%$
+ %% listing out the crazy names
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Problems}
+ \begin{block}{}
+ \begin{itemize}
+ \item Name and changes made are not related or linked.
+ \item Can't track sequence of changes made to a file.
+ \item Does not scale.
+ \end{itemize}
+ \end{block}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{The need for Version Control}
+ \begin{itemize}
+ \item Tracking the history and evolution of a project
+ \item To collaborate effectively on a project
+ \item To efficiently track down bugs and pin-point the changes that
+ caused it
+ \item Useful for an individual and a group of people
+ \end{itemize}
+\end{frame}
+
+%% Introduction to how logs are managed in VCS.
+%% A analogy in logs and day-to-day life?
+\begin{frame}[fragile]
+ \frametitle{How does it work? --- Analogy}
+ It is similar to playing an Video game.
+ \begin{itemize}
+ \item We play games in stages
+ \item Once we finish a stage -- \alert{we SAVE}
+ \item We continue playing
+ \item But, if necessary, we could choose from one of the saved
+ states and start from there
+ %%\item We could alter the course of the game
+ \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Mercurial or \typ{hg}}
+ \centering
+ \includegraphics[height=.70in,interpolate=true]{mercurial_logo}
+ \begin{itemize}
+ \item Easy to learn and use
+ \item Lightweight
+ \item Scales excellently
+ \item Written in Python
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}
+ \frametitle{Installation}
+ \begin{itemize}
+ \item \$ sudo apt-get install mercurial
+ \item \$ hg
+ \item \$ hg version
+ \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Summary...}
+ In this tutorial, we have learnt about,
+ \begin{itemize}
+ \item What is Version Control
+ \item The need for using Version Control
+ \item Installing Mercurial or hg
+ \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Evaluation}
+ \begin{enumerate}
+ \item Is Mercurial a Centralized VCS or Distributed VCS?
+ \item How can you retrive the version of Mercurial installed?
+ \end{enumerate}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Solutions}
+ \begin{enumerate}
+ \item Mercurial is a Distributed Version Control system.
+ \item hg version
+ \end{enumerate}
+\end{frame}
+
+%%% 5 concluding slides %%%
+\begin{frame}
+\frametitle{SDES \& FOSSEE}
+\begin{center}
+\begin{itemize}
+\item \small{SDES}\\
+\small{\color{LimeGreen}Software Development techniques for Engineers and Scientists} \\
+\scriptsize An initiative by FOSSEE. \\
+\vspace{3pt}
+\scriptsize For more information on SDES, please visit {\color{blue}\url{http://fossee.in/sdes}}\\
+\vspace{12pt}
+\item \small{FOSSEE}\\
+\small {\color{LimeGreen}Free and Open-source Software for \\Science and Engineering Education} \\
+\scriptsize Based at IIT Bombay, Funded by MHRD.\\
+\vspace{3pt}
+\scriptsize Part of National Mission on Education through ICT (NME-ICT). \\
+\end{itemize}
+\end{center}
+\end{frame}
+
+\begin{frame}
+\frametitle{About the Spoken Tutorial Project}
+\begin{itemize}
+\item Watch the video available at {\color{blue}\url{http://spoken-tutorial.org /What\_is\_a\_Spoken\_Tutorial}}
+\item It summarises the Spoken Tutorial project
+\item If you do not have good bandwidth, you can download and watch it
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{Spoken Tutorial Workshops}The Spoken Tutorial Project Team
+\begin{itemize}
+\item Conducts workshops using spoken tutorials
+\item Gives certificates to those who pass an online test
+\item For more details, please write to \\ \hspace {0.5cm}{\color{blue}contact@spoken-tutorial.org}
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{Acknowledgements}
+\begin{itemize}
+\item Spoken Tutorial Project is a part of the Talk to a Teacher project
+\item It is supported by the National Mission on Education through ICT, MHRD, Government of India
+\item More information on this Mission is available at: \\{\color{blue}\url{http://spoken-tutorial.org/NMEICT-Intro}}
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+ \begin{block}{}
+ \begin{center}
+ {\Large THANK YOU!}
+ \end{center}
+ \end{block}
+\begin{block}{}
+ \begin{center}
+ For more Information, visit our website\\
+ {\color{blue}\url{http://fossee.in/}}
+ \end{center}
+ \end{block}
+\end{frame}
+
+\end{document}
diff --git a/Version_Control/vcs1/vcslide1.tex b/Version_Control/vcs1/vcslide1.tex
deleted file mode 100644
index e2bca9c..0000000
--- a/Version_Control/vcs1/vcslide1.tex
+++ /dev/null
@@ -1,205 +0,0 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Version Control Systems
-%
-% Author: FOSSEE
-% Copyright (c) 2012, FOSSEE, IIT Bombay
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\documentclass[14pt,compress]{beamer}
-
-\mode<presentation>
-{
- \usetheme{Warsaw}
- \useoutertheme{infolines}
- \setbeamercovered{transparent}
-}
-
-\usepackage[english]{babel}
-\usepackage[latin1]{inputenc}
-%\usepackage{times}
-\usepackage[T1]{fontenc}
-
-% Taken from Fernando's slides.
-\usepackage{ae,aecompl}
-\usepackage{mathpazo,courier,euler}
-\usepackage[scaled=.95]{helvet}
-
-\definecolor{darkgreen}{rgb}{0,0.5,0}
-
-\usepackage{listings}
-\lstset{language=bash,
- basicstyle=\ttfamily\bfseries,
- commentstyle=\color{red}\itshape,
- stringstyle=\color{darkgreen},
- showstringspaces=false,
- keywordstyle=\color{blue}\bfseries}
-
-\newcommand{\inctime}[1]{\addtocounter{time}{#1}{\tiny \thetime\ m}}
-
-\newcommand{\typ}[1]{\lstinline{#1}}
-
-\newcommand{\kwrd}[1]{ \texttt{\textbf{\color{blue}{#1}}} }
-
-\setbeamercolor{emphbar}{bg=blue!20, fg=black}
-\newcommand{\emphbar}[1]
-
-\begin{document}
-
-\begin{frame}
-\begin{center}
-\vspace{12pt}
-\textcolor{blue}{\huge Version Control with Hg}
-\end{center}
-\vspace{18pt}
-\begin{center}
-\vspace{10pt}
-\includegraphics[scale=0.95]{../images/fossee-logo.png}\\
-\vspace{5pt}
-\scriptsize Developed by FOSSEE Team, IIT-Bombay. \\
-\scriptsize Funded by National Mission on Education through ICT\\
-\scriptsize MHRD,Govt. of India\\
-\includegraphics[scale=0.15]{../images/iitb-logo.jpg}\\
-\end{center}
-\end{frame}
-
-\begin{frame}
- \frametitle{Objectives}
- At the end of this tutorial, you will be able to:
- \begin{itemize}
- \item Understand what is Version Control
- \item Identify the need for using Version Control
- \item Install Mercurial and intialize a repository
- \end{itemize}
-\end{frame}
-
-%% There are some %$ used just to minimise the effect of $ sign used
-%% in lstlisting. In emacs it looks dirty.
-
-% Introduction to course-need of version control, history, options available.
-\section{Introduction}
-
-\begin{frame}
- \frametitle{What is Version Control?}
- \begin{block}{}
- A way to track changes made to files over time, by keeping copies
- of files as we change them.
- \end{block}
-\end{frame}
-
-%% Home made version control system?
-\begin{frame}[fragile]
- \frametitle{Home-brewed}
- \begin{center}
- An example of a \typ{home-brew} Version Control system
- \includegraphics[height=1.8in,width=4.2in]{../images/folder.png}
- \end{center}
- \begin{lstlisting}
-$ ls
-a.out id1.txt id2.txt identifier.cpp id.txt lex pda1.cpp pda2.cpp pda.cpp pda.txt string.txt
- \end{lstlisting} %%$
- %%a screen-shot of folder with all crazy names.
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Problems}
- \begin{block}{}
- \begin{itemize}
- \item Name and changes made are not related or linked.
- \item Can't track sequence of changes made to a file.
- \item Does not scale.
- \end{itemize}
- \end{block}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{The need for Version Control}
- \begin{itemize}
- \item \alert{To err is Human} \ldots
- \item Tracking the history and evolution of a project
- \item To collaborate effectively on a project
- \item To efficiently track down bugs and pin-point the changes that
- caused it
- \end{itemize}
-\end{frame}
-
-%% Introduction to how logs are managed in VCS.
-%% A analogy in logs and day-to-day life?
-\begin{frame}[fragile]
- \frametitle{How does it work? --- Analogy}
- It is, in some ways, similar to playing an Video game.
- \begin{itemize}
- \item We play games in stages
- \item Once we finish a stage or a task -- \alert{we SAVE}
- \item We continue playing
- \item But, if necessary, we could choose from one of the saved
- states and start from there
- \item We could alter the course of the game
- \end{itemize}
-\end{frame}
-
-
-\begin{frame}
- \frametitle{Mercurial or \typ{hg}}
- \begin{center}
- \includegraphics[height=.75in,interpolate=true]{../images/mercurial_logo}
- \end{center}
- \begin{itemize}
- \item Easy to learn and use
- \item Lightweight
- \item Scales excellently
- \item Written in Python
- \end{itemize}
-\end{frame}
-
-\begin{frame}
- \frametitle{Installation}
- \begin{itemize}
- \item \typ{sudo apt-get install mercurial}
- \item TortoiseHg
- \item \typ{\$ hg}
- \item \typ{\$ hg version}
- \end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Summary...}
-\begin{itemize}
-\item The motivation to use version control
-\item An analogy of version control with playing a video game
-\item How to check if mercurial is installed, and it's version using hg version
-\end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Evaluation}
-\begin{enumerate}
-\item Is Mercurial a Centralized VCS or Distributed VCS? Justify your reasoning.
-\item How can you verify whether Mercurial has been installed properly?
-\item What is the command for accessing built-in help system of Mercurial?
-\end{enumerate}
-\end{frame}
-
-\begin{frame}
-\frametitle{Solutions}
-\begin{enumerate}
-\item Mercurial is a Distributed Version Control system.
-\item hg version
-\item hg help command
-\end{enumerate}
-\end{frame}
-\begin{frame}
-
-\begin{block}{}
- \begin{center}
- \textcolor{blue}{\Large THANK YOU!}
- \end{center}
- \end{block}
-\begin{block}{}
- \begin{center}
- For more Information, visit our website\\
- \url{http://fossee.in/}
- \end{center}
- \end{block}
-\end{frame}
-
-\end{document}
diff --git a/Version_Control/vcs2/vcs2.rst b/Version_Control/vcs2/vcs2.rst
index c69a30b..5e4b9d0 100644
--- a/Version_Control/vcs2/vcs2.rst
+++ b/Version_Control/vcs2/vcs2.rst
@@ -17,17 +17,17 @@ Spoken Tutorial Script
.. L1
-{{{ Show the first slide containing title, name of the production team along
-with the logo of MHRD}}}
+*{{{ Show the first slide containing title, name of the production team along
+with the logo of MHRD}}}*
.. R1
-Hello friends and welcome to the second part of tutorial on 'Version Control
-using Hg'
+Hello friends and welcome to the tutorial on 'Version Control
+using Mercurial: Let there a Repo!'
.. L2
-{{{Show the slide 'Prerequisite'}}}
+*{{{Show the slide 'Prerequisite'}}}*
.. R2
@@ -36,21 +36,22 @@ continue on this tutorial:
.. L3
-{{{Show the slide 'Objectives'}}}
+*{{{Show the slide 'Objectives'}}}*
.. R3
-At the end of this tutorial you will be able to
- 1. initialize a new repository,
+At the end of this tutorial you will be able to do the following to a repository
+
+ 1. initialize it,
#. obtain the status of a repository,
- #. add new files to a repository,
- #. take snapshots of a repository,
- #. view the history of a repository,
- #. and set your user information for hg
+ #. add new files to it,
+ #. take snapshots,
+ #. view the history,
+ #. and also set your user information for hg
.. L4
-{{{Show the slide for 'We need a repo!'}}}
+*{{{Show the slide for 'We need a repo!'}}}*
.. R4
@@ -64,22 +65,30 @@ to the files.
.. L5
-{{{Show the slide 'Initializing a Repo'}}}
+*{{{Show the slide 'Initializing a Repo'}}}*
.. R5
-A repository can either be started using an init command or an existing
-repository could be cloned. Let us look at creating our own repository, now. We
-can look at obtaining already existing repositories, at a later stage.
+A fresh repository can either be started using an init command or an existing
+repository could be cloned. It adds a .hg directory to our working directory.
+
+Let us look at creating our own repository, now. We can look at obtaining
+already existing repositories, at a later stage.
+
+Switch to your terminal
Let's say we have a folder called book, which has all the chapters of a book as
text files. Let us convert that folder, into a hg repository.
.. L6
-$ cd book/
-$ ls -a
-. .. chapter1.txt chapter2.txt chapter3.txt
+*{{{Switch to terminal}}}
+
+``$ cd book/``
+
+``$ ls -a``
+
+``. .. chapter1.txt chapter2.txt chapter3.txt``
.. R6
@@ -88,81 +97,100 @@ repository using the hg init command
.. L7
-$ hg init
-$ ls -a
-. .. .hg chapter1.txt chapter2.txt chapter3.txt
+``$ hg init``
+
+``$ ls -a``
+
+``. .. .hg chapter1.txt chapter2.txt chapter3.txt``
.. R7
The .hg directory indicates that our book directory is now a hg repository.
+
Mercurial keeps all the history of the changes made, and a few other config
files, etc. in this directory. The directory, book is called our working
directory.
.. L8
-{{{Show the slides 'Status Report'}}}
+*{{{Show the slides 'Status Report'}}}*
.. R8
We now have a fresh repository, but all our files are not being tracked or
watched by mercurial, yet. We need to explicitly ask it to watch the files,
-that we want it to.
+that we want it to. Let's first see the status of our repo using the command.
.. L9
-$hg status
+*{{{Switch to Terminal}}}
+
+``$hg status``
+
+*{{{Show the slides 'Status Report'}}}
.. R9
-Gives the status of our repo. As a beginner, use it often.
+It gives the status of our repo. As a beginner, use it often. You can use
+'hg help commandname' which gives the details about the command. For example,
.. L10
-$hg help 'status'
+*{{{Switch to terminal}}}*
+
+``$hg help 'status'``
.. R10
-You can use 'hg help commandname' which gives the details about the command.
-For example.
+You can see the status codes listed in the help for status command.
.. L11
-$hg help status
+
+*{{{Show the slides for 'Status Codes'}}}*
+
+.. R11
+
+Let's now to try to understand what each of the status code associated with the
+files in our repository mean.
.. L12
-{{{Show the slides for 'Status Codes'}}}
+*{{{Show the slides for 'Adding files'}}}*
-.. R11
+.. R12
-Let's now to try to discern what each of the status code associated with the
-files mean. By looking at the codes, it is clear that our files are not being
-tracked by hg yet. Now let's move onto 'Adding Files'.
+By looking at the codes, it is clear that our files are not being tracked by
+hg yet. Now let's move onto 'Adding Files'.
.. L13
-$hg add
+*{{{Switch to terminal}}}*
-.. R12
+``$hg add``
+
+
+.. R13
This simply adds all the files in the (working) directory, to the repository.
-As expected, the status command shows an A before he file names. We could also
+As expected, the status command shows an A before the file names. We could also
specify files individually, for example
.. L14
-$ hg add chapter1.txt
+``$ hg add chapter1.txt``
-.. R13
+*{{{Show the slides for 'Adding files'}}}*
+
+.. R14
If you have deleted files, hg status will show you the status code !. You can,
then, tell hg to stop tracking these files, using the hg remove command. Look
at hg help remove for more details.
-.. L15
+.. L14
-{{{Show the slides 'Taking Snapshots'}}}
+*{{{Show the slides 'Taking Snapshots'}}}*
.. R14
@@ -170,9 +198,11 @@ We have added a set of new files to the repository, but we haven't told
mercurial to remember these changes, i.e., to take a snapshot at this point in
time. We do this by using the commit command.
-.. L16
+.. L15
-$ hg commit -u "Primal Pappachan <primal@fossee.in>" -m "Initial Commit."
+*{{{Switch to Terminal}}}*
+
+``$ hg commit -u "Primal Pappachan <primal@fossee.in>" -m "Initial Commit."``
.. R15
@@ -185,9 +215,9 @@ Mercurial has now taken a snapshot of our repository and has attached our
description along with it. To see the status of the files in the repository,
use the hg status command.
-.. L17
+.. L16
-$ hg st
+``$ hg st``
.. R16
@@ -195,29 +225,29 @@ The command does not return anything, when there are no uncommitted changes.
Also, notice that I have started getting lazy and used only a short name st for
the status command.
-.. L18
+.. L17
-{{{Show the slide 'Thumbnail views'}}}
+``{{{Show the slide 'Thumbnail views'}}}``
.. R17
To see the history of the changes to our repository, we use hg log. We can view
the change that we just made to our repository.
-.. L19
+.. L18
-$ hg log
+``$ hg log``
.. R18
hg log gives the log of the changes made in the form of changesets. A changeset
is a set of changes made to the repository between two consecutive commits. It
also shows the date at which the commit was made. Please have a look of the
-various aspects of the changeset.
+various aspects of the changeset mentioned in the slide.
-.. L20
+.. L19
-{{{Show the slide 'User Information'}}}
+*{{{Show the slide 'User Information'}}}*
.. R19
@@ -233,105 +263,105 @@ for all the projects that we are working on.
For linux systems, we open the configuration file in our favorite editor and
add the username details and our editor preferences.
-.. L21
+.. L20
+*{{{Switch to terminal}}}*
-vim ~/.hgrc
-[ui]
-username = Primal Pappachan <primal@fossee.in>
-editor = vim
+``vim ~/.hgrc``
-.. R21
+``[ui]``
+
+``username = Primal Pappachan <primal@fossee.in>``
+
+``editor = vim``
+
+.. R20
We have now set the user-name details for mercurial to use.
-.. L22
+.. L21
-{{{Show the slide 'Advice: commits, messages'}}}
+*{{{Show the slide 'Advice: commits, messages'}}}*
-.. R22
+.. R21
Some Recommended Practices for commit messages
1. Atomic changes; one change with one commit
-
-#. Single line summary — 60 to 65 characters long
-
+#. Single line summary, 60 to 65 characters long
#. Followed by paragraphs of detailed description
- - Why the change?
- - What does it effect?
- - Known bugs/issues?
- - etc.
-.. L23
+ * Why the change?
+ * What does it effect?
+ * Known bugs/issues?
+ * etc.
+
+.. L22
-{{{Show the 'summary' slide'}}}
+*{{{Show the 'Summary' slide}}}*
-.. R23
+.. R22
This brings us to the end of the tutorial. In this tutorial, we have
seen,
+
1. how to initialize a new repository using hg init,
- #. get the status of a repository using hg status and meaning of it's status
- codes
+ #. get the status of a repository using hg status and meaning of status codes
#. make commits of changes to files, using hg commit
#. view the history of the repository using the hg log command,
#. set our user information in the global hgrc file.
-.. L24
+.. L23
{{{Show self assessment questions slide}}}
-.. R24
+.. R23
Here are some self assessment questions for you to solve
1. How can you tell hg to stop tracking deleted files?
- #. Here's a part of the output that is printed in 'hg log'.
- changeset: 1:2278160e78d4
- tag: tip
- user: Primal Pappachan <primal@fossee.in>
- date: Sat Jan 26 22:16:53 2012 +0530
- summary: Added Readme
- Try to identify each component of this changeset and it's meaning. In the
- changeset, what is the significance of the number as well as hexadecimal
- string?
-
- #. What happens when 'hg commit' command is run first time without specifying
- username as parameter or creating the hg configuration file?
-
-.. L25
+ 2. What happens when 'hg commit' command is run first time without specifying
+ -u paramter?
+ 3. Here's a part of the output that is printed in 'hg log':
+ changeset: 1:2278160e78d4
+ tag: tip
+ user: Primal Pappachan <primal@fossee.in>
+ date: Sat Jan 26 22:16:53 2012 +0530
+ summary: Added Readme
+ Try to identify each component of this changeset and it’s meaning. In the
+ changeset, what is the significance of the number as well as hexadecimal
+ string in the first line?
+
+.. L24
-{{{Show the solutions slide to self assessment questions }}}
+*{{{Show the solutions slide to self assessment questions }}}*
-.. R25
+.. R24
And the answers,
- 1. If you have deleted files, hg status will show you the status code !. You
- can, then, tell hg to stop tracking these files, using the hg remove command.
- #. The revision number is a handy notation that is only valid in that
- repository. The hexadecimal string is the permanent, unchanging identifier
- that will always identify that exact changeset in every copy of the repository
+ 1. If you have deleted files, hg status will show you the status code !. You
+ can use hg remove command to tell mercurial to stop tracking files.
- #. If you have set the EMAIL environment variable, this will be used. Next,
- Mercurial will query your system to find out your local user name and host
- name, and construct a username from these components. Since this often results
- in a username that is not very useful, it will print a warning if it has to do
- this. If all of these mechanisms fail, Mercurial will fail, printing an error
- message. In this case, it will not let you commit until you set up a
- username.
-
-.. L26
+ 2. If you have set the EMAIL environment variable, this will be used. Next,
+ Mercurial will query your system to find out your local user name and host
+ name, and construct a username from these components. Since this often results
+ in a username that is not very useful, it will print a warning if it has to do
+ this. If all of these mechanisms fail, Mercurial will fail, printing an error
+ message. In this case, it will not let you commit until you set up a username.
+
+ 3. The revision number is a handy notation that is only valid in that
+ repository. The hexadecimal string is the permanent, unchanging identifier
+ that will always identify that exact changeset in every copy of the repository.
+
+.. L25
-{{{Show the thank you slide}}}
+*{{{Show the thank you slide}}}*
-.. R26
+.. R25
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 third tutorial on 'Version
-Control using Hg'
+around with Mercurial and read the documentation given by hg help command.
Thank you
diff --git a/Version_Control/vcs2/vcs2twocol.rst b/Version_Control/vcs2/vcs2twocol.rst
new file mode 100644
index 0000000..f3c0556
--- /dev/null
+++ b/Version_Control/vcs2/vcs2twocol.rst
@@ -0,0 +1,195 @@
+---------------------------------
+Version Control using Hg Part 2
+---------------------------------
+
+.. Prerequisites
+.. -------------
+
+.. Version Control using Hg Part 1
+
+.. 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 tutorial on 'Version Control |
+| with the logo of MHRD}}}* | using Mercurial: Let there a Repo!' |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Prerequisite'}}}* | Please make sure that you have gone through the following tutorials before you |
+| | continue on this tutorial: |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Objectives'}}}* | At the end of this tutorial you will be able to do the following to a repository |
+| | |
+| | 1. initialize it, |
+| | #. obtain the status of a repository, |
+| | #. add new files to it, |
+| | #. take snapshots, |
+| | #. view the history, |
+| | #. and also set your user information for hg |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide for 'We need a repo!'}}}* | To start using Mercurial (or hg) and get the benefits of using a version |
+| | control system, we should first have a repository. |
+| | |
+| | Now, what exactly is a repo? A repo/repository is a folder with contains all |
+| | the files and information on all the changes that were made to it. To save disk |
+| | space, hg doesn't save all files, but only saves only a series of changes made |
+| | to the files. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Initializing a Repo'}}}* | A fresh repository can either be started using an init command or an existing |
+| | repository could be cloned. It adds a .hg directory to our working directory. |
+| | |
+| | Let us look at creating our own repository, now. We can look at obtaining |
+| | already existing repositories, at a later stage. |
+| | |
+| | Switch to your terminal |
+| | |
+| | Let's say we have a folder called book, which has all the chapters of a book as |
+| | text files. Let us convert that folder, into a hg repository. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Switch to terminal}}} | We have three chapters in the folder. We convert this folder into a mercurial |
+| | repository using the hg init command |
+| ``$ cd book/`` | |
+| | |
+| ``$ ls -a`` | |
+| | |
+| ``. .. chapter1.txt chapter2.txt chapter3.txt`` | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg init`` | The .hg directory indicates that our book directory is now a hg repository. |
+| | |
+| ``$ ls -a`` | Mercurial keeps all the history of the changes made, and a few other config |
+| | files, etc. in this directory. The directory, book is called our working |
+| ``. .. .hg chapter1.txt chapter2.txt chapter3.txt`` | directory. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slides 'Status Report'}}}* | We now have a fresh repository, but all our files are not being tracked or |
+| | watched by mercurial, yet. We need to explicitly ask it to watch the files, |
+| | that we want it to. Let's first see the status of our repo using the command. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Switch to Terminal}}} | It gives the status of our repo. As a beginner, use it often. You can use |
+| | 'hg help commandname' which gives the details about the command. For example, |
+| ``$hg status`` | |
+| | |
+| *{{{Show the slides 'Status Report'}}} | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Switch to terminal}}}* | You can see the status codes listed in the help for status command. |
+| | |
+| ``$hg help 'status'`` | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slides for 'Status Codes'}}}* | Let's now to try to understand what each of the status code associated with the |
+| | files in our repository mean. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slides for 'Adding files'}}}* | By looking at the codes, it is clear that our files are not being tracked by |
+| | hg yet. Now let's move onto 'Adding Files'. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Switch to terminal}}}* | This simply adds all the files in the (working) directory, to the repository. |
+| | As expected, the status command shows an A before the file names. We could also |
+| ``$hg add`` | specify files individually, for example |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slides 'Taking Snapshots'}}}* | We have added a set of new files to the repository, but we haven't told |
+| | mercurial to remember these changes, i.e., to take a snapshot at this point in |
+| | time. We do this by using the commit command. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Switch to Terminal}}}* | The -u parameter allows us to specify the user details. It is a general good |
+| | practice to use full name followed by the email id. The -m parameter allows us |
+| ``$ hg commit -u "Primal Pappachan <primal@fossee.in>" -m "Initial Commit."`` | to give the commit message --- a message describing the changes that are being |
+| | committed. |
+| | |
+| | Mercurial has now taken a snapshot of our repository and has attached our |
+| | description along with it. To see the status of the files in the repository, |
+| | use the hg status command. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg st`` | The command does not return anything, when there are no uncommitted changes. |
+| | Also, notice that I have started getting lazy and used only a short name st for |
+| | the status command. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``{{{Show the slide 'Thumbnail views'}}}`` | To see the history of the changes to our repository, we use hg log. We can view |
+| | the change that we just made to our repository. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg log`` | hg log gives the log of the changes made in the form of changesets. A changeset |
+| | is a set of changes made to the repository between two consecutive commits. It |
+| | also shows the date at which the commit was made. Please have a look of the |
+| | various aspects of the changeset mentioned in the slide. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'User Information'}}}* | There are two aspects which can be improved upon. Firstly, it is unnecessary to |
+| | keep typing the user information each and every time we make a commit. |
+| | Secondly, it is not very convenient to enter a multi-line commit message from |
+| | the terminal. To solve these problems, we set our user details and editor |
+| | preferences in the .hgrc file in our home folder. ($HOME/.hgrc on Unix like |
+| | systems and %USERPROFILE%\.hgrc on Windows systems) This is a global setting |
+| | for all the projects that we are working on. |
+| | |
+| | |
+| | For linux systems, we open the configuration file in our favorite editor and |
+| | add the username details and our editor preferences. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Switch to terminal}}}* | We have now set the user-name details for mercurial to use. |
+| | |
+| ``vim ~/.hgrc`` | |
+| | |
+| ``[ui]`` | |
+| | |
+| ``username = Primal Pappachan <primal@fossee.in>`` | |
+| | |
+| ``editor = vim`` | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Advice: commits, messages'}}}* | Some Recommended Practices for commit messages |
+| | |
+| | 1. Atomic changes; one change with one commit |
+| | #. Single line summary, 60 to 65 characters long |
+| | #. Followed by paragraphs of detailed description |
+| | |
+| | * Why the change? |
+| | * What does it effect? |
+| | * Known bugs/issues? |
+| | * etc. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the 'Summary' slide}}}* | This brings us to the end of the tutorial. In this tutorial, we have |
+| | seen, |
+| | |
+| | 1. how to initialize a new repository using hg init, |
+| | #. get the status of a repository using hg status and meaning of status codes |
+| | #. make commits of changes to files, using hg commit |
+| | #. view the history of the repository using the hg log command, |
+| | #. set our user information in the global hgrc file. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| {{{Show self assessment questions slide}}} | Here are some self assessment questions for you to solve |
+| | |
+| | 1. How can you tell hg to stop tracking deleted files? |
+| | 2. What happens when 'hg commit' command is run first time without specifying |
+| | -u paramter? |
+| | 3. Here's a part of the output that is printed in 'hg log': |
+| | changeset: 1:2278160e78d4 |
+| | tag: tip |
+| | user: Primal Pappachan <primal@fossee.in> |
+| | date: Sat Jan 26 22:16:53 2012 +0530 |
+| | summary: Added Readme |
+| | Try to identify each component of this changeset and it’s meaning. In the |
+| | changeset, what is the significance of the number as well as hexadecimal |
+| | string in the first line? |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the solutions slide to self assessment questions }}}* | And the answers, |
+| | |
+| | 1. If you have deleted files, hg status will show you the status code !. You |
+| | can use hg remove command to tell mercurial to stop tracking files. |
+| | |
+| | 2. If you have set the EMAIL environment variable, this will be used. Next, |
+| | Mercurial will query your system to find out your local user name and host |
+| | name, and construct a username from these components. Since this often results |
+| | in a username that is not very useful, it will print a warning if it has to do |
+| | this. If all of these mechanisms fail, Mercurial will fail, printing an error |
+| | message. In this case, it will not let you commit until you set up a username. |
+| | |
+| | 3. The revision number is a handy notation that is only valid in that |
+| | repository. The hexadecimal string is the permanent, unchanging identifier |
+| | that will always identify that exact changeset in every copy of the repository. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{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. |
+| | |
+| | Thank you |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
diff --git a/Version_Control/vcs2/vcslide2.tex b/Version_Control/vcs2/vcslide2.tex
index 4ab4ecf..c17c7fc 100644
--- a/Version_Control/vcs2/vcslide2.tex
+++ b/Version_Control/vcs2/vcslide2.tex
@@ -43,45 +43,49 @@
\setbeamercolor{emphbar}{bg=blue!20, fg=black}
\newcommand{\emphbar}[1]
+\author[Primal Pappachan] {}
+\institute[FOSSEE group] {}
+
+\date[IIT Bombay] {}
+
\begin{document}
\begin{frame}
\begin{center}
-\vspace{12pt}
-\textcolor{blue}{\huge Version Control Using Hg - Part 2}
+\vspace{15pt}
+\textcolor{blue}{\large Version Control Using Mercurial} \\
+\textcolor{blue}{\huge Let there be a Repo!}
\end{center}
-\vspace{18pt}
+\vspace{15pt}
\begin{center}
-\vspace{10pt}
\includegraphics[scale=0.95]{../images/fossee-logo.png}\\
\vspace{5pt}
\scriptsize Developed by FOSSEE Team, IIT-Bombay. \\
\scriptsize Funded by National Mission on Education through ICT\\
-\scriptsize MHRD,Govt. of India\\
+\scriptsize MHRD, Govt. of India\\
\includegraphics[scale=0.15]{../images/iitb-logo.jpg}\\
\end{center}
\end{frame}
\begin{frame}
\frametitle{Prerequisite}
- \textbf{Version Control Using Hg}
\begin{itemize}
- \item Part I
+ \item \textbf{Version Control Using Mercurial}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Objectives}
- At the end of this tutorial, you will be able to:
+ At the end of this tutorial, you will be able to do the following to a repository:
\begin{itemize}
- \item Initialize a new repository,
- \item Obtain the status of a repository,
- \item Add new files to a repository,
- \item Take snapshots of a repository,
- \item View the history of a repository,
- \item Set your user information for hg
+ \item Initialize it
+ \item Obtain the status,
+ \item Add new files to it,
+ \item Take snapshots,
+ \item View the history,
+ \item \textcolor{blue}{And also} Set your user information for hg
\end{itemize}
\end{frame}
@@ -92,10 +96,8 @@
\frametitle{We need a repo!}
\begin{itemize}
\item A Repository (repo) is where all the action is!
- \item Project files along with a special directory that stores all the
- changes
- \item We take snapshots of the whole repository; not individual
- files.
+ \item Project files along with a special directory that stores all the changes
+ \item We take snapshots of the whole repository; not individual files.
\end{itemize}
\end{frame}
@@ -231,8 +233,13 @@
\frametitle{Solutions}
\begin{enumerate}
\item \small{hg remove}
-\item \small{The revision number is a handy notation that is only valid in that repository. The hexadecimal string is the permanent, unchanging identifier that will always identify that exact changeset in every copy of the repository}
-\item \small{If you have set the EMAIL environment variable, this will be used. Next, Mercurial will query your system to find out your local user name and host name, and construct a username from these components. Since this often results in a username that is not very useful, it will print a warning if it has to do this. If all of these mechanisms fail, Mercurial will fail, printing an error message. In this case, it will not let you commit until you set up a username.}
+\item \small{Initially it looks for the EMAIL environment variable, if it does not exist
+it tries to use a combination of local user name and host name. If both
+mechanisms fails, an error message will be printed and user will not be
+allowed to commit.}
+\item \small{The revision number is a handy notation that is only valid in that
+repository. The hexadecimal string is the permanent, unchanging identifier that
+will always identify that exact changeset in every copy of the repository}
\end{enumerate}
\end{frame}
\begin{frame}
@@ -250,4 +257,4 @@
\end{block}
\end{frame}
-\end{document} \ No newline at end of file
+\end{document}
diff --git a/Version_Control/vcs3/vcs3.rst b/Version_Control/vcs3/vcs3.rst
index ff77e2e..cd659ec 100644
--- a/Version_Control/vcs3/vcs3.rst
+++ b/Version_Control/vcs3/vcs3.rst
@@ -1,6 +1,6 @@
---------------------------------
-Version Control using Hg Part 3
+Version Control using Hg - Part 3
---------------------------------
.. Prerequisites
@@ -9,8 +9,8 @@ Version Control using Hg Part 3
.. Version Control with hg - Part 1,2
.. Author : Primal Pappachan
- Internal Reviewer :
- Date: Jan 27, 2012
+ Internal Reviewer : Kiran Isukapatla
+ Date: Feb 21, 2012
--------
@@ -19,12 +19,12 @@ Script
.. L1
-*{{{ Show the first slide containing title, name of the production team along
+*{{{ Show the first slide containing the title, name of the production team along
with the logo of MHRD}}}*
.. R1
-Hello friends and welcome to the tutorial on 'Version Control with Hg'
+Hello friends and welcome to the third part of the tutorial on 'Version Control with Hg'
.. L2
@@ -33,7 +33,7 @@ Hello friends and welcome to the tutorial on 'Version Control with Hg'
.. R2
Please make sure that you have gone through the following tutorials before you
-continue on this tutorial
+continue on this tutorial.
.. L3
@@ -43,9 +43,9 @@ continue on this tutorial
At the end of this tutorial you will be able to
-1. Learn how to view and revert changes made to files in a repository.
+1. Learn how to 'view' and 'revert' changes made to files in a repository.
-#. Learn how to share repositories and deal with simultaneous conflicting changes.
+#. Learn how to 'share' repositories and deal with 'simultaneous conflicting change'.
.. L4
@@ -53,7 +53,7 @@ At the end of this tutorial you will be able to
.. R4
-Let's first try to find out why we should commit inspite of the additional
+Let's first try to find out why we should commit, inspite of the additional
operational costs and loss of time?
.. L4
@@ -62,9 +62,9 @@ operational costs and loss of time?
.. R4
-While you were wondering, let's say your friend walks in and together you make
-a lot of changes. 1. You replace all the occurrences of & in chapter1.txt with
-and. 2. You delete the chapter3.txt file.
+While you were wondering, let's say your friend walks in, and together you make
+a lot of changes. 1. You replace all the occurrences of '&' in 'chapter1.txt' with
+'and'. 2. You delete the 'chapter3.txt' file.
.. L5
@@ -78,17 +78,17 @@ and. 2. You delete the chapter3.txt file.
.. R6
-But after a while, you realize that these changes are unwarranted. You want to
-go back to the previous state, undoing all the changes that you made, after
-your friend arrived.
+But after a while, you realize that these changes are 'unwarranted'. You want to
+go back to the previous state, undoing all the changes that were made after
+your friend's arrival.
-The undo in your editor may allow undoing some changes(if you haven't closed it
-after making the changes) but there's no way of getting back deleted files
-using your editor. That's where mercurial comes to the rescue.
+The 'undo' in your editor may allow undoing some changes. However
+there is no way of getting back deleted files using this feature.
+This is where 'Mercurial' comes to the rescue.
-We shall use the revert command of hg to undo all the changes after the last
-commit. If we want to undo all the changes, we use the revert command with the
---all argument, else use revert command with specific filename as argument.
+We shall use the 'revert' command of hg to undo all the changes after the last
+commit. We use the revert command with the '--all' argument for undoing
+all changes, else use revert command with 'specific filename' as argument.
.. L5
@@ -108,14 +108,14 @@ commit. If we want to undo all the changes, we use the revert command with the
.. R5
-After running this command, you can see that all deleted files have been
-restored. But hg has generated new files with .orig extension. Mercurial
-actually doesn't like to delete any of the changes that you have made. So, it
-makes a back-up of the already existing files in the present state and gives
-you back the old file.
+After running this command, you can see that all the deleted files have been
+restored. However, hg has generated new files with '.orig' extension. Mercurial
+actually doesn't like to delete any of the changes that you've made. So, it
+makes a backup of the already existing files in the present state and gives
+you the old file.
-If we now decide, that we want to redo the changes that we had done to the
-existing file, we can just overwrite it with the backed up file.
+If we now decide that we want to redo the changes that we had done to the
+existing file, we can overwrite it with the backed up file.
.. L6
@@ -131,9 +131,9 @@ existing file, we can just overwrite it with the backed up file.
.. R6
-Let's say we now want to commit these changes, but we are not sure of all the
-changes that we have made to the file, since it's been a while after we made
-the changes. We could use the diff command to see all the changes that have
+Now, let's say we want to commit all the changes. We are not sure of all the
+changes done, since it's been a while after we made the changes.
+We could use the 'diff' command to see all the changes that have
been made in the file.
.. L8
@@ -142,13 +142,13 @@ been made in the file.
.. R7
-You see some cryptic output, but it's essentially giving you the list of
-changes made to the file. All the lines that were deleted are preceded by a -
-and all the new-lines are preceded by a +. You can see that the & occurrences
-have been replaces with and.
+You see some 'cryptic' output, but it's essentially giving you the list of
+changes made to the file. All the lines that were deleted are preceded by 'a -'
+and all the new lines are preceded by 'a +'. You can see that the '&' occurrences
+have been replaced with 'and'.
-We should note here that, the diff wouldn't make much sense, if we had some
-binary files like .jpg or .pdf files. We would see some gibberish in the
+We should note that, the 'diff' wouldn't make much sense, if we had some
+binary files like '.jpg' or '.pdf' files. We would see some gibberish in the
output. Let's now commit this change.
.. L9
@@ -159,7 +159,7 @@ output. Let's now commit this change.
.. R8
-We can pass an additional argument, -v or --verbose, to hg log to get the whole
+We can pass an additional argument, '-v' or 'verbose', to 'hg log' to get the whole
commit message, instead of just the summary.
.. L10
@@ -168,7 +168,7 @@ commit message, instead of just the summary.
.. R9
-Also, we are not always, interested to see the whole history of the project. It
+Also, we may not always want to see the whole history of the project. It
would often suffice to see the last few commits.
.. L11
@@ -177,8 +177,8 @@ would often suffice to see the last few commits.
.. R10
-To limit the output of hg log, we could use the -l or --limit argument. Now it
-will print only last three commits.
+To limit the output of hg log, we could use the '-l' or 'limit argument'. Now '-l3'
+will print only the last three commits.
.. L12
@@ -187,10 +187,10 @@ will print only last three commits.
.. R11
Often, the level of detail provided by the commit messages is also not enough.
-We would want to see what exactly changed with a commit, probably as a diff. We
-could do that using revision numbers.
+We may want to see what exactly changed with a commit, probably as a 'diff'. We
+could do that using 'revision numbers'.
-Use the log command to get a brief description of all the changes made, by
+Use the 'log' command to get a brief description of all the changes made, by
showing us the summary line of all the commits. Look at the changeset line in
the output of the command. It shows a number followed by a semi-colon and some
long hexa-decimal string. The number is called the revision number. It is an
@@ -204,9 +204,9 @@ the revision number, if required.
.. R12
-The revision number can also be passed as an argument to many commands. Let's
-say we wish to see the changes between revision 1 and revision 2. We shall use
-the diff command to do this.
+The 'revision number' can also be passed as an argument to many commands. Let's
+say we wish to see the changes between 'revision 1' and 'revision 2'. We shall use
+the 'diff' command to do this.
.. L14
@@ -214,7 +214,7 @@ the diff command to do this.
.. R13
-The diff command takes two revision numbers as arguments and gives the changes
+The 'diff' command takes two revision numbers as arguments and gives the changes
made from revision in the first argument to revision in the second argument.
.. R14
@@ -246,8 +246,7 @@ To see changes made to a particular file, in the speciifed range of commits,
.. R17
-This brings us to the end of the tutorial. In this tutorial, we have
-seen,
+This brings us to the end of the tutorial.
.. L18
@@ -256,9 +255,9 @@ seen,
.. R18
In this tutorial, we have learnt to,
- #. Undo changes to the repository using hg revert,
- #. View changes done to the repository using hg diff
- #. Use revision numbers as arguments to different hg commands
+ #. Undo changes to the repository using 'hg revert',
+ #. View changes done to the repository using 'hg diff',
+ #. Use 'revision numbers' as arguments to different 'hg commands'.
.. L19
@@ -266,9 +265,10 @@ In this tutorial, we have learnt to,
.. R19
-Here are some self assessment questions for you to solve
-#. How to accomplish not saving backup files using hg revert command?
-#. Get the history of revisions 2 to 4 without having to list each revision?
+Here are some self assessment questions for you to solve:
+
+#. How to you avoid saving 'backup files' while using 'hg revert' command?
+#. How do we get the history of revisions 2 to 4 without having to list each revision?
#. Print the description and content of a change. Hint: Use --patch option
.. L20
@@ -292,8 +292,8 @@ And the answers,
.. R21
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 third tutorial on 'Version
+around with Mercurial and read the documentation given by 'hg help' command. When
+you are ready to move on, please proceed to the fourth tutorial on 'Version
Control using Hg'
Thank you!
diff --git a/Version_Control/vcs3/vcs3_2col.rst b/Version_Control/vcs3/vcs3_2col.rst
new file mode 100644
index 0000000..7e69eab
--- /dev/null
+++ b/Version_Control/vcs3/vcs3_2col.rst
@@ -0,0 +1,132 @@
+
+---------------------------------
+Version Control using Hg Part 3
+---------------------------------
+
+.. Prerequisites
+.. -------------
+
+.. Version Control with hg - Part 1,2
+
+.. Author : Primal Pappachan
+ Internal Reviewer :
+ Date: Jan 27, 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 'Prerequisite'}}}* | Please make sure that you have gone through the following tutorials before you |
+| | continue on this tutorial |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide containing the objectives}}}* | At the end of this tutorial you will be able to |
+| | |
+| | 1. Learn how to view and revert changes made to files in a repository. |
+| | |
+| | #. Learn how to share repositories and deal with simultaneous conflicting change |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Revert Changes'}}}* | While you were wondering, let's say your friend walks in and together you make |
+| | a lot of changes. 1. You replace all the occurrences of & in chapter1.txt with |
+| | and. 2. You delete the chapter3.txt file. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg revert --all`` | After running this command, you can see that all deleted files have been |
+| | restored. But hg has generated new files with .orig extension. Mercurial |
+| ``reverting chapter1.txt`` | actually doesn't like to delete any of the changes that you have made. So, it |
+| | makes a back-up of the already existing files in the present state and gives |
+| ``reverting chapter3.txt`` | you back the old file. |
+| | |
+| ``$ hg st`` | If we now decide, that we want to redo the changes that we had done to the |
+| | existing file, we can just overwrite it with the backed up file. |
+| ``? chapter1.txt.orig`` | |
+| | |
+| ``$ ls`` | |
+| | |
+| ``chapter1.txt chapter1.txt.orig chapter2.txt chapter3.txt`` | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ mv chapter1.txt.orig chapter1.txt`` | Let's say we now want to commit these changes, but we are not sure of all the |
+| | changes that we have made to the file, since it's been a while after we made |
+| ``$ hg st`` | the changes. We could use the diff command to see all the changes that have |
+| | been made in the file. |
+| ``M chapter1.txt`` | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``{{{Show the slide 'Viewing Changes'}}}`` | You see some cryptic output, but it's essentially giving you the list of |
+| | changes made to the file. All the lines that were deleted are preceded by a - |
+| | and all the new-lines are preceded by a +. You can see that the & occurrences |
+| | have been replaces with and. |
+| | |
+| | We should note here that, the diff wouldn't make much sense, if we had some |
+| | binary files like .jpg or .pdf files. We would see some gibberish in the |
+| | output. Let's now commit this change. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg diff`` | We can pass an additional argument, -v or --verbose, to hg log to get the whole |
+| | commit message, instead of just the summary. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$hg commit`` | Also, we are not always, interested to see the whole history of the project. It |
+| | would often suffice to see the last few commits. |
+| ``$hg log`` | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$hg log -v`` | To limit the output of hg log, we could use the -l or --limit argument. Now it |
+| | will print only last three commits. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg log -v -l3`` | Often, the level of detail provided by the commit messages is also not enough. |
+| | We would want to see what exactly changed with a commit, probably as a diff. We |
+| | could do that using revision numbers. |
+| | |
+| | Use the log command to get a brief description of all the changes made, by |
+| | showing us the summary line of all the commits. Look at the changeset line in |
+| | the output of the command. It shows a number followed by a semi-colon and some |
+| | long hexa-decimal string. The number is called the revision number. It is an |
+| | identifier for the commit, and can be along with various commands to specify |
+| | the revision number, if required. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Revision Numbering'}}}* | The revision number can also be passed as an argument to many commands. Let's |
+| | say we wish to see the changes between revision 1 and revision 2. We shall use |
+| | the diff command to do this. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Using revision numbers'}}}* | The diff command takes two revision numbers as arguments and gives the changes |
+| | made from revision in the first argument to revision in the second argument. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg diff -r1 -r2`` | It can be passed to other commands as well. For instance, we can check the logs |
+| | of the very first commit, by saying |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg log -r0`` | You could also specify a range of commits whose logs you would like to see. |
+| | Say, we would like to see the last two commits, |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg log -r0:2`` | To see changes made to a particular file, in the speciifed range of commits, |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg log -r0:2 chapter2.txt`` | This brings us to the end of the tutorial. In this tutorial, we have |
+| | seen, |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the 'summary' slide'}}}* | In this tutorial, we have learnt to, |
+| | #. Undo changes to the repository using hg revert, |
+| | #. View changes done to the repository using hg diff |
+| | #. Use revision numbers as arguments to different hg commands |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{ Show self assessment questions slide }}}* | Here are some self assessment questions for you to solve |
+| | |
+| | #. How to accomplish not saving backup files using hg revert command? |
+| | #. Get the history of revisions 2 to 4 without having to list each revision? |
+| | #. Print the description and content of a change. Hint: Use --patch option |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{ Solution of self assessment questions on slide }}}* | And the answers, |
+| | |
+| | 1. hg revert -C --no-backup |
+| | |
+| | 2. hg log -r 2:4 |
+| | |
+| | 3. hg log -v -p -r 2 |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{ 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 third tutorial on 'Version |
+| | Control using Hg' |
+| | |
+| | Thank you! |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
diff --git a/Version_Control/vcs4/vcs4.rst b/Version_Control/vcs4/vcs4.rst
index 27565b5..b5da2c1 100644
--- a/Version_Control/vcs4/vcs4.rst
+++ b/Version_Control/vcs4/vcs4.rst
@@ -6,12 +6,12 @@ Version Control using Hg Part 4
.. Prerequisites
.. -------------
-.. Version Control using Hg Part 1, 2, 3
+.. Version Control using Hg, Part 1, 2, 3
.. Author : Primal Pappachan
- Internal Reviewer :
- Date: Jan 27, 2012
+ Internal Reviewer : Kiran Isukapatla
+ Date: Feb 20, 2012
======
Script
@@ -24,7 +24,7 @@ with the logo of MHRD}}}*
.. R1
-Hello friends and welcome to the fourth part of tutorial on 'Version Control with Hg'
+Hello friends and welcome to the fourth part of tutorial on 'Version Control with hg'.
.. L2
@@ -33,7 +33,7 @@ Hello friends and welcome to the fourth part of tutorial on 'Version Control wit
.. R2
Please make sure that you have gone through the following tutorials before you
-continue on this tutorial
+continue on this tutorial.
.. L3
@@ -44,7 +44,7 @@ continue on this tutorial
At the end of this tutorial you will be able to
#. Clone existing repositories
#. Share your repositories with peers
- #. use version control for collaborating with your peers
+ #. use 'version control' for collaborating with your peers
.. L4
@@ -54,75 +54,70 @@ At the end of this tutorial you will be able to
When motivating the use of version control systems, we spoke a lot about
collaboration and sharing our changes with our peers. Let us now see how we can
-share our project with our peers and collaborate with them.
+share a project with our peers and collaborate with them.
-For this purpose let us create a central repository, a copy of our repository,
-which is different from the one in which we are working. The clone command is
+For this purpose, let us create a 'central repository' and a copy of 'our repository',
+which is different from the one in which we are working. The 'clone' command is
used to clone or replicate an existing repository.
-.. L15
-
-``$hg clone SOURCE [DEST]``
+.. L5
``$ hg clone book book-repo``
-.. R15
+.. R5
-The syntax of the clone command is -- hg clone SOURCE [DEST], where the
-optional argument DEST is being represented in brackets. The clone command can
+The syntax of the 'clone' command is -- hg clone SOURCE [DEST], where DEST is an
+ optional argument, represented in brackets. The 'clone' command can
be used to replicate already existing repositories, either on your own machine
-or on some remote machine somewhere on the network. Since, hg maintains a copy
+or on a remote machine. Since, hg maintains a copy
of the full repository with every copy of the repository, the two copies that
we have are exactly equivalent.
-In this example book-repo shall be our central repository we are sharing with
+In this example 'book-repo' shall be our central repository being shared with
peers.
-.. L16
+.. L6
*{{{Show the slide 'Sharing Repositories'}}}*
-.. R16
+.. R6
-A mercurial repository can be shared in multiple ways. We shall use the http
-protocol to share the repository. Mercurial comes inbuilt with a tiny server
+A mercurial repository can be shared in multiple ways. Mercurial comes inbuilt with a tiny server
that can be used to share your repository over the network. To start sharing
-the repository, we say
+the repository, we go to the repository and say 'hg serve'.
-.. L17
+.. L7
-``$cd ../book-repo``
+``$cd book-repo``
``$hg serve``
-.. R17
+.. R7
-This will start serving the repository on the network on the port 8000. Anybody in your network can access the repository in their browsers. Let us see how it looks, in our own browser.
+This will start serving the repository on the network on the port 8000.
-.. L18
+.. L8
Open the url http://localhost:8000 in browser.
-.. R18
+.. R8
-Now if your friend Primal wishes to clone the repository, use
+Now if your friend 'John' wishes to clone the repository, he uses:
-.. L19
+.. L9
-``$ hg clone http://my-ip-address:8000 book-primal``
+``$ hg clone http://my-ip-address:8000 book-john``
-.. R19
+.. R9
-Now if Primal makes some changes to the repository and tries to commit it fails
-obviously as access rights haven't been taken care of.
-By this process, we share a central repository; work on our local copies. It
+By this process, we share a central repository and work on our local copies. It
doesn't make much sense to allow anybody to make changes to a public
-repository, by default. We will need to make changes to the settings of the
-repository to allow this. To set the write permissions, add the following lines
+repository by default. To allow this, we need to make few changes to the settings of the
+repository. To set the write permissions, we add the following lines
in .hg/hgrc
-.. L20
+.. L10
``[web]``
@@ -130,193 +125,181 @@ in .hg/hgrc
``allow_push=*``
-.. R20
+.. R10
-This will allow anybody to push to the repository, now. Primal can now push and
-his changes will appear in the central repository.
+This will allow anybody to push to the repository. Now, John can push
+his changes which will then appear in the central repository.
-.. L21
+.. L11
*{{{Show the slide 'Sharing Changes'}}}*
-.. R21
+.. R11
-Use hg push to push your commits (changesets) to the central repository. The
-changes made by Primal will appear in the central repository.
+Use 'hg push' to push your commits (changesets) to the central repository. The
+changes made by John will appear in the central repository.
-.. L22
+.. L12
``$ hg push``
-.. R22
+.. R12
-Let us now pull these changes into our original repository that we have been
-working with.
+Let's now see how to get the changes from central repository.
-.. L23
+.. L13
*{{{Show the slide 'Pulling Changes'}}}*
-.. R23
+.. R13
-Before pulling the changes, we can use the command hg incoming to see the
-changes that have been made to the repository after our last pull and the
-changesets that will be coming into our repository after we do a pull.
+Before pulling the changes, we may use the command 'hg incoming'. This shows the
+changes that have been made to the repository, after our last pull and the
+changesets that will be coming into our repository, after we do a pull.
-.. L24
+.. L14
``$ hg incoming``
-.. R24
+.. R14
-To now pull these changes, we use the pull command.
+If you wish to pull those changes shown by 'hg incoming', we use the 'hg pull' command.
-.. L25
+.. L15
``$ hg pull``
-.. R25
+.. R15
These changes do not affect our working directory. To see this, we could use
-the hg parent command.
+the 'hg parent' command.
-.. L26
+.. L16
``$ hg parent``
-.. R26
+.. R16
-As you can see, the parent is still our last commit, and the changes are still
-not in your working directory.
+After pulling the changes, the parent will still be the last commit, and the
+changes are still not in the working directory.
-.. L27
+.. L17
-*{{{Show the slide 'Pulling Changes'}}}*
+*{{{Show the slide 'Pulling Changes 2'}}}*
-.. R27
+.. R17
-To get these changes we do the update as suggested by hg.
+To get these changes, we do the update as suggested by hg.
-.. L28
+.. L18
``$ hg update``
-.. R28
+.. R18
-As expected the update command updates the parent to the latest changes that we
+The update command updates the parent to the latest changes that we have
just pulled from the remote repository.
+
#. Updates to the tip if no revision is specified
- #. tip is the most recently added changeset
+ #. Tip is the most recently added changeset
#. Can specify revision number to update to
-For example
+You can try
-.. L29
+.. L19
``$ hg up -r1``
-.. R29
+.. R19
-hg tip shows the tip of the repository
+'hg tip' shows the tip of the repository
-.. L30
+.. L20
``$ hg tip``
-.. R31
+.. R20
-What happens when two users have made simultaneous changes to the same file,
-by editing different parts at the same time.
+Let see what happens when two users make simultaneous changes to the same file,
+by editing different (or) same parts of the file.
-.. L31
+.. L21
*{{{Show the slide 'Simultaneous Changes'}}}*
-.. R31
+.. R21
With simultaneous changes, following things happen
#. The logs of both repositories will be different
#. The repositories have diverged
- #. hg push fails, in such a scenario
-
-.. L32
-
-``$ hg push``
-
-``pushing to http://192.168.1.101:8000``
-
-``searching for changes``
-
-``abort: push creates new remote heads!``
+ #. 'hg push' fails, in such a scenario
-``(did you forget to merge? use push -f to force)``
-
-.. R32
Don't take the advice given by mercurial. Using the -f would be disastrous. We
-will leave out a discussion of that, for this course.
+will leave out a discussion on that, for this course.
-.. L33
+.. L22
*{{{Show the slide 'Merging'}}}*
-.. R33
+.. R22
-We will now need to pull the new changes that have been pushed to the
-repository after the last pull and merge them with the changes.
+The new changes that have been pushed to the
+repository after the last pull, has to be pulled and merged. So
+use following commands in order
-.. L34
+.. L24
``$ hg pull``
``$ hg merge``
-.. R34
+.. R24
-We have now pull the changes from the central repository and merged them with
-the changes in our repository. But, hg is warning us not to forget to commit.
+We have now pulled the changes from the central repository and merged them with
+the changes in our repository. As hg warns you, do not forget to commit.
-.. L35
+.. L25
``$ hg commit``
-.. R35
+.. R25
-We can now push this changes to the central repository. We could also check the
-changes that will be pushed, before pushing them, using the hg outgoing
+Now, the changes can be pushed to the central repository. We could also check
+the changes before pushing them, using the 'hg outgoing'
command.
-.. L36
+.. L26
*{{{Show the slide 'Outgoing Changes'}}}*
-.. L36
+.. L26
``$ hg outgoing``
``$ hg push``
-.. R36
+.. R26
-The changes have now been successfully pushed! Let us look at the web interface
-of the repo, to see that the changes have actually taken place.
+The changes have now been successfully pushed! Let us look at the 'web interface'
+of the repository, to see that the changes have actually taken place.
-.. L37
+.. L27
-Show the Change graph in browser.
+Show the 'Change graph' in the browser.
-.. R37
+.. R27
-What will happen if we edited the same portion of the file, at the same time?
-How would merges work? This will be the last thing that we are going to see in
+What will happen if we edit the same portion of the file, at the same time?
+How would merge work? This will be the last thing that we are going to see in
this part of the spoken tutorial.
-.. L38
+.. L28
*{{{Show the slide 'Simultaneous Conflicting Changes'}}}*
-.. R38
+.. R28
Let's say both of us edit the same part of the same file.
#. hg push fails
@@ -324,7 +307,7 @@ Let's say both of us edit the same part of the same file.
#. followed by hg merge
-.. L39
+.. L29
``$ hg commit``
@@ -334,7 +317,7 @@ Let's say both of us edit the same part of the same file.
``$ hg merge``
-.. R39
+.. R29
What happens now actually depends on how Mercurial is configured and the
programs available in your machine. You will either get a diff view with 3
@@ -344,113 +327,115 @@ conflicts occur.
If you get a 3 pane view, the first pane is the actual file, where you make
changes, to resolve the conflicts. The second pane shows the changes that you
made, to the file. The last pane shows the changes that you pulled from the
-original repo. Once you are satisfied with the changes, save and quit.
+original repository. Once you are satisfied with the changes, save and quit.
Once you are done, you need to tell mercurial that you have resolved the
conflicts manually.
-.. L40
+.. L30
``$ hg resolve -m filename``
-.. R40
+.. R30
-You will now need to commit your changes, just like the simple merge that we performed.
+You will now need to commit your changes, just like the simple merge.
-.. L41
+.. L31
``$ hg commit -m "Merge heads."``
``$ hg push``
-.. R41
+.. R31
We could look at the graph of the changes, in our web interface, which makes
clear how the merging has occurred.
-.. L42
+.. L32
Show the change graph in browser.
-.. R42
+.. R32
Here's an advice on the Work-flow to be followed.
-.. L43
+.. L33
*{{{Show the slide 'Advice: Work-flow}}}*
-.. R43
+.. R33
That brings us to the end of this tutorial on Mercurial. What we have covered
is nothing close to all the features of Mercurial. We've only scratched the
surface, but let's hope that this will get you started and you will be able to
organize your work and projects, better.
-.. L44
+.. L34
*{{{Show the 'summary' slide'}}}*
-.. R45
+.. R35
In this tutorial, we have learnt to,
-#. Clone repositories, using hg clone,
-#. Serve our repositories via http using hg serve,
-#. push changes to a repository using hg push,
-#. check the changesets in a repository after last pull, using hg incoming,
-#. pull changes from a repository using hg pull ,
-#. update the working directory, using hg update,
-#. merge two heads, using hg merge,
-#. and resolve conflicts using hg resolve.
+#. Clone repositories, using 'hg clone',
+#. Serve our repositories via http using 'hg serve',
+#. push changes to a repository using 'hg push',
+#. check the changesets in a repository after last pull, using 'hg incoming',
+#. pull changes from a repository using 'hg pull' ,
+#. update the working directory, using 'hg update',
+#. merge two heads, using 'hg merge',
+#. and resolve conflicts using 'hg resolve'.
-.. L46
+.. L36
*{{{Show the slide 'Evaluation'}}}*
-.. R46
+.. R36
Here are some self assessment questions for you to solve
- #. Mention the easiest way to get started on sharing your repository by providing a web interface
- #. Suppose Joey and Melissa have made simultaneous changes to the same file in their own systems. Would the output of hg parents before and after if one of them pulls in the changes and merges with it?
+ #. Mention the easiest way to get started on sharing your repository by
+ providing a web interface.
+ #. Suppose Melissa made some changes to files in the central repository. Would
+ Joey's local repository be automatically updated with these changes after he
+ has executed 'hg pull' command?
#. What are the commands involved in the process of merging changes?
-.. L47
+.. L37
*{{{ Show Solution of self assessment questions on slide }}}*
-.. R47
+.. R37
+
And the answers,
+
#. hg serve
- #. No, whenever we've done a merge, hg parents will display two parents until we hg commit the results of the merge.
- #. hg pull, hg merge, hg commit -m "Merged Remote changes"
+ #. No, Joey has to execute 'hg update' to apply the pulled
+ changes to his repository.
+ #. hg pull, hg merge, hg commit -m "Merged Remote changes"
-.. L48
+.. L38
*{{{Show the slide 'Additional Reading'}}}*
-.. R48
+.. R38
It is strongly recommended that you to go through the following topics, once
you are comfortable with using Mercurial on a day-to-day basis.
+
#. .hgignore
#. hg rollback
#. hg bisect
#. hg backout
-.. L49
+.. L39
{{{ Show the Thank you slide }}}
-.. R49
+.. R39
-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 third tutorial on 'Version
-Control using Hg'
+Hope you have enjoyed this tutorial and found it useful.
Thank you!
-
-
diff --git a/Version_Control/vcs4/vcs4_rec.rst b/Version_Control/vcs4/vcs4_rec.rst
new file mode 100644
index 0000000..8efd4f4
--- /dev/null
+++ b/Version_Control/vcs4/vcs4_rec.rst
@@ -0,0 +1,215 @@
+
+================================
+Version Control using Hg Part 4
+================================
+
+.. Prerequisites
+.. -------------
+
+.. Version Control using Hg Part 1, 2, 3
+
+
+.. Author : Primal Pappachan
+ Internal Reviewer :
+ Date: Jan 27, 2012
+
+======
+Script
+======
+
+
+
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{ Show the first slide containing title, name of the production team along | Hello friends and welcome to the fourth part of tutorial on 'Version Control wit |
+| with the logo of MHRD}}}* | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Prerequisite'}}}* | Please make sure that you have gone through the following tutorials before you |
+| | continue on this tutorial |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide containing the objectives}}}* | At the end of this tutorial you will be able to |
+| | #. Clone existing repositories |
+| | #. Share your repositories with peers |
+| | #. use version control for collaborating with your peers |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Cloning Repositories'}}}* | When motivating the use of version control systems, we spoke a lot about |
+| | collaboration and sharing our changes with our peers. Let us now see how we can |
+| | share our project with our peers and collaborate with them. |
+| | |
+| | For this purpose let us create a central repository, a copy of our repository, |
+| | which is different from the one in which we are working. The clone command is |
+| | used to clone or replicate an existing repository. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$hg clone SOURCE [DEST]`` | The syntax of the clone command is -- hg clone SOURCE [DEST], where the |
+| | optional argument DEST is being represented in brackets. The clone command can |
+| ``$ hg clone book book-repo`` | be used to replicate already existing repositories, either on your own machine |
+| | or on some remote machine somewhere on the network. Since, hg maintains a copy |
+| | of the full repository with every copy of the repository, the two copies that |
+| | we have are exactly equivalent. |
+| | |
+| | In this example book-repo shall be our central repository we are sharing with |
+| | peers. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Sharing Repositories'}}}* | A mercurial repository can be shared in multiple ways. We shall use the http |
+| | protocol to share the repository. Mercurial comes inbuilt with a tiny server |
+| | that can be used to share your repository over the network. To start sharing |
+| | the repository, we say |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$cd ../book-repo`` | This will start serving the repository on the network on the port 8000. Anybody |
+| | |
+| ``$hg serve`` | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| Open the url http://localhost:8000 in browser. | Now if your friend Primal wishes to clone the repository, use |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg clone http://my-ip-address:8000 book-primal`` | Now if Primal makes some changes to the repository and tries to commit it fails |
+| | obviously as access rights haven't been taken care of. |
+| | |
+| | By this process, we share a central repository; work on our local copies. It |
+| | doesn't make much sense to allow anybody to make changes to a public |
+| | repository, by default. We will need to make changes to the settings of the |
+| | repository to allow this. To set the write permissions, add the following lines |
+| | in .hg/hgrc |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``[web]`` | This will allow anybody to push to the repository, now. Primal can now push and |
+| | his changes will appear in the central repository. |
+| ``push_ssl=False`` | |
+| | |
+| ``allow_push=*`` | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Sharing Changes'}}}* | Use hg push to push your commits (changesets) to the central repository. The |
+| | changes made by Primal will appear in the central repository. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg push`` | Let us now pull these changes into our original repository that we have been |
+| | working with. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Pulling Changes'}}}* | Before pulling the changes, we can use the command hg incoming to see the |
+| | changes that have been made to the repository after our last pull and the |
+| | changesets that will be coming into our repository after we do a pull. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg incoming`` | To now pull these changes, we use the pull command. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg pull`` | These changes do not affect our working directory. To see this, we could use |
+| | the hg parent command. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg parent`` | As you can see, the parent is still our last commit, and the changes are still |
+| | not in your working directory. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Pulling Changes'}}}* | To get these changes we do the update as suggested by hg. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg update`` | As expected the update command updates the parent to the latest changes that we |
+| | just pulled from the remote repository. |
+| | |
+| | #. Updates to the tip if no revision is specified |
+| | #. tip is the most recently added changeset |
+| | #. Can specify revision number to update to |
+| | |
+| | For example |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg up -r1`` | hg tip shows the tip of the repository |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg tip`` | What happens when two users have made simultaneous changes to the same file, |
+| | by editing different parts at the same time. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Simultaneous Changes'}}}* | With simultaneous changes, following things happen |
+| | #. The logs of both repositories will be different |
+| | #. The repositories have diverged |
+| | #. hg push fails, in such a scenario |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg push`` | Don't take the advice given by mercurial. Using the -f would be disastrous. We |
+| | will leave out a discussion of that, for this course. |
+| ``pushing to http://192.168.1.101:8000`` | |
+| | |
+| ``searching for changes`` | |
+| | |
+| ``abort: push creates new remote heads!`` | |
+| | |
+| ``(did you forget to merge? use push -f to force)`` | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Merging'}}}* | We will now need to pull the new changes that have been pushed to the |
+| | repository after the last pull and merge them with the changes. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg pull`` | We have now pull the changes from the central repository and merged them with |
+| | the changes in our repository. But, hg is warning us not to forget to commit. |
+| ``$ hg merge`` | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg commit`` | We can now push this changes to the central repository. We could also check the |
+| | changes that will be pushed, before pushing them, using the hg outgoing |
+| | command. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg outgoing`` | The changes have now been successfully pushed! Let us look at the web interface |
+| | of the repo, to see that the changes have actually taken place. |
+| ``$ hg push`` | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| Show the Change graph in browser. | What will happen if we edited the same portion of the file, at the same time? |
+| | How would merges work? This will be the last thing that we are going to see in |
+| | this part of the spoken tutorial. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Simultaneous Conflicting Changes'}}}* | Let's say both of us edit the same part of the same file. |
+| | #. hg push fails |
+| | #. So we first do hg pull |
+| | #. followed by hg merge |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg commit`` | What happens now actually depends on how Mercurial is configured and the |
+| | programs available in your machine. You will either get a diff view with 3 |
+| ``$ hg push`` | panes or merge will insert markers in your file at the points where the |
+| | conflicts occur. |
+| ``$ hg pull`` | |
+| | If you get a 3 pane view, the first pane is the actual file, where you make |
+| ``$ hg merge`` | changes, to resolve the conflicts. The second pane shows the changes that you |
+| | made, to the file. The last pane shows the changes that you pulled from the |
+| | original repo. Once you are satisfied with the changes, save and quit. |
+| | |
+| | Once you are done, you need to tell mercurial that you have resolved the |
+| | conflicts manually. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg resolve -m filename`` | You will now need to commit your changes, just like the simple merge that we per |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| ``$ hg commit -m "Merge heads."`` | We could look at the graph of the changes, in our web interface, which makes |
+| | clear how the merging has occurred. |
+| ``$ hg push`` | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| Show the change graph in browser. | Here's an advice on the Work-flow to be followed. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Advice: Work-flow}}}* | That brings us to the end of this tutorial on Mercurial. What we have covered |
+| | is nothing close to all the features of Mercurial. We've only scratched the |
+| | surface, but let's hope that this will get you started and you will be able to |
+| | organize your work and projects, better. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the 'summary' slide'}}}* | |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| | In this tutorial, we have learnt to, |
+| | |
+| | #. Clone repositories, using hg clone, |
+| | #. Serve our repositories via http using hg serve, |
+| | #. push changes to a repository using hg push, |
+| | #. check the changesets in a repository after last pull, using hg incoming, |
+| | #. pull changes from a repository using hg pull , |
+| | #. update the working directory, using hg update, |
+| | #. merge two heads, using hg merge, |
+| | #. and resolve conflicts using hg resolve. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Evaluation'}}}* | Here are some self assessment questions for you to solve |
+| | #. Mention the easiest way to get started on sharing your repository by providi |
+| | #. Suppose Joey and Melissa have made simultaneous changes to the same file in |
+| | #. What are the commands involved in the process of merging changes? |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{ Show Solution of self assessment questions on slide }}}* | And the answers, |
+| | |
+| | #. hg serve |
+| | #. No, whenever we've done a merge, hg parents will display two parents until w |
+| | #. hg pull, hg merge, hg commit -m "Merged Remote changes" |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| *{{{Show the slide 'Additional Reading'}}}* | It is strongly recommended that you to go through the following topics, once |
+| | you are comfortable with using Mercurial on a day-to-day basis. |
+| | |
+| | #. .hgignore |
+| | #. hg rollback |
+| | #. hg bisect |
+| | #. hg backout |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| {{{ 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 third tutorial on 'Version |
+| | Control using Hg' |
+| | |
+| | Thank you! |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
diff --git a/ult/Documentation/5.1.rst b/ult/Documentation/5.1.rst
new file mode 100644
index 0000000..049309f
--- /dev/null
+++ b/ult/Documentation/5.1.rst
@@ -0,0 +1,43 @@
+
+5.1 Getting started with Sage notebook
+======================================
+
+1. Know about Sage
+ * What is Sage(0.30 - 0.52)
+ * Installing Sage(0.53 - 1.11)
+
+#. Start Sage shell (1.18 - 1.35)
+
+#. What is sage notebook and how to start the same (1.35 - 2.44)
+
+#. Create accounts and start using the notebook(2.45 - 4.13)
+
+#. Access the menus available on the notebook(4.15 - 5.07)
+
+#. Create new worksheets(5.08 - 5.30)
+
+#. Evaluate cells in the worksheet(5.31 - 6.20)
+
+#. Create new cells, delete the cells and navigate around the cells
+ * Creating new cells(6.21 - 6.45)
+ * Evaluating cells(6.45 - 7.21)
+ * Navigating around cells(7.22 - 7.35)
+ * Deleting cells(7.36 - 7.40)
+
+#. Make annotations in the worksheet(7.41 - 7.58)
+
+#. Embed code of other scripting languages in the cells
+ * HTML(7.59 - 9.27)
+ * Latex(9.28 - 9.59)
+
+#. Obtaining help and using tab completions
+ * help(10.01 - 10.46)
+ * tab completion(10.47 - 11.44)
+ * The three states(11.47 - 14.33)
+
+#. Summary(14.37 - 15.02)
+
+#. Evaluation Questions(15.04 - 15.34)
+
+
+
diff --git a/ult/Documentation/5.2.rst b/ult/Documentation/5.2.rst
new file mode 100644
index 0000000..d76e832
--- /dev/null
+++ b/ult/Documentation/5.2.rst
@@ -0,0 +1,32 @@
+
+5.2 Getting started with symbolics
+==================================
+
+1. Define symbolic expressions in sage(0.29 - 2.52)
+ * Exercise 1: Define given expressions as symbolic expressions(3.03 - 3.44)
+
+#. Use built-in constants and functions
+ * built-in constants(3.46 - 4.59)
+ * built-in functions(5.00 - 6.02)
+ * Exercise 2: Combined problem of built-in constants and functions(6.06 - 7.00)
+
+#. Define Symbolic functions
+ * Define arbitary functions(7.03 - 8.09)
+ * Define functions piecewise(8.10 - 9.19)
+ * Define functions convergent series & other series(9.20 - 11.37)
+ * Exercise 3:Define a piecewise function(11.43 - 12.57)
+
+#. Perform calculus using sage
+ * Differentiation(12.58 - 14.36)
+ * Integration(14.37 - 15.16)
+ * Find factors(15.17 - 15.45)
+ * Simplify(15.46 - 16.31)
+ * Find roots and substitute(16.32 - 18.02)
+ * Exercise 4: Perform calculus on given expressions(18.07 - 19.51)
+
+#. Matrices in Sage(19.52 - 20.56)
+ * Exercise 5: Find the determinant and inverse of the given expression(20.57 - 21.43)
+
+#. Summary(21.46 - 22.27)
+
+#. Evaluation Questions(22.28 - 23.2s1)
diff --git a/ult/Documentation/5.3.rst b/ult/Documentation/5.3.rst
new file mode 100644
index 0000000..098d0ab
--- /dev/null
+++ b/ult/Documentation/5.3.rst
@@ -0,0 +1,20 @@
+
+5.3 Using Sage
+==============
+
+1. Use functions for calculus(0.22 - 7.35)
+ * limits(0.30 - 1.46)
+ * differentiation(1.46 - 3.48)
+ * integration(3.50 - 5.14)
+ * taylor series(5.15 - 5.59)
+ * Matrix algebra(5.60 - 7.35)
+
+#. Create graphs(7.36 - 9.24)
+ * Simple graph(7.43 - 8.23)
+ * Directed graph(8.23 - 9.24)
+
+#. Use functions for Number theory(9.26 - 11.21)
+
+#. Summary(11.28 - 12.20)
+
+#. Evaluation Questions(12.21 - 14.02)
diff --git a/ult/Documentation/5.4.rst b/ult/Documentation/5.4.rst
new file mode 100644
index 0000000..69ac8a8
--- /dev/null
+++ b/ult/Documentation/5.4.rst
@@ -0,0 +1,20 @@
+
+5.4 Using Sage to teach
+=======================
+
+1. Use interactive features of SAGE(0.28 - 3.43)
+ * Exercise 1(3.48 - 4.44)
+ * use a range of values as default arguments(4.44 - 6.46)
+ * Exercise 2(6.50 - 8.39)
+ * use a list of items as default arguments(8.40 - 11.16)
+
+#. Publish our work(11.28 - 12.15)
+
+#. Edit a copy of one of the published worksheets(12.16 - 12.38)
+
+#. Share the worksheets with fellow users(12.44 - 13.19)
+
+#. Summary(13.23 - 13.36)
+
+#. Evaluation Questions(13.38 - 14.54)
+
diff --git a/ult/Documentation/6.1.rst b/ult/Documentation/6.1.rst
new file mode 100644
index 0000000..fbb28bd
--- /dev/null
+++ b/ult/Documentation/6.1.rst
@@ -0,0 +1,51 @@
+
+6.1 Basic Data types and operators
+==================================
+
+1. Understand the number Datatypes(0.28-231)
+ * int(0.50 - 2.15)
+ * float(2.16 - 3.04)
+ * complex(3.05 - 4.05)
+ * Exercise 1: Find the absolute value of the given complex number(4.10 - 4.35)
+ * Exercise 2: Find the datatype of the given number(4.44 - 5.11)
+
+
+#. Know the boolean datatype and operators -- +, *, /, **, % .
+ * Boolean(5.12 - 7.02)
+ * Operators(7.03 - 9.20)
+ * Exercise 3: Find square root of the given number(9.25 - 9.37)
+ * Exercise 4: Compare two expressions(9.38 - 10.23)
+
+
+#. Use the sequence data types -- List,String and Tuple
+ * What are Sequence data types(10.24 - 10.41)
+ * List(10.42 - 11.44)
+ * Strings(11.45 - 12.53)
+ * Tuples(12.54 - 3.12)
+
+#. Some imporant functions & methods
+ * Accessing(3.17 - 14.25)
+ * Addition(14.26 - 15.17)
+ * ``len'' function(15.18 - 15.45)
+ * Containership(15.45 - 16.18)
+ * max and min functions(16.18 - 16.38)
+ * get a sorted list(16.39 - 16.49)
+
+#. Slice sequences by using the row and column numbers.
+ * Slicing(16.50 - 18.31)
+ * Striding(18.32 - 19.24)
+
+#. Convert one data type to other
+ * Convert string to tuple and vice-versa(19.25 - 20.33)
+ * Convert one number type data structure to another(20.34 - 22.08)
+
+#. Split and join a list using ``split()`` and ``join()`` function respectively
+ * ``split()'' and ``join()'' functions(22.09 - 25.31)
+ * Exercise 5: Check if the given number is an element of a list(25.38 - 26.21)
+ * Exercise 6: Converting a string(26.31 - 27.09)
+
+#. Summary(27.13 - 27.52)
+
+#. Evaluation Questions(27.53 - 28.28)
+
+
diff --git a/ult/Documentation/6.2.rst b/ult/Documentation/6.2.rst
new file mode 100644
index 0000000..5f71f85
--- /dev/null
+++ b/ult/Documentation/6.2.rst
@@ -0,0 +1,23 @@
+
+6.2 Input Output
+================
+
+1. Print some value(0.26 - 1.58)
+
+#. Print using modifiers
+ * Using modifiers(1.59 - 3.01)
+ * Exercise 1(3.06 - 3.57)
+ * Another example using print(3.58 - 5.43)
+
+#. Take input from user
+ * raw_input(5.44 - 6.49)
+ * Exercise 2(6.58 - 7.53)
+ * Exercise 3(7.59 - 8.30)
+
+#. Display a prompt to the user before taking the input
+ * Display a prompt(8.31 - 8.53)
+ * Exercise 4(8.58 - 9.33)
+
+#. Summary(9.38 - 10.02)
+
+#. Evaluation Questions(10.04 - 11.22)
diff --git a/ult/Documentation/6.3.rst b/ult/Documentation/6.3.rst
new file mode 100644
index 0000000..03becb9
--- /dev/null
+++ b/ult/Documentation/6.3.rst
@@ -0,0 +1,18 @@
+
+6.3 Conditionals
+================
+
+1. Use if/else blocks(0.34 - 2.24)
+
+#. Use if/elif/else blocks(2.25 - 5.51)
+ * Exercise 1: Write an if else block for the given condition(5.56 - 6.28)
+
+#. Use the Ternary conditional statement - C if X else Y(6.29 - 7.52)
+ * Exercise 2: Write a ternary operator for the given problem(7.53 - 8.20)
+
+#. Use of ``pass'' statement(8.21 - 9.55)
+
+#. Summary(9.58 - 10.15)
+
+#. Evaluation Questions(10.18 - 11.16)
+
diff --git a/ult/Documentation/6.4.rst b/ult/Documentation/6.4.rst
new file mode 100644
index 0000000..0c84f08
--- /dev/null
+++ b/ult/Documentation/6.4.rst
@@ -0,0 +1,20 @@
+
+6.4 Loops
+=========
+
+1. Use the ``while`` loop(0.30 - 1.40)
+ * Exercise 1: Write a while loop for the given problem(1.45 - 2.25)
+
+#. Use the ``for`` loop(2.26 - 3.11)
+ * Exercise 2: Write a for loop for the given problem(3.17 - 3.45)
+
+#. Use ``break``, ``continue`` and ``pass`` statements to play around with loops(3.46 -)
+ * pass(3.51 - 4.20)
+ * break(4.20 - 5.41)
+ * continue(5.42 - 6.35)
+ * Exercise 3: Write a for loop using ``continue'' keyword(6.40 - 7.29)
+
+#. Summary(7.31 - 7.45)
+
+#. Evaluation Questions(7.48 - 8.35)
+
diff --git a/ult/Documentation/7.1.rst b/ult/Documentation/7.1.rst
new file mode 100644
index 0000000..ae746e0
--- /dev/null
+++ b/ult/Documentation/7.1.rst
@@ -0,0 +1,28 @@
+
+7.1 Manipulatin12.30g Lists
+======================
+
+1. Slicing
+ * Perform slicing on a list(0.33 - 2.26)
+ * Exercise 1: Obtain the primes less than 10, from the given list(2.34 - 2.58)
+ * Start and stop index in slicing(3.00 - 5.29)
+ * Exercise 2:Obtain all the multiples of three from the given list(5.47 - 6.10)
+
+#. Concatenate two lists
+ * Using the plus operator(6.12 - 7.12)
+
+#. Sorting lists
+ * Using the ``sort'' method(7.13 - 8.01)
+ * Using the ``sorted'' method(8.02 - 8.56)
+
+#. Reverse lists
+ * Using the ``reverse'' method(8.58 - 9.28)
+
+#. Striding
+ * Example which performs striding(8.58 - 9.47)
+ * Exercise 3: Obtain a list with marks in descending order from the given list(9.52 - 11.07)
+
+#. Summary(11.10 - 11.23)
+
+#. Evaluation Questions(11.25 - 12.30)
+
diff --git a/ult/Documentation/7.2.rst b/ult/Documentation/7.2.rst
new file mode 100644
index 0000000..5db4c81
--- /dev/null
+++ b/ult/Documentation/7.2.rst
@@ -0,0 +1,29 @@
+
+7.2 Manipulating strings
+========================
+
+1. Slice strings and get sub-strings out of them
+ * Check whether a particular string is valid for the given list(0.45 - 3.00)
+ * Exercise 1: Obtain a sub-string excluding the first and last characters
+ from the string s(3.08 - 4.10)
+
+#. Reverse strings.
+ * Finding out, if a given string is palindromic or not(4.11 - 5.24)
+
+#.Convert strings to upper or lower case.
+ * Converting a string to lower/upper case(5.25 - 6.49)
+ * Exercise 2: Combined exercise of sub-string and converting strings to upper/lower case(6.56 - 8.01)
+
+#. Replace characters in strings.
+ * Example of replacing special characters in strings(8.02 - 9.18)
+ * Exercise 3: Replace the ``[dot]`` with ``.``(9.27 - 10.06)
+
+#. Join a list of strings
+ * Example showing how to obtain one long string of e-mail addresses separated
+ by commas or semi-colons from a list of e-mail addresses(10.07 - 11.32)
+ * Exercise 4: Change the seperator from a given string(11.39 - 12.29)
+
+#. Summary(12.33 - 12.54)
+
+#. Evaluation Questions(12.56 - 14.10)
+
diff --git a/ult/Documentation/7.3.rst b/ult/Documentation/7.3.rst
new file mode 100644
index 0000000..fe63fd1
--- /dev/null
+++ b/ult/Documentation/7.3.rst
@@ -0,0 +1,19 @@
+
+7.3 Tuples
+===========
+
+1. What are tuples
+ * Definition with example(0.25 - 1.42)
+ * Differnce between tuples and lists(1.43 - 2.13)
+
+#. Immutability of tuples
+ * Exercise 1: Swap the values of a and b(2.29 - 4.18)
+
+#. Tuple packing and unpacking
+ * Tuple packing(4.19 - 5.01)
+ * Tuple unpacking(5.02 - 5.26)
+
+#. Summary(5.32 - 5.56)
+
+#. Evaluation Questions(5.57 - 7.12)
+
diff --git a/ult/Documentation/7.4.rst b/ult/Documentation/7.4.rst
new file mode 100644
index 0000000..171fbf8
--- /dev/null
+++ b/ult/Documentation/7.4.rst
@@ -0,0 +1,24 @@
+
+7.4 Dictionaries
+================
+
+1. Create dictionaries
+ * What are dictionaries(0.26 - 0.56)
+ * Creating an empty dictionary(1.06 - 1.31)
+ * Creating a non-empty dictionary(1.32 - 2.51)
+ * Accessing elements in a dictionary(2.52 - 3.55)
+
+#. Add and delete data from dictionaries
+ * Adding new items into dictionaries(4.05 - 4.35)
+ * Deleting items from dictionary(4.36 - 5.28)
+
+#. Check for container-ship of keys(5.29 - 6.05)
+
+#. Retrieve data from dictionaries(6.06 - 6.44)
+
+#. Iterate over elements
+ * Exercise 1: Print the keys and values in the dictionary one by one(6.48 - 7.34)
+
+#. Summary(7.38 - 8.09)
+
+#. Evaluation Questions(8.11 - 9.29)
diff --git a/ult/Documentation/7.5.rst b/ult/Documentation/7.5.rst
new file mode 100644
index 0000000..9d424c8
--- /dev/null
+++ b/ult/Documentation/7.5.rst
@@ -0,0 +1,24 @@
+
+7.5 Sets
+========
+
+1. Create sets from lists
+ * Definition of sets(0.35 - 0.51)
+ * Create a set(0.54 - 1.32)
+
+#. Perform union, intersection and symmetric difference operations
+ * Perform union on sets(1.33 - 2.49)
+ * Perform intersection on sets(2.50 - 3.03)
+ * Perform difference on sets(3.03 - 3.20)
+ * Obtain symmetric difference(3.21 - 3.44)
+
+#. Check if a set is a subset of other(3.46 - 4.36)
+
+#. Understand various similarities with lists like length and containership
+ * Iteration on sets(4.37 - 5.02)
+ * Length and containership(5.03 - 5.43)
+ * Exercise 1: List all the duplicates from a given list(5.49 - 7.29)
+
+#. Summary(7.33 - 8.03)
+
+#. Evaluation Questions(8.05 - 9.49)
diff --git a/ult/Documentation/8.1.rst b/ult/Documentation/8.1.rst
new file mode 100644
index 0000000..860f1f7
--- /dev/null
+++ b/ult/Documentation/8.1.rst
@@ -0,0 +1,28 @@
+8.1 getting started with functions
+==================================
+
+1. Define a function(0.40 - 1.08)
+ * Definition of a function(0.23 - 0.42)
+ * Defining and calling a mathematical function(0.48 - 2.18)
+ * Exercise 1: to write a function which calculates the cube of a number(2.19 - 3.04)
+ * Example of a function without arguments(3.05 - 3.56)
+
+#. Define functions with arguments
+ * Exercise 2: to write a function which calculates the average of 2 numbers(3.57 - 5.05)
+
+#. Docstrings
+ * Know what are docstrings(5.06 - 7.01)
+ * examples of docstrings like avg and f(7.02 - 7.47)
+ * Exercise 3:To add docstring to a function(7.48 - 8.31)
+
+#. Exercise 3:Combined exercise of a function with docstring(8.32 - 10.02)
+
+#. Function return value
+ * How can function return any number of values(10.03 - 10.38)
+
+#. Read Codes
+ * Few code reading exercises(10.39 - 14.12)
+
+#. Summary(14.13 - 14.38)
+
+#. Evaluation Questions(14.39 - 15.48)
diff --git a/ult/Documentation/8.2.rst b/ult/Documentation/8.2.rst
new file mode 100644
index 0000000..d5ae3ed
--- /dev/null
+++ b/ult/Documentation/8.2.rst
@@ -0,0 +1,23 @@
+8.2 Advanced features of functions
+==================================
+
+1. Assign default values to arguments
+ * use of function as an example to understand what a
+ default value of an argument means(0.42 - 2.40)
+
+#. Calling function with their default arguments
+ * An example to explain how a function is called by it's arguments(2.41 - 4.01)
+ * Exercise 1: Redifine a function by interchaning it's default arguments(4.06 - 4.51)
+ * Exercise 2: make a note of all the arguments with default values for 'linspace'(4.57 - 5.28)
+ * Exercise 3: Call a function without any arguments(5.34 - 6.18)
+
+#. Define and call functions with keyword arguments
+ * Explanation with examples of keyword arguments(6.19 - 8.28)
+
+#. Built-in functions available in Python standard library and the scientific computing libraries
+ * What are built-in functions(8.36 - 9.07)
+ * Classes of functions in pylab, scipy(9.08 - 9.44)
+
+#. Summary(9.45 - 10.02)
+
+#. Evaluation Questions(10.03 - 11.34)
diff --git a/ult/Documentation/8.3.rst b/ult/Documentation/8.3.rst
new file mode 100644
index 0000000..5178881
--- /dev/null
+++ b/ult/Documentation/8.3.rst
@@ -0,0 +1,20 @@
+
+8.3 Using Python Modules
+========================
+
+1. Execute python scripts from command line
+ * An example to show how a script can be executed from the command line (0.31 - 2.17)
+ * Syntax to perform the execution (2.18 - 2.25)
+
+#. Import modules
+ * Example to import scipy and pylab module (2.26 - 5.28)
+ * Better way of importing (5.29 - 7.54)
+ * Exercise 1: plot a sine wave from minus two pi to two pi(7.59 - 9.02)
+
+#. Use python standard modules and 3rd party modules
+ * what is a module (9.04 - 9.22)
+ * Python standard library(9.23 - 10.30)
+
+#. Summary(10.34 - 10.51)
+
+#. Evaluation Questions(10.53 - 12.15)
diff --git a/ult/Documentation/8.4.rst b/ult/Documentation/8.4.rst
new file mode 100644
index 0000000..bc00a2b
--- /dev/null
+++ b/ult/Documentation/8.4.rst
@@ -0,0 +1,15 @@
+
+8.4 Writing Python scripts
+==========================
+
+1. What is importing
+ * Definition (0.25 - 0.36)
+ * Example of a gcd function (0.37 - 3.28)
+ * Importing the the gcd function to another location (3.29 - 5.22)
+
+#. Understand the ``__name__=="__main__"`` idiom
+ * How ``__name__=="__main__"`` works (5.23 - 8.06)
+
+#. Summary(8.10 - 8.20)
+
+#. Evaluation Questions(8.21 - 9.31)
diff --git a/ult/Documentation/8.5.rst b/ult/Documentation/8.5.rst
new file mode 100644
index 0000000..02c2353
--- /dev/null
+++ b/ult/Documentation/8.5.rst
@@ -0,0 +1,41 @@
+
+8.5 Testing and debugging
+=========================
+
+1. Understand what is software testing
+ * Definition (0.28 - 0.36)
+
+#. Test simple functions for their functionality
+ * Example using gcd function (0.37 - 2.19)
+ * Use of __name__ == '__main__': (2.21 - 3.26)
+
+#. Automate tests.
+ * Exercise 1: Write tests for gcd code (3.42 - 5.14)
+ * Exercise 2: Write automated tests for LCM (5.21 - 5.54)
+
+#. Understand the need for coding style
+ * What is the need for coding style (6.15 - 6.29)
+ * Naming variables (6.36 - 7.24)
+ * Code style points (7.26 - 7.59)
+ * Exercise 3: Give meaningful names to the variables in a code(8.04 - 8.21)
+
+#. Handle Errors and Exceptions
+ * Example of an error (8.28 - 9.21)
+ * Use Exception in programs (9.21 - 11.22)
+ * Understand the debugging process (10.33 - 11.52)
+ * How to debug a program in python (11.56 - 13.19)
+
+#. Summary(13.21 - 13.37)
+
+#. Evaluation Questions(13.41 - 14.38)
+
+
+
+
+
+
+
+
+
+ #. Learn some of the standards followed by the Python Community.
+ .