versionControl/handOut.rst
author Shantanu <shantanu@fossee.in>
Fri, 18 Sep 2009 15:39:01 +0530
changeset 60 8a36825e21c5
parent 54 bed3fe467e21
child 96 bb52cf47e920
permissions -rw-r--r--
Arithmetic section, typo correction, eg script.
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
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
     8
The following words are from a blogpost "http://karlagius.com/2009/01/09/version-control-for-the-masses/"
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
     9
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    10
"Version control is one of those weird, geeky things that never really gained much ground in non-geek fields, despite the fact that it’s blindingly useful.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    11
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
    12
Version control (or source control) is nothing more arcane than keeping copies of ones work as one make changes to it. On the surface, it’s all straight-forward; make a copy of every file before making any changes to it. That way, if something seriously messes up, one can always fall back to something that worked before, or at least compare the broken copy with one that used to work so one can figure out where it went off kilter. Accidentally deleted half of thesis and closed the word processor? No problem – out comes the backup."
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    13
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
    14
Now, in the real world, it’s not so easy. One probably cooks up their own version control system without realizing it had such a geeky name. For instances files with names oldxxxxxx.py and latestxxxxxx.py. Every time to make some change in a file, one save it with different name then the original one. Luckily there are like, loads of version control systems out there to do this heavy lifting.
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    15
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    16
Why Use Version Control
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
    17
=======================
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
    18
 
38
ce7634ee7986 Some more typo correction.
Shantanu <shantanu@fossee.in>
parents: 37
diff changeset
    19
One of idea behind Version Control Tools was to build onto very first step which can be creating a empty file, or writing a first buggy program for assignment, rather then simply loose it. So here are some reasons why is automated version control needed:
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    20
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    21
    - It will track the history and evolution of a project, so one don't have to do it manually. It allows to track what changes where made, when were they made, by whom and why.
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
    22
    - For a team of people working on same project, revision control software makes it easier to collaborate. For example, when people more or less simultaneously make potentially incompatible changes, the software will help them to identify and resolve those conflicts.
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    23
    - It can help to recover from mistakes. If a change made at some moment of time, turns out to be in error in future, one can revert to an earlier version of one or more files. In fact, a really good revision control tool will even help in efficiently figure out exactly when a problem was introduced.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    24
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
    25
Most of these reasons are equally valid for the project having one man show, or hundred people. Besides projects, even it can be used to maintain assignments related to one particular subject/course, it will help manage things in way much better way. These tools can be used for better *resources management*. All codes, documents, presentation, assignments related to one course maintained in such a inventory can help avoiding accidental lose of data(deletion) and Internet hosting for version control will make the work immune to local hard-disk crash, unless hosting crashes itself.
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    26
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    27
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
    28
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    29
     - cvs (Concurrent Version System)
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    30
     - svn (Subversion)
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    31
     - hg (Mercurial)
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    32
     - bzr (Bazaar)
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    33
     - git 
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    34
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    35
Each of above mentioned tools have sets of feature which it offers in unique way. For this session we are going to concentrate on hg (mercurial). After covering the basics of hg, one can easily try other tools, and use what-ever he/she is most comfortable with.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    36
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    37
Learning the Lingo
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
    38
==================
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    39
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    40
Each Version Control uses its own nomenclature for more or less the same features. Here are some of terms which are going to used through out the rest of session:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    41
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    42
Basic Setup
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
    43
-----------
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    44
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    45
     Repository(repo):
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    46
	The database/folder storing the files.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    47
     Server:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    48
	The computer storing the repo.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    49
     Client:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    50
	The computer connecting to the repo.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    51
     Working Set/Working Copy:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    52
     	Your local directory of files, where you make changes. This is what is present on client side.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    53
     Trunk/Main:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    54
	The “primary” location for code in the repo. Think of code as a family tree — the “trunk” is the main line. This is generally what is present on server.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    55
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    56
Basic Actions
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
    57
-------------
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    58
     
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    59
     Add:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    60
	Put a file into the repo for the first time, i.e. begin tracking it with Version Control.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    61
     Revision:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    62
	What version a file is on.
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
    63
     Head/Tip:
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    64
	The latest revision of the repo.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    65
     Check out:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    66
     	Initial download of repo onto machine.
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
    67
     Commit:
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    68
     	Upload a file to repository(if it has changed). The file gets a new revision number, and people can “check out” the latest one.
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
    69
     Checking Message:
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    70
     	A short message describing what was changed.
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
    71
     Change log/History:
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    72
	A list of changes made to a file since it was created.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    73
     Update/Sync:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    74
	Synchronize local files with the latest from the repository on server. This get the latest revisions of all files.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    75
     Revert:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    76
	Throw away the local changes and reload the latest version from the repository.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    77
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    78
Advanced Actions:
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
    79
