Friday, May 24, 2013

Basic commands of Mercurial

These commands are very much to the subversion.

1. Creating a repository (hg init)

 Create a mercurial repository in an empty directory by using the init command:
[root@localhost ~]# mkdir Test
[root@localhost ~]# cd Test
[root@localhost Test]# hg init
[root@localhost Test]# ls -lar
total 12
drwxr-xr-x. 3 root root 4096 May 21 06:42 .hg
dr-xr-x---. 36 root root 4096 May 21 06:40 ..
drwxr-xr-x. 3 root root 4096 May 21 06:42 .

Now there is an empty repository created, locally in your directory. The repository contains both a
working copy, and the repository data (the history information).

2. Adding a file (hg add)

Schedule a file for addition
[root@localhost Test]# echo "Testing1" >>test.txt
[root@localhost Test]# ls -lar
total 16
-rw-r--r--. 1 root root 9 May 21 06:47 test.txt
drwxr-xr-x. 3 root root 4096 May 21 06:42 .hg
dr-xr-x---. 36 root root 4096 May 21 06:40 ..
drwxr-xr-x. 3 root root 4096 May 21 06:47 .
[root@localhost Test]# hg add
adding test.txt

3. Committing a file (hg commit)

Commit command is used to save your changes in the current repository.
[root@localhost Test]# hg commit -m "my first commit"

4. Inspecting History (hg log)

Log command is used to see all changes in your repository.
[root@localhost Test]# hg log
changeset: 0:1b9e0c6235b3
tag: tip
user: abdul waheed abdulwaheed18@gmail.com
date: Tue May 21 06:49:51 2013 -0700
summary: my first commit

We can aslo look at parts of the history by specify revision ranges:
[root@localhost Test]# hg log -r 1
changeset: 1:c5ed72928a5e
tag: tip
user: abdul waheed abdulwaheed18@gmail.com
date: Tue May 21 06:59:28 2013 -0700
summary: second commit
[root@localhost Test]# hg log -r 1:2 # From 1 to 2
[root@localhost Test]# hg log -r :1 # Up to, and including 1.
[root@localhost Test]# hg log -r 2: # From, and including 2

5. Status (hg status)

Status command is used to tells us about modified, removed, or renamed files.
[root@localhost Test]# echo "testing2" >>test2.txt # creating new file
[root@localhost Test]# hg status # test2 is unknown to hg
? test2.txt
[root@localhost Test]# hg add # Adding test2 to hg
adding test2.txt
[root@localhost Test]# hg status #test2 is not yet committed.
A test2.txt

6. Remove Command (hg rm)

Remove command is used to remove the file.
[root@localhost Test]# hg rm test.txt
[root@localhost Test]# hg status
R test.txt
[root@localhost Test]# hg commit -m "removing test.txt file"
[root@localhost Test]# hg log
changeset: 2:689cfc786a1c
tag: tip
user: abdul waheed abdulwaheed18@gmail.com
date: Tue May 21 22:35:30 2013 -0700
summary: removing test.txt file
changeset: 1:c5ed72928a5e
user: abdul waheed abdulwaheed18@gmail.com
date: Tue May 21 06:59:28 2013 -0700
summary: second commit
changeset: 0:1b9e0c6235b3
user: abdul waheed abdulwaheed18@gmail.com
date: Tue May 21 06:49:51 2013 -0700
summary: my first commit

7. Update (hg update)

To check where we are right now ? Use the identity command to check :
[root@localhost Test]# hg identify -n
2

Use update command to update the repository :

[root@localhost Test]# hg update # repository is upto date
0 files updated, 0 files merged, 0 files removed, 0 files unresolved

To update at some specific revision use '-r'

[root@localhost Test]# hg update -r 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
[root@localhost Test]# ls
test2.txt test.txt

8. Tag Command (hg tag)

Tag command is used to assign your own symbolic names to specific revisions.
[root@localhost Test]# hg tags
tip 2:689cfc786a1c

[root@localhost Test]# hg log
changeset: 2:689cfc786a1c
tag: tip
user: abdul waheed abdulwaheed18@gmail.com
date: Tue May 21 22:35:30 2013 -0700
summary: removing test.txt file
changeset: 1:c5ed72928a5e
user: abdul waheed abdulwaheed18@gmail.com
date: Tue May 21 06:59:28 2013 -0700
summary: second commit
changeset: 0:1b9e0c6235b3
user: abdul waheed abdulwaheed18@gmail.com
date: Tue May 21 06:49:51 2013 -0700
summary: my first commit

