versionControl/handOut.rst
author Puneeth Chaganti <punchagan@fossee.in>
Sun, 30 Jan 2011 11:13:06 +0530
changeset 139 d309b09761b9
parent 136 68508b5175db
child 143 fde473906aac
permissions -rw-r--r--
vcs: Add note about binary files in handout Added a note about using binary files in a version control system and the diffs that would appear.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
60
8a36825e21c5 Arithmetic section, typo correction, eg script.
Shantanu <shantanu@fossee.in>
parents: 54
diff changeset
     1
===============
8a36825e21c5 Arithmetic section, typo correction, eg script.
Shantanu <shantanu@fossee.in>
parents: 54
diff changeset
     2
Version Control
8a36825e21c5 Arithmetic section, typo correction, eg script.
Shantanu <shantanu@fossee.in>
parents: 54
diff changeset
     3
===============
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
     4
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
     5
Introduction
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
     6
============
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
     7
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
     8
Version control is just a way to track your files over time and share them.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
     9
This allows you to go back to older versions when something goes wrong, see
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    10
what changed when and why, collaborate on a single piece of work with a bunch
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    11
of people. 
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    12
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    13
Like this
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    14
`blog <http://karlagius.com/2009/01/09/version-control-for-the-masses/>`_
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    15
aptly points out, "Version control is one of those weird, geeky things that
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    16
never really gained much ground in non-geek fields, despite the fact that
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    17
it’s blindingly useful." In this course, we are going to see a handful of
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    18
such things, which are widely used in the programmer world, but not so much
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    19
in the scientific computing world, even when if they would be very useful.
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    20
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    21
Version control is just a way of backing up your files, before making changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    22
to it. Most people would have cooked up their own version control system,
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    23
without realizing, there are tools built by others, which make this task much
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    24
more organized and systematic. You surely would've saved your files, some
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    25
time or the other as ``oldproject.py``, ``latestproject.py`` and so on, or
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    26
date-tagging them as ``project-21-01-10.py``, ``project-20-02-10.py`` and so
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    27
on. 
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    28
136
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
    29
It is, in some ways, similar to playing a video game. We generally play games
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
    30
in stages, saving the game, each time we finish a stage or complete a task.
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
    31
We continue playing, but we could, if necessary, choose to go back to one of
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
    32
the saved states and start over. In this manner we could change the state of
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
    33
the game. 
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
    34
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    35
Why Use Version Control
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
    36
=======================
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
    37
 
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    38
We have seen that one of the main motivation to use a version system control
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    39
system is the ability to go back to a working version of the file, when
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    40
something stops working. Below are a few more advantages of using an
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    41
automated version control system.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    42
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    43
    - It tracks the history and evolution of a project. It allows you to
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    44
      track what changes were made at what point of time, when and by whom. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    45
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    46
    - If you are collaborating, as a team on a project, a version control
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    47
      system will make it much easier for you to collaborate. It allows you
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    48
      to work simultaneously on the same file, without worrying about merging
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    49
      your changes. 
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    50
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    51
    - A good version control system will help you efficiently track down bugs
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    52
      and pin-point the changes that introduced the bug, reducing your
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    53
      debugging time. 
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    54
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    55
Version control is as useful for a one man show, as it is for a big group of
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    56
people working on a project. As a student, you can use it to maintain your
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    57
course work, too. You could maintain a version controlled repository with all
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    58
your code, assignments, and other documents. Keeping your stuff version
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    59
controlled will help avoid accidental deletion of individual files etc.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    60
Hosting it on a remote server will protect you from a local hard disk crash. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    61
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    62
Mercurial
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    63
=========
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    64
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    65
Some of Version Control Tools available and used widely are:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    66
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    67
  - ``cvs`` (Concurrent Versions System)
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    68
  - ``svn`` (Subversion)
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    69
  - ``hg`` (Mercurial)
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    70
  - ``git`` 
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    71
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    72
Each of these tools have some unique functionality and their own merits and
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    73
de-merits. In this course, we shall learn to use Mercurial or ``hg``.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    74
Once you know how to use ``hg``, you could easily try other tools and switch
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    75
to one that you feel most comfortable with.
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    76
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    77
Why ``hg`` ?
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    78
------------
15
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
    79
96
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
    80
   - easy to learn and use.
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
    81
   - lightweight.
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
    82
   - scales excellently.
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
    83
   - based on Python.
15
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
    84
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    85
Installation
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    86
------------
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
    87
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    88
- For Linux based systems, hg is available in most of package management. So
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    89
  for say Ubuntu systems::