-----------------
7
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    80
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    81
     Branch:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    82
	Create a separate copy of a file/folder for private use (bug fixing, testing, etc).
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    83
     Diff/Change:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    84
	Finding the differences between two files. Useful for seeing what changed between revisions.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    85
     Merge (or patch):
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    86
     	Apply the changes from one file to another, to bring it up-to-date.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    87
     Conflict:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    88
	When pending changes to a file contradict each other (both changes cannot be applied).
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    89
     Resolve:
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    90
	Fixing the changes that contradict each other and checking in the correct version.
eef24e2b0bac Hand out doc for version contol added.
Shantanu <shantanu@fossee.in>
parents:
diff changeset
    91
     
8
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
    92
Types of Version Control:
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
    93
-------------------------
8
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
    94
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
    95
Based on how source/code management is carried out in a tool there are two categories of Version Control Systems(VCS):
8
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
    96
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
    97
      - Centralized VCS: 
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
    98
      	In this kind of system all the revision control functions are performed on a shared server. If two developers try to change the same file at the same time, without some method of managing access the developers may end up overwriting each other's work. Centralized revision control systems solve this problem in one of two different "source management models": file locking and version merging. Both svn and cvs follows this kind of management.
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
    99
   
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   100
      - Distributed VCS:
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   101
      	In a distributed model, every developer has their own repo. Diffs, commits, and reverts are all done locally, one needs Internet only to share the changes with others. It makes work faster, handles branching and merging in better way, with less management. hg, bzr and git uses this work flow.
8
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   102
15
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   103
Get Going with Hg:
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   104
==================
8
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   105
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   106
Why hg?
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   107
-------
15
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   108
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   109
	- It is easy to learn and use.
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   110
	- It is lightweight.
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   111
	- It scales excellently.
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   112
	- It is based on Python.
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   113
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   114
A small point to notice here, hg cant track binary files for changes, one can add them to repo, but wont be able to track changes made to it. And hg considers, odt, pdf files as binary.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   115
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   116
Getting Started:
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   117
----------------
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   118
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   119
Following command tells the version of hg installed on machine: ::
15
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   120
   
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   121
   $hg version
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   122
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   123
   Mercurial Distributed SCM (version 1.1.2)
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   124
   Copyright (C) 2005-2008 Matt Mackall <mpm@selenic.com> and others
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   125
   This is free software; see the source for copying conditions. There is NO
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   126
   warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   127
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   128
Built-in help, Mercurial provides a built-in help system. Following command will print a brief list of commands, along with a description of what each does. ::
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   129
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   130
   $hg help
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   131
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   132
   Mercurial Distributed SCM
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   133
   list of commands:
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   134
   add          add the specified files on the next commit
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   135
   addremove	-----------------------
d20e3fe4fd8c Started hg command section.
Shantanu <shantanu@fossee.in>
parents: 8
diff changeset
   136
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   137
For specific command, just follow the command name after the help. ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   138
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   139
    $hg help diff
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   140
    hg diff [OPTION]... [-r REV1 [-r REV2]] [FILE]...
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   141
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   142
    diff repository (or selected files)
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   143
    Show differences between revisions for the specified files.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   144
    Differences between files are shown using the unified diff format.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   145
    NOTE:____________
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   146
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   147
Let there be Repository:
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   148
------------------------
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   149
38
ce7634ee7986 Some more typo correction.
Shantanu <shantanu@fossee.in>
parents: 37
diff changeset
   150
