summaryrefslogtreecommitdiff
path: root/Version_Control/vcs2/vcs2twocol.rst
diff options
context:
space:
mode:
Diffstat (limited to 'Version_Control/vcs2/vcs2twocol.rst')
-rw-r--r--Version_Control/vcs2/vcs2twocol.rst195
1 files changed, 195 insertions, 0 deletions
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 |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+