[root@localhost Test]# hg tag -r 1 adding-tag-to-r1 # Adding tag at revision 1

[root@localhost Test]# hg log
changeset: 3:ccb2abafd599
tag: tip
user: abdul waheed abdulwaheed18@gmail.com
date: Tue May 21 22:48:34 2013 -0700
summary: Added tag adding-tag-to-r1 for changeset c5ed72928a5e
changeset: 2:689cfc786a1c
user: abdul waheed abdulwaheed18@gmail.com
date: Tue May 21 22:35:30 2013 -0700
summary: removing test.txt file
changeset: 1:c5ed72928a5e
tag: adding-tag-to-r1 #tag added to revision 1
user: abdul waheed abdulwaheed18@gmail.com
date: Tue May 21 06:59:28 2013 -0700
summary: second commit
changeset: 0:1b9e0c6235b3
user: abdul waheed abdulwaheed18@gmail.com
date: Tue May 21 06:49:51 2013 -0700
summary: my first commit

9. Diff command (hg diff)

Diff command will show difference between the working and repository revision.
[root@localhost Test]# ls
test2.txt
[root@localhost Test]# vi test2.txt
[root@localhost Test]# hg diff # showing diff for file test2.txt
diff -r 689cfc786a1c test2.txt
--- a/test2.txt Tue May 21 22:35:30 2013 -0700
+++ b/test2.txt Tue May 21 22:52:54 2013 -0700
@@ -1,1 +1,2 @@
testing2
+Adding one more line to check diff

10. Pull command (hg pull)

Pull command is used to get all changes from another repository into the current one.
[root@localhost Test]# hg pull https://bitbucket.org/abdulwaheed18/testing

11. Push Command (hg push)

Push command is used to send all changes from your repository to another one.
[root@localhost Test]# hg push https://bitbucket.org/abdulwaheed18/testing

12. Clone Command (hg clone)

Clone command is used to makes a clone of a repository with the complete project history. It makes a complete copy of another repository so that we will have our own local, private one to work in.
[root@localhost test_clone]# hg clone https://bitbucket.org/abdulwaheed18/testing # garbbing testing
warning: bitbucket.org certificate with fingerprint 24:9c:45:8b:9c:aa:ba:55:4e:01:6d:58:ff:e4:28:7d:2a:14:ae:3b not verified (check hostfingerprints or web.cacerts config setting)
http authorization required
realm: Bitbucket.org HTTP
user: abdulwaheed18
password:
warning: bitbucket.org certificate with fingerprint 24:9c:45:8b:9c:aa:ba:55:4e:01:6d:58:ff:e4:28:7d:2a:14:ae:3b not verified (check hostfingerprints or web.cacerts config setting)
destination directory: testing
warning: bitbucket.org certificate with fingerprint 24:9c:45:8b:9c:aa:ba:55:4e:01:6d:58:ff:e4:28:7d:2a:14:ae:3b not verified (check hostfingerprints or web.cacerts config setting)
requesting all changes
warning: bitbucket.org certificate with fingerprint 24:9c:45:8b:9c:aa:ba:55:4e:01:6d:58:ff:e4:28:7d:2a:14:ae:3b not verified (check hostfingerprints or web.cacerts config setting)
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
warning: bitbucket.org certificate with fingerprint 24:9c:45:8b:9c:aa:ba:55:4e:01:6d:58:ff:e4:28:7d:2a:14:ae:3b not verified (check hostfingerprints or web.cacerts config setting)
warning: bitbucket.org certificate with fingerprint 24:9c:45:8b:9c:aa:ba:55:4e:01:6d:58:ff:e4:28:7d:2a:14:ae:3b not verified (check hostfingerprints or web.cacerts config setting)
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved

[root@localhost test_clone]# ls # we got local copy of testing
testing

[root@localhost testing]# hg log # local copy with the history
changeset: 1:07c9802fabde
tag: tip
user: abdulwaheed18@gmail.com
date: Tue May 21 02:35:52 2013 -0700
summary: commiting second tym
changeset: 0:7aafa4bde466
user: abdulwaheed18@gmail.com
date: Tue May 21 02:00:18 2013 -0700
summary: test

[root@localhost testing]# hg summary # gives the repository information
parent: 1:07c9802fabde tip
commiting second tym
branch: default
commit: (clean)
update: (current)

13. Help Command (hg help)

Last but not least, Help command will give you the detail explanation of all commands supported by Mercurial.
hg help” will give list of all command.
To check particular command use “hg help <command_name>