In Mercurial, everything happens inside a repository. The repository for a project contains all of the files that “belong to” that project, along with a historical record of the project's files. A repository is simply a directory tree in file-system that Mercurial treats as special.
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   151
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   152
There can be two ways to create a repo, either getting local copy for existing repo available on Internet or machine, or creating a new repo. For getting already existing repo hg uses command *"clone"* ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   153
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   154
      $hg clone http://hg.serpentine.com/tutorial/hello localCopyhello
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   155
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   156
      requesting all changes
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   157
      adding changesets
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   158
      adding manifests
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   159
      adding file changes
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   160
      added 5 changesets with 5 changes to 2 files
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   161
      updating working directory
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   162
      2 files updated, 0 files merged, 0 files removed, 0 files unresolved
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   163
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   164
If clone succeeded, there would be a local directory called localCopyhello, with some files: ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   165
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   166
      $ls localCopyhello/
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   167
      hello.c  Makefile
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   168
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   169
Every Mercurial repository is complete, self-contained, and independent. It contains its own private copy of a project's files and history.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   170
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   171
To start a new repository use *hg init*: ::
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   172
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   173
   $ mkdir Fevicol
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   174
   $ cd Fevicol/
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   175
   $ echo "print 'Yeh Fevicol ka Majboot jod hai'" > feviStick.py
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   176
   $ ls -a
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   177
   .  ..  feviStick.py
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   178
   $ hg init
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   179
   $ ls -a
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   180
   .  ..  feviStick.py  .hg
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   181
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   182
*.hg* directory indicates that this new dir is now a repo.This is where Mercurial keeps all of its metadata for the repository.The contents of the .hg directory and its subdirectories are private to Mercurial. Rest all files are for the user to use them as they pleases.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   183
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   184
Creating a branch of existing local repo is very easy via hg using clone command: ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   185
	
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   186
    $ hg clone localCopyhello newCopy
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   187
    updating working directory
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   188
    2 files updated, 0 files merged, 0 files removed, 0 files unresolved
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   189
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   190
newCopy is exact copy of already existing repo. And this command can be used to create branch of locally created repo also: ::
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   191
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   192
    $ hg clone Fevicol Fevicol-pull
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   193
    updating working directory
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   194
    0 files updated, 0 files merged, 0 files removed, 0 files unresolved
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   195
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   196
These local branches can prove really handy at times. It allows keep multiple copies of local branch for different purposes, say for debugging, testing, working version.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   197
	
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   198
History or Logs:
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   199
----------------
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   200
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   201
For the new repo created, first thing which can be tried is to check the logs/history. What changes were made and when and why, answers to all those questions are stored in logs safely. So for the the cloned repo the history can be viewed using command *"log"* (following commands are wrt localCopyhello repo). ::
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   202
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   203
    $hg log
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   204
    changeset:   4:2278160e78d4
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   205
    tag:         tip
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   206
    user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   207
    date:        Sat Aug 16 22:16:53 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   208
    summary:     Trim comments.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   209
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   210
    changeset:   3:0272e0d5a517
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   211
    user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   212
    date:        Sat Aug 16 22:08:02 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   213
    summary:     Get make to generate the final binary from a .o file.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   214
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   215
    changeset:   2:fef857204a0c
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   216
    user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   217
    date:        Sat Aug 16 22:05:04 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   218
    summary:     Introduce a typo into hello.c.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   219
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   220
    changeset:   1:82e55d328c8c
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   221
    user:        mpm@selenic.com
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   222
    date:        Fri Aug 26 01:21:28 2005 -0700
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   223
    summary:     Create a makefile
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   224
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   225
    changeset:   0:0a04b987be5a
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   226
    user:        mpm@selenic.com
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   227
    date:        Fri Aug 26 01:20:50 2005 -0700
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   228
    summary:     Create a standard "hello, world" program
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   229
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   230
By default, this command prints a brief paragraph of output for each change to the project that was recorded.The fields in a record of output from hg log are as follows:
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   231
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   232
   - changeset: This field has the format of a number, followed by a colon, followed by a hexadecimal (or hex) string. These are identifiers for the changeset. The hex string is a unique identifier: the same hex string will always refer to the same changeset in every copy of this repository. 
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   233
   - user: The identity of the person who created the changeset.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   234
   - date: The date and time on which the changeset was created, and the timezone in which it was created.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   235
   - summary: The first line of the text message that the creator of the changeset entered to describe the changeset.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   236
   - tag: A tag is another way to identify a changeset, by giving it an easy-to-remember name.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   237
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   238
To narrow the output of hg log down to a single revision, use the -r (or --rev) option. ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   239
   
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   240
   $hg log -r 3
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   241
   changeset:   3:0272e0d5a517
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   242
   user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   243
   date:        Sat Aug 16 22:08:02 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   244
   summary:     Get make to generate the final binary from a .o file.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   245
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   246
*range notation* can be used to get history of several revisions without having to list each one. ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   247
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   248
   $ hg log -r 2:4
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   249
   changeset:   2:fef857204a0c
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   250
   user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   251
   date:        Sat Aug 16 22:05:04 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   252
   summary:     Introduce a typo into hello.c.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   253
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   254
   changeset:   3:0272e0d5a517
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   255
   user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   256
   date:        Sat Aug 16 22:08:02 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   257
   summary:     Get make to generate the final binary from a .o file.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   258
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   259
   changeset:   4:2278160e78d4
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   260
   tag:         tip
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   261
   user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   262
   date:        Sat Aug 16 22:16:53 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   263
   summary:     Trim comments.
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
The hg log  command's -v (or --verbose) option gives you this extra detail. ::
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   266
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   267
    $ hg log -v -r 3
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   268
    changeset:   3:0272e0d5a517
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   269
    user:        Bryan O'Sullivan <bos@serpentine.com>
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   270
    date:        Sat Aug 16 22:08:02 2008 +0200
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   271
    files:       Makefile
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   272
    description:
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   273
    Get make to generate the final binary from a .o file.
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   274
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   275
Making Changes:
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   276
---------------
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   277
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   278
There is feviStick.py file in repo created above with name Fevicol. *status(alias st)* command prints the revision history of the specified files or the entire project::
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   279
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   280
    $ cd Fevicol
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   281
    $ hg log
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   282
    $ hg status
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   283
    ? feviStick.py
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   284
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   285
"?" sign in front of file indicates that this file is not yet part of track record. *add* command is used to add new files to repo. ::
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   286
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   287
    $ hg add feviStick.py
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   288
    $ hg st
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   289
    A feviStick.py
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   290
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   291
So file is now part of repository(A symbol). Use *commit (alias ci)* command to make changes effective(this command would be explained in more details in later parts). ::
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   292
   
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   293
   $ hg ci -u "Shantanu <shantanu@fossee.in>" -m "First commit."
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   294
   $ hg log
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   295
   changeset:   0:84f5e91f4de1
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   296
   tag:         tip
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   297
   user:        Shantanu <shantanu@fossee.in>
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   298
   date:        Fri Aug 21 23:37:13 2009 +0530
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   299
   summary:     First commit.
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   300
38
ce7634ee7986 Some more typo correction.
Shantanu <shantanu@fossee.in>
parents: 37
diff changeset
   301