96
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
    90
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
    91
   $ sudo apt-get install mercurial
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
    92
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    93
  will be all you need to install hg. Similarly Fedora users can use yum to
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    94
  install hg.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    95
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    96
- For Windows and Mac OS X systems the setup can be downloaded from
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    97
  http://mercurial.selenic.com/downloads/ and standard installation can be
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    98
  followed.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
    99
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   100
Just say ``hg`` in your shell, to see some of the commands that ``hg``
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   101
provides and say ``hg version`` to see the version of ``hg`` that has
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   102
been installed on your system. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   103
136
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   104
Let there be a Repository
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   105
=========================
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   106
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   107
To start using Mercurial (or ``hg``) and get the benefits of using a version
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   108
control system, we should first have a **repository**. A repository is a
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   109
folder with all your files and a store of all the changes that were made to
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   110
it. To save disk space, ``hg`` doesn't save all the files, but only saves
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   111
only a series of changes made to the files.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   112
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   113
We have talked of an example of how we cook up our own version control
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   114
systems. Mercurial does almost the same thing with one major difference. It
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   115
doesn't keep track of individual files. It keeps snapshots of the whole
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   116
directory (or repository), instead of individual files.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   117
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   118
A repository can either be started using an ``init`` command or an existing
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   119
repository could be **cloned**.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   120
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   121
Let us look at creating our own repository, now. We can look at obtaining
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   122
already existing repositories, at a later stage.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   123
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   124
Let's say we have a folder called ``book``, which has all the chapters of a
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   125
book as text files. Let us convert that folder, into a ``hg`` repository.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   126
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   127
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   128
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   129
    $ cd book/
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   130
    $ ls -a
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   131
    . .. chapter1.txt chapter2.txt chapter3.txt 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   132
    $ 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   133
    
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   134
We have three chapters in the folder. We convert this folder into a mercurial
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   135
repository using the ``hg init`` command
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   136
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   137
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   138
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   139
    $ hg init
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   140
    $ ls -a
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   141
    . .. .hg chapter1.txt chapter2.txt chapter3.txt 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   142
    $ 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   143
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   144
The ``.hg`` directory indicates that our book directory is now a ``hg``
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   145
repository. Mercurial keeps all the history of the changes made, and a few
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   146
other config files, etc. in this directory. The directory, ``book`` is called
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   147
our **working directory**. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   148
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   149
Adding Files
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   150
------------
96
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
   151
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   152
We now have a fresh repository, but all our files are not being tracked or
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   153
watched by ``mercurial``, yet. We need to explicitly ask it to watch the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   154
files, that we want it to.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   155
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   156
To see this use the ``hg status`` command. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   157
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   158
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   159
    $ hg status
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   160
    ? chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   161
    ? chapter2.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   162
    ? chapter3.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   163
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   164
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   165
We see the three files for the chapters, but they are preceded by a ``?``
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   166
mark. What does it mean?
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   167
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   168
We use the ``help`` command to see what this means. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   169
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   170
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   171
    $ hg help status 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   172
    ...
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   173
    The codes used to show the status of files are:
96
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
   174
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   175
      M = modified
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   176
      A = added
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   177
      R = removed
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   178
      C = clean
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   179
      ! = missing (deleted by non-hg command, but still tracked)
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   180
      ? = not tracked
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   181
      I = ignored