Similar to add there are other commands available for file management in repo. *copy (alias cp)* command is used to mark files as copied for the next commit. ::
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   302
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   303
   $ hg cp feviStick.py pidiLite.py
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   304
   $ hg st
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   305
   A pidiLite.py
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   306
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   307
*rename(alias mv)* rename files; equivalent of copy + remove. *tip* command shows newest revision in the repository. ::
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   308
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   309
   $ hg rename pidiLite.py feviCol.py
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   310
   $ hg st
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   311
   A feviCol.py
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   312
   $ hg ci -u "Shantanu <shantanu@fossee.in>" -m "Renamed pidiLite.py."
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   313
   $ hg tip
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   314
   changeset:   1:d948fb4137c5
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   315
   tag:         tip
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   316
   user:        Shantanu <shantanu@fossee.in>
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   317
   date:        Sat Aug 22 00:11:25 2009 +0530
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   318
   summary:     Renamed pidiLite.py.
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   319
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   320
*remove* command is used to remove files from a repo. ::
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   321
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   322
   $ hg remove feviCol.py
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   323
   $ hg st
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   324
   R feviCol.py
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   325
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   326
R status of files denotes, file is marked as to be removed by the previous command *remove*. To add the file again to repo, one can use *revert* command, which restore individual files or dirs to an earlier state. ::
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   327
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   328
  $ ls
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   329
  feviStick.py
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   330
  $ hg revert feviCol.py
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   331
  $ ls
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   332
  feviCol.py  feviStick.py
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   333
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   334
Sharing Changes:
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   335
----------------
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   336
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   337
Pulling from repo:
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   338
~~~~~~~~~~~~~~~~~~
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   339
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   340
As mentioned earlier that repositories in Mercurial are self-contained. This means that the changeset just created exists only in Fevicol repository and not in previously cloned Fevicol-pull. There are a few ways that can be used to propagate this change into other repositories. ::
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   341
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   342
   $ hg clone Fevicol Fevicol-clone
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   343
   updating working directory
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   344
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   345
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   346
Or traverse into the any dir which is a working hg repo(using hg init) and pull command will download all changeset from main repo. ::
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   347
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   348
   $ mkdir Fevicol-pull
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   349
   $ cd Fevicol-pull
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   350
   $ hg init
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   351
   $ hg pull ../Fevicol
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   352
   pulling from ../Fevicol
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   353
   requesting all changes
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   354
   adding changesets
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   355
   adding manifests
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   356
   adding file changes
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   357
   added 2 changesets with 2 changes to 2 files
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   358
   (run 'hg update' to get a working copy)
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   359
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   360
*changeset* means a list of changes made to a file. In words of *hg help*, pull command is: ::
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   361
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   362
   pull changes from the specified source
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   363
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   364
    Pull changes from a remote repository to a local one.
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   365
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   366
    This finds all changes from the repository at the specified path
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   367
    or URL and adds them to the local repository. By default, this
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   368
    does not update the copy of the project in the working directory.
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   369
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   370
Some times, even before pulling changesets, one may need to see what changes would be pulled, Mercurial provides *hg incoming* to tell what changes *hg pull* would pull into repo, without actually pulling the changes. This command is really handy in case of avoiding unwanted changesets into the repo.
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   371
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   372
With Mercurial, *hg pull* does not(by default) touch the working directory. Instead there is *hg up (alias update, co, checkout)* command to do this. ::
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   373
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   374
    $ cd Fevicol-pull
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   375
    $ ls -a
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   376
    .  ..  .hg
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   377
    $ hg up
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   378
    2 files updated, 0 files merged, 0 files removed, 0 files unresolved
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   379
    $ ls -a
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   380
    .  ..  feviCol.py  feviStick.py  .hg
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   381
    
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   382
To update to specific version, give a version number to the *hg update* command. ::
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   383
   
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   384
    $ hg update 0
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   385
    0 files updated, 0 files merged, 1 files removed, 0 files unresolved
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   386
    $ hg parent
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   387
    changeset:   0:84f5e91f4de1
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   388
    user:        Shantanu <shantanu@fossee.in>
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   389
    date:        Fri Aug 21 23:37:13 2009 +0530
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   390
    summary:     First commit.
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   391
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   392
If no version number is specified *hg up* will update to the tip version. Version number of hg starts from 0. Compare *hg parent* output to the one before doing update to see the difference.
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   393
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   394
Making Changes:
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   395
~~~~~~~~~~~~~~~
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   396
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   397
After getting the desired version of local repo, one can make changes as he/she needs and then make them available(share) for others. For these operations we will be working in Fevicol-clone repo which we created earlier. It's often good practice to keep a “pristine” copy of a remote repository around, which you can then make temporary clones of to create sandboxes for each task you want to work on. ::
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   398
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   399
    $ cd Fevicol-clone/
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   400
    $ cat feviStick.py 
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   401
    print 'Yeh Fevicol ka Majboot jod hai'
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   402
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   403
This tagline is correct for feviCol.py but for feviStick.py it should be different. ::
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   404
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   405
    $ echo "print 'Ab no more Chip Chip'" > feviStick.py
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   406
    $ cat feviStick.py
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   407
    print 'Ab no more Chip Chip'
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   408
    $ hg st
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   409
    M feviStick.py
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   410
38
ce7634ee7986 Some more typo correction.
Shantanu <shantanu@fossee.in>
parents: 37
diff changeset
   411
Mercurial's hg status command will tell us what Mercurial knows about the files in the repository. 'M' sign in front of feviStick.py indicates that Mercurial has noticed change.
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   412
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   413
It's somewhat helpful to know that feviStick.py was modified, but one might prefer to know exactly what changes were made to it. To do this, use the *hg diff* command. ::
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   414
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   415
    $ hg diff
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   416
    diff -r a7912d45f47c feviStick.py
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   417
    --- a/feviStick.py	 Sun Aug 23 22:34:35 2009 +0530
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   418
    +++ b/feviStick.py	 Sun Aug 23 22:47:49 2009 +0530
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   419
    @@ -1,1 +1,1 @@
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   420
    -print 'Yeh Fevicol ka Majboot jod hai'
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   421
    +print 'Ab no more Chip Chip'
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   422
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   423
We can modify files, build and test our changes, and use hg status and hg diff to review our changes, until we're satisfied with what we've done and arrive at a natural stopping point where we want to record our work in a new changeset. All the diffs prior to committing the changes would be done wrt earlier marked record.The hg commit command lets us create a new changeset.
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   424
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   425
Mercurial records your name and address with each change that you commit, so that you and others will later be able to tell who made each change. Mercurial tries to automatically figure out a sensible username to commit the change with. When we try to use *hg commit* there are various ways by which one can specify User name, some of those are:
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   426
	  
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   427
	  - Specify a -u option to the hg commit command on the command line, followed by a username.
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   428
	  - set HGUSER environment variable.
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   429
	  - Edit hgrc file present in .hg folder to set this property, add following lines to that file and Mercurial will read those parameters from that location. ::
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   430
	  
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   431
		[ui]
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   432
		username = Firstname Lastname <email.address@example.net>
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   433
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   434
For me the hgrc file looks like this: ::
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   435
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   436
    [paths]
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   437
    default = /home/baali/Fevicol
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   438
    [ui]
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   439
    username = Shantanu Choudhary <shantanu@fossee.in>
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   440
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   441
Once this parameter is set, *hg commit* command drops us into a text editor, to enter a message that will describe the modifications we've made in this changeset. This is called the commit message. It will be a record for readers of what we did and why, and it will be printed by hg log after we've finished committing. ::
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   442
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   443
    Changed tagline for feviStick.py.
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   444
    HG: Enter commit message.  Lines beginning with 'HG:' are removed.
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   445
    HG: --
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   446
    HG: user: Shantanu Choudhary <shantanu@fossee.in>
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   447
    HG: branch 'default'
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   448
    HG: changed feviStick.py 
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   449
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   450
This would be your default system editor(for me it is vim, one can set it also), where you can enter the log message in first line, once you are done with log message quit the editor using *[ESC] key ":wq"*.Once we've finished the commit, we can use the hg tip command to display the changeset we just created. ::
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   451
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   452
    $ hg tip
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   453
    changeset:   3:e1ab2aff4ddd
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   454
    tag:         tip
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   455
    user:        Shantanu Choudhary <shantanu@fossee.in>
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   456
    date:        Sun Aug 23 23:32:01 2009 +0530
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   457
    summary:     Changed tagline for feviStick.py. 
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   458
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   459
One can do above mentioned procedure using following one line command: ::
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   460
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   461
    $ hg ci -u "Shantanu <shantanu@fossee.in>" -m "Changed tagline for feviStick.py."
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   462
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   463
Sharing Changes:
17
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   464
~~~~~~~~~~~~~~~~
e6240ecd7ae6 Basic file management in Repo.
Shantanu <shantanu@fossee.in>
parents: 16
diff changeset
   465
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   466
The *hg outgoing* command tells us what changes would be pushed into another repository. ::
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   467
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   468
    $ hg outgoing ../Fevicol
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   469
    comparing with ../Fevicol
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   470
    searching for changes
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   471
    changeset:   3:e1ab2aff4ddd
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   472
    tag:         tip
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   473
    user:        Shantanu Choudhary <shantanu@fossee.in>
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   474
    date:        Sun Aug 23 23:32:01 2009 +0530
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   475
    summary:     Changed tagline for feviStick.py.
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   476
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   477
And the *hg push* command does the actual push. ::
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   478
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   479
    $ hg push ../Fevicol
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   480
    pushing to ../Fevicol
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   481
    searching for changes
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   482
    adding changesets
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   483
    adding manifests
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   484
    adding file changes
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   485
    added 1 changesets with 1 changes to 1 files
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   486
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   487
As with hg pull, the hg push command does not update the working directory in the repository that it's pushing changes into. One has to use hg update to populate the changes in desired repo. ::
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   488
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   489
   $ cd ../Fevicol
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   490
   $ hg tip
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   491
   changeset:   3:e1ab2aff4ddd
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   492
   tag:         tip
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   493
   user:        Shantanu Choudhary <shantanu@fossee.in>
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   494
   date:        Sun Aug 23 23:32:01 2009 +0530
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   495
   summary:     Changed tagline for feviStick.py.
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   496
   $ cat feviStick.py
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   497
   print 'Yeh Fevicol ka Majboot jod hai'
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   498
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   499
changesets are imported, but update is yet to be done. ::
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   500
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   501
   $ hg up tip
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   502
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   503
   $ $ cat feviStick.py 
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   504
   print 'Ab no more Chip Chip'
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   505
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   506
Merging the Work:
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   507
~~~~~~~~~~~~~~~~~
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   508
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   509
This is next aspect of any version control, how to merge work done by various participants of project in a way that no one looses changes being made, and still remains updated. Here is simple case study which can help understanding why merging is required: 
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   510
38
ce7634ee7986 Some more typo correction.
Shantanu <shantanu@fossee.in>
parents: 37
diff changeset
   511