136
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   182
        = origin of the previous file listed as A (added)        
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   183
    ...
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   184
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   185
By looking at the codes, it is clear that our files are not *yet* being
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   186
tracked by ``hg``. We now use the add command to ask ``hg`` to track these
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   187
files.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   188
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   189
The ``status`` command gives the *status* of our working-directory at this
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   190
point in time. Using this command after every ``hg`` command you use, is a
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   191
good idea, at least until you are reasonably comfortable with the use of
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   192
``hg``.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   193
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   194
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   195
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   196
    $ hg add
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   197
    adding chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   198
    adding chapter2.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   199
    adding chapter3.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   200
    $ hg status
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   201
    A chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   202
    A chapter2.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   203
    A chapter3.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   204
    $
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   205
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   206
This simply adds all the files in the (working) directory, to the repository.
136
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   207
As expected, the ``status`` command shows an ``A`` before he file names. We
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   208
could also specify files individually, for example
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   209
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   210
::
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   211
    $ hg add chapter1.txt
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   212
    adding chapter1.txt
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   213
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   214
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   215
Taking Snapshots
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   216
----------------
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   217
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   218
We have added a set of new files to the repository, but we haven't told
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   219
mercurial to remember these changes, i.e., to take a snapshot at this point
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   220
in time. We do this by using the ``commit`` command.
15
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   221
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   222
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   223
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   224
    $ hg commit 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   225
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   226
We are now prompted with a new editor window. We type out our message here
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   227
describing the changes that we have made.
15
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   228
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   229
::
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   230
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   231
    Initial Commit
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   232
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   233
    HG: Enter commit message.  Lines beginning with 'HG:' are removed.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   234
    HG: Leave message empty to abort commit.
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   235
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   236
Mercurial has now taken a snapshot of our repository and has attached our
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   237
description along with it. To see the status of the files in the repository,
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   238
use the ``hg status`` command. 
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   239
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   240
::
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   241
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   242
    $ hg st
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   243
    $
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   244
    
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   245
The command does not return anything, when there are no uncommitted changes.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   246
Also, notice that I have started getting lazy and used only a short name
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   247
``st`` for the status command. Mercurial accepts short names, as long as they
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   248
can be disambiguated (just like tab completion).
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   249
136
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   250
Snapshot's Thumbnail views
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   251
--------------------------
96
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
   252
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   253
To see the history of the changes to our repository, we use ``hg log``. We
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   254
can view the change that we just made to our repository.
96
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
   255
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   256
::
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   257
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   258
    $ hg log
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   259
    changeset:   0:cbf6e2a375b4
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   260
    tag:         tip
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   261
    user:        punchagan@shrike.aero.iitb.ac.in
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   262
    date:        Fri Jan 28 14:04:07 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   263
    summary:     Initial Commit
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   264
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   265
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   266
As we already discussed, mercurial keeps track of the changes that are made
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   267
to the files in the repository. Notice, that our ``log`` is showing a
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   268
**changeset**. A change set is nothing but a set of changes made to the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   269
repository between two consecutive commits (the action of taking snapshots).
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   270
Notice that ``hg`` also shows the date at which the commit was made and the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   271
description of the changeset.
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   272
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   273
User information
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   274
----------------
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   275
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   276
But there is a slight problem with the user details that mercurial is saving.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   277
It saves my username with my machine name. It is a general good practice to
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   278
use your full name with your email id. We set our username in the ``.hgrc``
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   279
file in our Home folder. (``$HOME/.hgrc`` on Unix like systems and
136
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   280
``%HOME%\.hgrc`` on Windows systems) This is a global setting for all the
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   281
projects that we are working on. We could also set the details, at a
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   282
repository level. We shall look at this in due course. 
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   283
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   284
We open the file in our favorite editor and add the username details. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   285
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   286
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   287
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   288
    $ emacs ~/.hgrc  
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   289
    [ui]
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   290
    username = Puneeth Chaganti <punchagan@fossee.in>
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   291
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   292
We have now set the username details for mercurial to use, in all our future
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   293
commits. (Note: You can also set user preferences at the repository level.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   294
Exercise-N asks you to do that)
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   295
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   296
Let us now make another commit to see if this has taken effect. Let us
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   297
add author information to all the chapters that we have. 
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   298
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   299
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   300
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   301
    Author: Puneeth Chaganti <punchagan@fossee.in>
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   302
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   303
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   304
Once we have added this to all the files, let us commit this change. We again
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   305
used the ``hg commit`` command to commit the changes that we have made.
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   306
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   307
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   308
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   309
    $ hg commit
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   310
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   311
We are again prompted with the editor window to enter our commit message and
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   312
we type out our commit message. There are some good practices when typing out
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   313
a commit message too. It is a general practice to have a summary line in the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   314
commit message which is no longer than 60 to 65 characters giving a summary
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   315
of the change we have made. This is followed up with an explanation of why
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   316
this was changed, what is the effect of this change, known bugs/issues
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   317
remaining, if any, etc.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   318
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   319
::
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   320
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   321
    Add author info to all the chapters
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   322
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   323
    All the chapters must have an author info. Added Puneeth Chaganti
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   324
    as the author. New authors can be added in newlines.              
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   325
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   326
    HG: Enter commit message.  Lines beginning with 'HG:' are removed.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   327
    HG: Leave message empty to abort commit.
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   328
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   329
``hg log`` should now show us both the changes that we have made. Notice that
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   330
the username settings are being used and also, the summary of the changeset
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   331
shows only the first line in the description that we have added. Also, notice
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   332
that ``hg`` shows the commits in the reverse chronological order, which is
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   333
useful.
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   334
136
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   335
But why commit?
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   336
===============
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   337
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   338
You must already be wondering, why we need all the overhead of
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   339
``commit`` and ``log``, etc. What is all this fuss about? "Isn't it
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   340
just a waste of time?"
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   341
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   342
Reverting Changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   343
-----------------
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   344
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   345
While you were wondering, let's say your friend walks in and together you
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   346
make a lot of changes.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   347
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   348
1. You replace all the occurrences of ``&`` in ``chapter1.txt`` with
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   349
``and``. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   350
2. You delete the ``chapter3.txt`` file. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   351
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   352
::
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   353
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   354
    $ rm chapter3.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   355
    $ hg st
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   356
    M chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   357
    ! chapter3.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   358
    $ 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   359
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   360
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   361
But after a while, you realize that these changes are unwarranted. You
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   362
want to go back to the previous state, undoing all the changes that
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   363
you made, after your friend arrived. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   364
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   365
The undo in your editor may allow undoing the first change (if you
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   366
haven't closed it after making the changes) but there's no way you
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   367
could get back your ``chapter3.txt`` file, using your editor. But
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   368
don't worry. Mercurial to the rescue!
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   369
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   370
We shall use the ``revert`` command of ``hg`` to undo all the changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   371
after the last commit. As we want to undo all the changes, we use the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   372
``revert`` command with the ``--all`` argument. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   373
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   374
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   375
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   376
    $ hg revert --all
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   377
    reverting chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   378
    reverting chapter3.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   379
    $ hg st
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   380
    ? chapter1.txt.orig
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   381
    $ ls
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   382
    chapter1.txt  chapter1.txt.orig  chapter2.txt  chapter3.txt
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   383
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   384
As you can see the ``chapter3.txt`` file has been restored. But ``hg``
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   385
gives you a new file ``chapter1.txt.orig``. Mercurial actually doesn't
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   386
like to delete any of the changes that you have made. So, it makes a
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   387
back-up of the file ``chapter1.txt`` in the present state and gives
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   388
you back the old file. 
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   389
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   390
If we now decide, that we want to ``redo`` the changes that we had
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   391
done to the ``chapter1``, we can just overwrite the ``chapter1.txt``
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   392
file with the backed up file. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   393
::
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   394
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   395
    $ mv chapter1.txt.orig chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   396
    $ hg st
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   397
    M chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   398
    $
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   399
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   400
Viewing Changes
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   401
---------------
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   402
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   403
Let's say we now want to ``commit`` these changes, but we are not sure
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   404
of all the changes that we have made to the file, since it's been a
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   405
while after we made the changes. We could use the ``diff`` command to
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   406
see all the changes that have been made in the file. 
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   407
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   408
::
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   409
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   410
    $ hg diff
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   411
    diff -r 3163b8db10bb chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   412
    --- a/chapter1.txt	Fri Jan 28 16:21:29 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   413
    +++ b/chapter1.txt	Fri Jan 28 16:22:41 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   414
    @@ -8,9 +8,9 @@
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   415
       1 Session
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   416
     Table of Contents
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   417
     =================
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   418
    -1 Introduction & Motivation 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   419
    -2 Creating & Getting repositories 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   420
    +1 Introduction and Motivation 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   421
    +2 Creating and Getting repositories 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   422
     3 Revision history 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   423
    -4 Making & sharing changes 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   424
    -5 Merges & Conflicts 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   425
    +4 Making and sharing changes 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   426
    +5 Merges and Conflicts 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   427
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   428
You see some cryptic output, but it's essentially giving you the list
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   429
of changes made to the file. All the lines that were deleted are
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   430
preceded by a ``-`` and all the new-lines are preceded by a ``+``. You
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   431
can see that the ``&`` occurrences have been replaces with ``and``. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   432
139
d309b09761b9 vcs: Add note about binary files in handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 136
diff changeset
   433
We should note here that, the ``diff`` wouldn't make much sense, if we had
d309b09761b9 vcs: Add note about binary files in handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 136
diff changeset
   434
some binary files like ``.jpg`` or ``.pdf`` files. We would see some
d309b09761b9 vcs: Add note about binary files in handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 136
diff changeset
   435
gibberish in the output. 
d309b09761b9 vcs: Add note about binary files in handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 136
diff changeset
   436
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   437
Let us now commit this change. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   438
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   439
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   440
    $ hg commit
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   441
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   442
    Replace all occurrences of & with and
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   443
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   444
    On the suggestion of Madhusudan C S. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   445
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   446
    HG: Enter commit message.  Lines beginning with 'HG:' are removed.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   447
    HG: Leave message empty to abort commit.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   448
    
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   449
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   450
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   451
    $ hg log    
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   452
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   453
We can see the history of all the commits that we have made in our
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   454
project. As you can see, the logs have started getting longer (and
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   455
hence have been dropped from the output) and may even be getting out
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   456
of our screens. Also, we are not very interested in all the commits in
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   457
the project. We usually want to see the last few commits. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   458
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   459
Revision Numbering
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   460
------------------
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   461
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   462
Let us now see how to get logs of specific commits and a range of
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   463
commits. Have a look at the logs that the previous ``log`` command has
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   464
printed and look at the ``changeset`` line. It shows a number followed
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   465
by a semi-colon and some long hexa-decimal string. The number is
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   466
called the **revision number**. It is an identifier for the commit,
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   467
and can be along with various commands to specify the revision number,
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   468
if required. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   469
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   470
Let us now check the logs of the very first commit of the project.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   471
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   472
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   473
    $ hg log -r0
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   474
    changeset:   0:cbf6e2a375b4
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   475
    tag:         tip
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   476
    user:        punchagan@shrike.aero.iitb.ac.in
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   477
    date:        Fri Jan 28 14:04:07 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   478
    summary:     Initial Commit
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   479
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   480
Now, if we wish to get the logs of the latest commit only, how do we
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   481
do it? We could specify the exact revision number of the commit (2) or
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   482
just use -1 to start counting in the reverse chronological order. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   483
::
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   484
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   485
    $ hg log -r-1
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   486
    changeset:   2:98f7f4a1bb4d
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   487
    tag:         tip
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   488
    user:        Puneeth Chaganti <punchagan@fossee.in>
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   489
    date:        Fri Jan 28 16:24:42 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   490
    summary:     Replace all occurrences of & with and
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   491
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   492
You could also specify a range of commits whose logs you would like to
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   493
see. Say, we would like to see the last two commits, 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   494
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   495
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   496
    $ hg log -r-1:-2
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   497
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   498
This is equivalent to using the following     
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   499
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   500
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   501
        $ hg log -r2:1
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   502
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   503
You could also see the changes made to a particular file, in the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   504
specified range of the commits. Say, we wish to see the changes made
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   505
to the ``chapter2.txt`` file in the last two commits. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   506
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   507
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   508
    $ hg log -r-1:-2 chapter2.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   509
    changeset:   1:3163b8db10bb
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   510
    user:        Puneeth Chaganti <punchagan@fossee.in>
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   511
    date:        Fri Jan 28 16:21:29 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   512
    summary:     Add author info to all the chapters
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   513
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   514
Notice that it shows only the logs of revision 1, since no changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   515
were made to the specified file in the second commit. 
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   516
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   517
You can do all of this with the ``diff`` command to see the exact
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   518
changes made to the files, instead of seeing the ``log`` message. This
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   519
will be a part of your exercises. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   520
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   521
Collaborating with Mercurial
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   522
============================
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   523
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   524
When motivating the use of version control systems, we spoke a lot about
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   525
collaboration and sharing our changes with our peers. Let us now see how we
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   526
can share our project with our peers and collaborate with them. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   527
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   528
Cloning Repositories
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   529
--------------------
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   531
For this purpose let us create a central repository, a copy of our
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   532
repository, which is different from the one in which we are working. The
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   533
``clone`` command is used to **clone** or replicate an existing repository.
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   534
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   535
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   536
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   537
    $ hg clone book book-repo
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   538
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   539
This creates a copy of our repository, ``book``, with the name ``book-repo``.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   540
The syntax of the ``clone`` command is -- ``hg clone SOURCE [DEST]``, where
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   541
the optional argument DEST is being represented in brackets. Here we are
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   542
giving book-repo as the destination. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   543
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   544
The clone command can be used to replicate already existing repositories,
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   545
either on your own machine or on some remote machine somewhere on the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   546
network. Since, ``hg`` maintains a copy of the full repository with every
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   547
copy of the repository, the two copies that we have are exactly equivalent.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   548
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   549
``book-repo`` is the repository we shall be using as a central repository
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   550
and share it with our peers. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   551
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   552
Sharing Repositories
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   553
--------------------
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   554
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   555
A mercurial repository can be shared in multiple ways. We shall use the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   556
``http`` protocol to share the repository. Mercurial comes inbuilt with a
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   557
tiny server that can be used to share your repository over the network. To
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   558
start sharing the repository, we say 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   559
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   560
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   561
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   562
    $ cd ../book-repo
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   563
    $ hg serve 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   564
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   565
This will start serving the repository on the network on the port 8000.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   566
Anybody in your network can access the repository in their browsers. Let us
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   567
see how it looks, in our own browser. We open the url `http://localhost:8000`
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   568
in our browser.     
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   569
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   570
Let's say, our friend Madhu, now wants  to clone this repository. He will use
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   571
our ip-address and the port on which  we are serving the repository, to clone
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   572
the repository. Instead of using two machines, for the purposes of
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   573
demonstration, we shall clone into our own machine, with a different name. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   574
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   575
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   576
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   577
    $ hg clone http://192.168.1.101:8000 book-madhu
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   578
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   579
This will clone the repository to the folder, ``book-madhu``. The log of the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   580
repository will, obviously, be the same as our original repository. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   581
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   582
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   583
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   584
    $ hg log
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   585
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   586
Sharing Changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   587
---------------
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   588
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   589
Let's say, Madhu now makes some changes to the repository. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   590
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   591
1. He adds his name to the Authors list. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   592
2. He moves down the Getting repositories part into a different section.  
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   593
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   594
::
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   595
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   596
    $ hg diff
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   597
    diff -r 98f7f4a1bb4d chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   598
    --- a/chapter1.txt	Fri Jan 28 16:24:42 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   599
    +++ b/chapter1.txt	Fri Jan 28 23:03:37 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   600
    @@ -2,6 +2,7 @@
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   601
                            =======================
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   602
     
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   603
     Author: Puneeth Chaganti <punchagan@fossee.in>
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   604
    +        Madhusudan CS <madhusudancs@fossee.in>
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   605
     Date: 2011-01-28 13:58:47 IST
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   606
     
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   607
     
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   608
    @@ -9,8 +10,9 @@
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   609
     Table of Contents
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   610
     =================
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   611
     1 Introduction and Motivation 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   612
    -2 Creating and Getting repositories 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   613
    +2 Creating 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   614
     3 Revision history 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   615
     4 Making and sharing changes 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   616
    -5 Merges and Conflicts 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   617
    +5 Getting repositories 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   618
    +6 Merges and Conflicts  
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   619
    $
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   620
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   621
He then commits these changes and **pushes** them to the central repository
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   622
that we have created. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   623
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   624
::
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   625
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   626
    $ hg commit
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   627
    $ hg push
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   628
    pushing to http://192.168.1.101:8000 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   629
    searching for changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   630
    ssl required
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   631
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   632
The push failed, obviously, since we have not taken care of access rights
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   633
etc. It doesn't make much sense to allow anybody to make changes to a public
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   634
repository, by default. We will need to make changes to the settings of the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   635
repository to allow this. **Note**: This is obviously not a safe way to share
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   636
your repository, but for our purposes, this is sufficient.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   637
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   638
We add the following lines to the ``.hg/hgrc`` of the ``book-repo``
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   639
repository. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   640
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   641
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   642
    [web]
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   643
    push_ssl=False
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   644
    allow_push=*
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   645
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   646
This will allow anybody to push to the repository, now. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   647
136
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   648
By the way, this ``hgrc`` is a repository level configuration file. We could
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   649
also set the details of the user information in this file. 
68508b5175db vcs: Minor changes to handout
Puneeth Chaganti <punchagan@fossee.in>
parents: 135
diff changeset
   650
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   651
Madhusudan can now push and his changes will appear in the central
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   652
repository. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   653
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   654
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   655
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   656
    $ hg push
96
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
   657
    
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   658
Let's confirm it in the web interface that we started with the ``hg serve``
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   659
command. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   660
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   661
Pulling Changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   662
---------------
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   663
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   664
Let us now **pull** these changes into our original repository ``book`` that
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   665
we have been working with. Before pulling the changes, we can use the command
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   666
``hg incoming`` to see the changes that have been made to the repository
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   667
after our last **pull** and the changesets that will be coming into our
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   668
repository after we do a **pull**. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   669
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   670
::
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   671
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   672
    $ hg incoming
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   673
    abort: repository default not found!
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   674
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   675
What is going on here? This is because, we didn't clone our repository
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   676
``book`` from the central repository ``book-repo``. We can now add the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   677
location of the central repository to the ``hgrc`` file, of this project. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   678
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   679
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   680
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   681
    [paths]
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   682
    default = /home/punchagan/book-repo
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   683
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   684
Now, we can check the incoming changes. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   685
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   686
::
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   687
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   688
    $ hg incoming
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   689
    searching for changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   690
    changeset:   3:3cd54926dbea
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   691
    tag:         tip
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   692
    user:        Madhusudan CS <madhusudancs@fossee.in>
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   693
    date:        Fri Jan 28 23:08:25 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   694
    summary:     Add my name to authors and move getting repositories section
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   695
    to 5
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   696
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   697
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   698
To now **pull** these changes, we use the ``pull`` command. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   699
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   700
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   701
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   702
    $ hg pull 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   703
    pulling from /home/punchagan/book-repo
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   704
    searching for changes
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   705
    adding changesets
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   706
    adding manifests
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   707
    adding file changes
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   708
    added 1 changesets with 1 changes to 1 files
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   709
    (run 'hg update' to get a working copy)
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   710
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   711
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   712
*Note* that ``hg`` is giving us a message, asking us to run a ``hg update``
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   713
 to get a working copy. Let us try to understand what this is. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   714
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   715
As already explained, ``.hg`` folder has all the information about the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   716
changesets of the repository. When we do a ``pull`` the changesets from the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   717
remote repository are pulled to our repository, but our working directory is
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   718
not affected by these changes. To see this, we could use the ``hg parent``
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   719
command. 
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   720
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   721
::
96
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
   722
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   723
    $ hg parent
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   724
    changeset:   2:98f7f4a1bb4d
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   725
    user:        Puneeth Chaganti <punchagan@fossee.in>
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   726
    date:        Fri Jan 28 16:24:42 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   727
    summary:     Replace all occurrences of & with and
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   728
    $ 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   729
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   730
As we can see, the parent is still our last commit, and the changes made by
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   731
Madhusudan are still not in our working directory. To get these changes we do
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   732
the update as suggested by ``hg``. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   733
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   734
::
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   735
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   736
    $ hg up
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   737
    1 files updated, 0 files merged, 0 files removed, 0 files unresolved
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   738
    $ hg parent
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   739
    changeset:   3:3cd54926dbea
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   740
    tag:         tip
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   741
    user:        Madhusudan CS <madhusudancs@fossee.in>
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   742
    date:        Fri Jan 28 23:08:25 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   743
    summary:     Add my name to authors and move getting repositories section
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   744
    to 5 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   745
    $
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   746
    
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   747
As expected the **update** command updates the parent to the latest changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   748
that we just pulled from the remote repository. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   749
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   750
The update command can also be used to go back into an older revision, by
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   751
specifying the revision to which we want to go to. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   752
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   753
::
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   754
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   755
    $ hg up -r1
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   756
    1 files updated, 0 files merged, 0 files removed, 0 files unresolved
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   757
    $ hg parent
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   758
    changeset:   1:3163b8db10bb
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   759
    user:        Puneeth Chaganti <punchagan@fossee.in>
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   760
    date:        Fri Jan 28 16:21:29 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   761
    summary:     Add author info to all the chapters
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   762
    $ hg cat chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   763
    # Displays the contents of the chapter1.txt file as in revision 1. 
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   764
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   765
To return to the latest revision we just use the ``up`` or ``update`` command
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   766
without specifying any revision number. 
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   767
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   768
::
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   769
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   770
    $ hg up
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   771
    1 files updated, 0 files merged, 0 files removed, 0 files unresolved
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   772
    $ hg parent
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   773
    changeset:   3:3cd54926dbea
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   774
    tag:         tip
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   775
    user:        Madhusudan CS <madhusudancs@fossee.in>
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   776
    date:        Fri Jan 28 23:08:25 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   777
    summary:     Add my name to authors and move getting repositories section
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   778
    to 5 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   779
    $ 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   780
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   781
Simultaneous Changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   782
--------------------
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   783
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   784
Ok, we have been talking about collaboration, but this is a nice situation,
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   785
where I was not changing anything while Madhusudan was changing the file,
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   786
incidentally.  
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   787
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   788
Now, let's say, both of us are editing the file at the same time, but
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   789
different parts of it.  Say, I change the title of the section 2. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   790
::
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   791
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   792
    $ hg diff
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   793
    diff -r 3cd54926dbea chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   794
    --- a/chapter1.txt	Fri Jan 28 23:08:25 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   795
    +++ b/chapter1.txt	Fri Jan 28 23:45:19 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   796
    @@ -10,7 +10,7 @@
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   797
     Table of Contents
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   798
     =================
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   799
     1 Introduction and Motivation 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   800
    -2 Creating 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   801
    +2 Creating repositories
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   802
     3 Revision history 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   803
     4 Making and sharing changes 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   804
     5 Getting repositories 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   805
    $ hg commit 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   806
    $ hg push
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   807
    pushing to /home/punchagan/book-repo
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   808
    searching for changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   809
    adding changesets
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   810
    adding manifests
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   811
    adding file changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   812
    added 1 changesets with 1 changes to 1 files
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   813
    $ 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   814
    
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   815
Also, let us assume Madhusudan adds an additional section called References. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   816
::
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   817
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   818
    $ hg diff
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   819
    diff -r 3cd54926dbea chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   820
    --- a/chapter1.txt	Fri Jan 28 23:08:25 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   821
    +++ b/chapter1.txt	Fri Jan 28 23:47:05 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   822
    @@ -15,4 +15,4 @@
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   823
     4 Making and sharing changes 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   824
     5 Getting repositories 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   825
     6 Merges and Conflicts 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   826
    -
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   827
    +7 References
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   828
    $ hg commit
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   829
    $ hg log
96
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
   830
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   831
Let us now compare the logs of the two repositories. You can see that both
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   832
the repositories have their topmost revision numbered as 4, but they are both
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   833
different. The identification number given to each revision is a local
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   834
identification. The hexadecimal string following that number is the actual
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   835
unique identification of that changeset, which will be unique across
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   836
repositories.
96
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
   837
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   838
What happens now, when Madhusudan tries to push his changes to the central
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   839
repository? 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   840
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   841
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   842
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   843
    $ hg push
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   844
    pushing to http://192.168.1.101:8000 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   845
    searching for changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   846
    abort: push creates new remote heads!
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   847
    (did you forget to merge? use push -f to force)
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   848
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   849
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   850
The push failed! This is because, both of us have made changes, and they need
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   851
to be merged somehow. **Don't**, just for this one instance, take the advice
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   852
given by ``mercurial``. Using the ``-f`` would be disastrous. We will leave
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   853
out a discussion of that, for this course. 
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   854
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   855
Madhusudan now needs to pull the new changes that have been pushed to the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   856
repository after his last pull and **merge** them with his changes. 
96
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
   857
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   858
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   859
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   860
    $ hg pull 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   861
    pulling from http://192.168.1.101:8000 
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   862
    searching for changes
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   863
    adding changesets
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   864
    adding manifests
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   865
    adding file changes
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   866
    added 1 changesets with 1 changes to 1 files (+1 heads)
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   867
    (run 'hg heads' to see heads, 'hg merge' to merge)
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   868
    $ hg merge
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   869
    merging chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   870
    0 files updated, 1 files merged, 0 files removed, 0 files unresolved
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   871
    (branch merge, don't forget to commit)
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   872
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   873
We have now pull the changes from the central repository and merged them with
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   874
the changes in our repository. But, ``hg`` is warning us not to forget to
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   875
commit. Let's see what is the status of the repository at this point in time. 
96
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
   876
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   877
::
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   878
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   879
    $ hg st
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   880
    M chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   881
    $ hg diff
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   882
    diff -r bd57162c31f6 chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   883
    --- a/chapter1.txt	Fri Jan 28 23:51:52 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   884
    +++ b/chapter1.txt	Sat Jan 29 00:00:39 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   885
    @@ -10,7 +10,7 @@
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   886
     Table of Contents
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   887
     =================
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   888
     1 Introduction and Motivation 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   889
    -2 Creating 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   890
    +2 Creating repositories
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   891
     3 Revision history 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   892
     4 Making and sharing changes 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   893
     5 Getting repositories 
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   894
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   895
As you can see, the changes pushed by us, changing the name of the section 2,
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   896
have now been made in the repository of Madhusudan. We will now need to
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   897
commit these changes. 
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   898
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   899
::
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   900
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   901
    $ hg commit
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   902
    
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   903
We shall be using a commit message that makes it clear that we are merging.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   904
We can now push this changes to the central repository. We could also check
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   905
the changes that will be pushed, before pushing them, using the ``hg
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   906
outgoing`` command. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   907
::
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   908
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   909
    $ hg outgoing
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   910
    tag:         tip
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   911
    parent:      5:bd57162c31f6
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   912
    parent:      4:5c88c36f60de
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   913
    user:        Madhusudan CS <madhusudancs@fossee.in>
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   914
    date:        Sat Jan 29 00:02:53 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   915
    summary:     Merge heads.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   916
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   917
    changeset:   5:bd57162c31f6
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   918
    parent:      3:3cd54926dbea
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   919
    user:        Madhusudan CS <madhusudancs@fossee.in>
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   920
    date:        Fri Jan 28 23:51:52 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   921
    summary:     Add additional References section
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   922
    $ hg push
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   923
    pushing to http://192.168.1.101:8000 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   924
    searching for changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   925
    adding changesets
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   926
    adding manifests
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   927
    adding file changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   928
    added 2 changesets with 2 changes to 1 files
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   929
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   930
The changes have now been successfully pushed! Let us look at the web
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   931
interface of the repo, to see that the changes have actually taken place. Let
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   932
us also have a look at the graph to, try and understand what has happened. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   933
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   934
As we can see, a branch was created, when both of us started editing the file
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   935
simultaneously, and was then merged by Madhusudan CS. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   936
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   937
Simultaneous Conflicting Changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   938
--------------------------------
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   939
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   940
We were lucky this time, in that we were editing separate parts of the file.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   941
What will happen if we edited the same portion of the file, at the same time?
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   942
How would merges work? This will be the last thing that we are going to see
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   943
in this part of the course. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   944
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   945
Let's say both of us edit the title of the section 6. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   946
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   947
Let's say, I make the following changes, commit them and push them. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   948
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   949
::
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   950
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   951
    $ hg diff
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   952
    diff -r ce3469a9446f chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   953
    --- a/chapter1.txt	Sat Jan 29 00:02:53 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   954
    +++ b/chapter1.txt	Sat Jan 29 10:30:21 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   955
    @@ -14,5 +14,5 @@
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   956
     3 Revision history 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   957
     4 Making and sharing changes 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   958
     5 Getting repositories 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   959
    -6 Merges and Conflicts 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   960
    +6 Merging and resolving conflicts 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   961
     7 References
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   962
    $ hg commit
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   963
    $ hg push
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   964
    ...
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   965
    added 1 changesets with 1 changes to 1 files
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   966
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   967
Meanwhile, let's say Madhusudan was changing the same section title, as
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   968
follows.      
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   969
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   970
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   971
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   972
    $ hg diff
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   973
    diff -r ce3469a9446f chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   974
    --- a/chapter1.txt	Sat Jan 29 00:02:53 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   975
    +++ b/chapter1.txt	Sat Jan 29 10:35:29 2011 +0530
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   976
    @@ -14,5 +14,5 @@
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   977
     3 Revision history 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   978
     4 Making and sharing changes 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   979
     5 Getting repositories 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   980
    -6 Merges and Conflicts 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   981
    +6 Simple Merges and Merges with Conflicts 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   982
     7 References
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   983
    $ hg commit
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   984
    $ hg push
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   985
    pushing to http://192.168.1.101:8000 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   986
    searching for changes
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   987
    abort: push creates new remote heads!
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   988
    (did you forget to merge? use push -f to force)
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   989
    $ hg pull 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   990
    ...
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   991
    added 1 changesets with 1 changes to 1 files (+1 heads)
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   992
    (run 'hg heads' to see heads, 'hg merge' to merge)
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   993
    $ hg merge
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   994
    0 files updated, 1 files merged, 0 files removed, 0 files unresolved
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   995
    (branch merge, don't forget to commit)
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   996
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   997
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   998
What happens now actually depends on how Mercurial is configured and the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
   999
programs available in your machine. You will either get a diff view with 3
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1000
panes or ``merge`` will insert markers in your file at the points where the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1001
conflicts occur.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1002
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1003
If you get a 3 pane view, the first pane is the actual file, where you make
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1004
changes, to resolve the conflicts. The second pane shows the changes that you
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1005
made, to the file. The last pane shows the changes that you pulled from the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1006
original repo. Once you are satisfied with the changes, save and quit. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1007
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1008
If you have a very minimal system, you might end up getting a file with
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1009
change markers, the original file being backed up. Open the file and resolve
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1010
the conflicts, deleting the markers. Once you are done, you need to tell
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1011
mercurial that you have resolved the conflicts manually. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1012
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1013
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1014
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1015
    $ hg resolve -m chapter1.txt
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1016
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1017
Whatever be the process you have used for the merge, you will now need to
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1018
commit your changes, just like the simple merge that we performed. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1019
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1020
::
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1021
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1022
    $ hg commit -m "Merge heads."
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
  1023
    $ hg push
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
  1024
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1025
*Note*, we have used a different way to commit. We have used the ``-m``
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1026
argument with the commit message.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1027
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1028
We could look at the graph of the changes, in our web interface, being served
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1029
by the ``hg serve`` command. From the graph it is clear, how the merging has
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1030
occurred. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1031
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1032
That brings us to the end of this tutorial on Mercurial. What we have covered
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1033
is nothing close to all the features of Mercurial. We've only scratched the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1034
surface, but let's hope that this will get you started and you will be able
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1035
to organize your work and projects, better. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1036
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1037
Additional Reading
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1038
==================
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1039
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1040
I strongly suggest you to go through the following topics, if and when you
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1041
start using Mercurial on a day-to-day basis. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1042
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1043
1. ``.hgignore`` 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1044
#. ``hg rollback`` 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1045
#. ``hg bisect`` 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1046
#. ``hg backout`` 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1047
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1048
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1049
References
96
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
  1050
==========
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
  1051
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1052
    - `A Visual Guide to Version Control <http://betterexplained.com/articles/a-visual-guide-to-version-control/>`_
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1053
    - `Version Control for the Masses <http://karlagius.com/2009/01/09/version-control-for-the-masses/>`_
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1054
    - `(Illustrated) Intro to Distributed Version Control <http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/>`_
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1055
    - `Understanding Mercurial <http://mercurial.selenic.com/wiki/UnderstandingMercurial>`_
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1056
    - `A Tutorial on Using Mercurial <http://mercurial.selenic.com/wiki/Tutorial>`_
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1057
    - `Hg Init: a Mercurial tutorial <http://hginit.com/>`_
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1058
    - `Beginners Guides <http://mercurial.selenic.com/wiki/BeginnersGuides>`_
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1059
    - `Software Carpentry <http://software-carpentry.org/4_0/vc/>`_
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1060
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1061
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1062
Appendix A - Definitions
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1063
========================
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1064
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1065
Definitions of a few commonly used terms. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1066
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1067
Add
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1068
    Begin tracking a file (or a set of files) with Version Control. 
96
bb52cf47e920 Text content for vcs.
Shantanu <shantanu@fossee.in>
parents: 60
diff changeset
  1069
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1070
Branch
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1071
    A diverged line of development. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1072
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1073
Changeset
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1074
    An atomic collection of changes to the files in a repository. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1075
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1076
Clone 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1077
    Creating a copy of an existing repository; New repo is self-contained. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1078
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1079
Commit
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1080
    Taking a snapshot of the changes made in the repository (after the
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1081
    previous snapshot) 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1082
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1083
Conflict 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1084
    Occurs when two changesets have overlapping sections that have been
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1085
    modified.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1086
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1087
Head
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1088
    A changeset with no child changesets. 
8
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
  1089
135
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1090
History
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1091
    Cumulative of all the changesets of a repository. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1092
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1093
Merge 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1094
    Combining two separate changesets into one merge changeset. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1095
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1096
Repository (repo) 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1097
    - Loosely speaking, the folder with all the files and a store
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1098
      of the change history.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1099
    - Strictly speaking, only the ``.hg`` directory that contains the change
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1100
      history. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1101
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1102
Revert
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1103
    Going back to previous committed state of working directory or a file.
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1104
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1105
Revision
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1106
    A particular changeset. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1107
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1108
Server
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1109
    A machine which serves the repository. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1110
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1111
Tip 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1112
    Most recently changed head in a repository. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1113
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1114
Update
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1115
    Updating the working directory to a particular revision or to the tip
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1116
    revision. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1117
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1118
Working Directory
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1119
    The directory where all of the files and directories of the project are
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1120
    present. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1121
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1122
.. 
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1123
   Local Variables:
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1124
   mode: rst
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1125
   indent-tabs-mode: nil
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1126
   sentence-end-double-space: nil
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1127
   fill-column: 77
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1128
   End:
339230606dc0 vcs: Changes to handout.rst
Puneeth Chaganti <punchagan@fossee.in>
parents: 96
diff changeset
  1129