Two persons, A and B are contributing on same project. Both starts from cloning the same online repo(lets say present state X), so that both have a working local repo. Now A edits one of file, commits the changes and pushes to the repo, hence changing the state of repo to Y, but B, have not updated his repo, makes a change in one of files and reaches to a different state Z. Now when A pulls repo from B, his repo will have multiple heads. This stage is clearly ambiguous, the repo of A is not consistent, it has multiple heads, and from here, whatever changes he makes can take whatsoever direction if it is not fixed, and hence A will have to merge changes so that everything becomes consistent again.
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   512
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   513
Lets see how this work with working repo, we will use Fevicol and Fevicol-clone repositories created earlier. For now, the status of both repo is: ::
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   514
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   515
    $ cd Fevicol-clone
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   516
    $ hg tip
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   517
    changeset:   3:e1ab2aff4ddd
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   518
    tag:         tip
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   519
    user:        Shantanu Choudhary <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   520
    date:        Sun Aug 23 23:32:01 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   521
    summary:     Changed tagline for feviStick.py.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   522
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   523
The tagline for feviCol.py is not complete, so we make changes in that file in this repo. ::
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   524
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   525
    $ echo "print 'Yeh Fevicol ka Majboot jod hai, tootega nahin'" > feviStick.py
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   526
    $ hg st
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   527
    M feviStick.py
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   528
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   529
And commit the changes made ::
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   531
    $ hg ci -u "Shantanu <shantanu@fossee.in>" -m "Updated tag line for feviCol.py."
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   532
    $ hg st
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   533
    $ hg tip
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   534
    changeset:   4:caf986b15e05
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   535
    tag:         tip
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   536
    user:        Shantanu <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   537
    date:        Tue Aug 25 16:28:24 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   538
    summary:     Updated tag line for feviCol.py.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   539
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   540
Now we will make some changes on Fevicol repo. We will add new file here ::
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   541
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   542
    $ cd Fevicol
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   543
    $ echo "print 'Jor laga ke hayyiya'" > firstAdd.py
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   544
    $ hg st
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   545
    ? firstAdd.py
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   546
    $ hg add firstAdd.py
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   547
    $ hg st
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   548
    A firstAdd.py
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   549
    $ hg ci -u "Shantanu <shantanu@fossee.in>" -m "Added firsAdd.py."
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   550
    $ hg tip
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   551
    changeset:   4:fadbd6492cc4
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   552
    tag:         tip
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   553
    user:        Shantanu <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   554
    date:        Tue Aug 25 16:46:24 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   555
    summary:     Added firsAdd.py.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   556
    
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   557
So now we have two repo, who have different commit history and tree, now if we try to pull changes from one to another, this is how it goes(we are still in Fevicol repo): ::
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   558
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   559
    $ hg pull ../Fevicol-clone 
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   560
    pulling from ../Fevicol-clone
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   561
    searching for changes
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   562
    adding changesets
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   563
    adding manifests
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   564
    adding file changes
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   565
    added 1 changesets with 1 changes to 1 files (+1 heads)
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   566
    (run 'hg heads' to see heads, 'hg merge' to merge)
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   567
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   568
There we go, since both repo were on different track, hg pull command in last line gives some heading from here. *hg heads* command show current repository heads or show branch heads. ::
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   569
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   570
    $ hg heads
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   571
    changeset:   5:caf986b15e05
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   572
    tag:         tip
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   573
    parent:      3:e1ab2aff4ddd
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   574
    user:        Shantanu <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   575
    date:        Tue Aug 25 16:28:24 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   576
    summary:     Updated tag line for feviCol.py.
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   577
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   578
    changeset:   4:fadbd6492cc4
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   579
    user:        Shantanu <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   580
    date:        Tue Aug 25 16:46:24 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   581
    summary:     Added firsAdd.py.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   582
    
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   583
To get better understanding of what is going on hg have a tool known as *glog* which shows revision history alongside an ASCII revision graph. ::
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   584
     
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   585
    $ hg glog
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   586
    o  changeset:   5:caf986b15e05
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   587
    |  tag:         tip
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   588
    |  parent:      3:e1ab2aff4ddd
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   589
    |  user:        Shantanu <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   590
    |  date:        Tue Aug 25 16:28:24 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   591
    |  summary:     Updated tag line for feviCol.py.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   592
    |
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   593
    | @  changeset:   4:fadbd6492cc4
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   594
    |/   user:        Shantanu <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   595
    |    date:        Tue Aug 25 16:46:24 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   596
    |    summary:     Added firsAdd.py.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   597
    |
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   598
    o  changeset:   3:e1ab2aff4ddd
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   599
    |  user:        Shantanu Choudhary <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   600
    |  date:        Sun Aug 23 23:32:01 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   601
    |  summary:     Changed tagline for feviStick.py.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   602
    |
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   603
    o  changeset:   2:a7912d45f47c
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   604
    |  user:        Shantanu <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   605
    |  date:        Sun Aug 23 22:34:35 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   606
    |  summary:     Updated Content.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   607
    |
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   608
    o  changeset:   1:d948fb4137c5
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   609
    |  user:        Shantanu <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   610
    |  date:        Sat Aug 22 00:11:25 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   611
    |  summary:     Renamed pidiLite.py.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   612
    |
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   613
    o  changeset:   0:84f5e91f4de1
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   614
       user:        Shantanu <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   615
       date:        Fri Aug 21 23:37:13 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   616
       summary:     First commit.
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   617
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   618
To bring repo on single track/branch once again we will have to merge these two branches. Without merging them even hg update wont work for obvious reason of confusing track record. ::
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   619
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   620
    $ hg up
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   621
    abort: crosses branches (use 'hg merge' or 'hg update -C')
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   622
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   623
*hg merge* command merge working directory with another revision. ::
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   624
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   625
    $ hg merge
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   626
    1 files updated, 0 files merged, 0 files removed, 0 files unresolved
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   627
    (branch merge, don't forget to commit) 
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   628
    $ hg tip 
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   629
    changeset:   5:caf986b15e05
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   630
    tag:         tip
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   631
    parent:      3:e1ab2aff4ddd
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   632
    user:        Shantanu <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   633
    date:        Tue Aug 25 16:28:24 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   634
    summary:     Updated tag line for feviCol.py.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   635
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   636
After merging two branches, until we commit the results of merge it will keep on showing two heads. ::
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   637
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   638
    $ hg ci -u "Shantanu <shantanu@fossee.in>" -m "Merged branches of add and tag line."
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   639
    $ hg heads 
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   640
    changeset:   6:edbe97209954
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   641
    tag:         tip
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   642
    parent:      4:fadbd6492cc4
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   643
    parent:      5:caf986b15e05
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   644
    user:        Shantanu <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   645
    date:        Tue Aug 25 17:06:03 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   646
    summary:     Merged branches of add and tag line.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   647
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   648
Here is brief and meaningful output of glog ::
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   649
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   650
    $ hg glog 
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   651
    @    changeset:   6:edbe97209954
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   652
    |\   tag:         tip
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   653
    | |  parent:      4:fadbd6492cc4
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   654
    | |  parent:      5:caf986b15e05
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   655
    | |  user:        Shantanu <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   656
    | |  date:        Tue Aug 25 17:06:03 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   657
    | |  summary:     Merged branches of add and tag line.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   658
    | |
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   659
    | o  changeset:   5:caf986b15e05
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   660
    | |  parent:      3:e1ab2aff4ddd
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   661
    | |  user:        Shantanu <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   662
    | |  date:        Tue Aug 25 16:28:24 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   663
    | |  summary:     Updated tag line for feviCol.py.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   664
    | |
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   665
    o |  changeset:   4:fadbd6492cc4
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   666
    |/   user:        Shantanu <shantanu@fossee.in>
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   667
    |    date:        Tue Aug 25 16:46:24 2009 +0530
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   668
    |    summary:     Added firsAdd.py.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   669
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   670
And we are back on track.
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   671
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   672
Workflow:
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   673
=========
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   674
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   675
This is chain of steps which can be followed for working against a project that has a centralized copy, you may want to make sure you're up to date first. This means pulling its changes and then updating. 
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   676
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   677
For example: ::
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   678
    
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   679
    $ hg pull
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   680
    $ hg update
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   681
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   682
This will grab the remote changes from the location you first cloned from. Then it will apply the changes. You can do this in one go with: ::
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   683
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   684
    $ hg pull -u
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   685
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   686
Now let's say you make some changes. You edit a file and you want to commit your change. You can do this with: ::
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   687
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   688
    $ hg commit
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   689
54
bed3fe467e21 First version of 5-6 Session of ult.
Shantanu <shantanu@fossee.in>
parents: 38
diff changeset
   690
An editor will pop-up asking you to write a message describing your change. When you're done for the day, and you have required changesets sitting in your repository. Before pushing to upstream make sure to pull and update and merge branches if required, once everything looks okay and you have single track, push the changes, ::
37
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   691
4cddf3a13843 Added merging section, and typo correction.
Shantanu <shantanu@fossee.in>
parents: 26
diff changeset
   692
    $ hg push
16
7a8f9fa7accd Completed Getting Started with Repository.
Shantanu <shantanu@fossee.in>
parents: 15
diff changeset
   693
8
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   694
Suggested Reading:
26
977009f5a22a Completed rough HandOut.
Shantanu <shantanu@fossee.in>
parents: 17
diff changeset
   695
==================
8
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   696
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   697
	* http://karlagius.com/2009/01/09/version-control-for-the-masses/
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   698
	* http://betterexplained.com/articles/a-visual-guide-to-version-control/
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   699
	* http://en.wikipedia.org/wiki/Revision_control
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   700
	* http://hgbook.red-bean.com/
461e2574d624 Added CVCS and DVCS subsection.
Shantanu <shantanu@fossee.in>
parents: 7
diff changeset
   701
	* http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/
38
ce7634ee7986 Some more typo correction.
Shantanu <shantanu@fossee.in>
parents: 37
diff changeset
   702
	* http://wiki.alliedmods.net/Mercurial_Tutorial