Code Scratchpad: Mercurial

From iDempiere en
Jump to navigation Jump to search


.hgignore

# Ignore all files under bin
bin

# use glob syntax.
syntax: glob

*.class

# switch to regexp syntax.
syntax: regexp

Replace file in same location as original

hg cat -r 71 src/org/compiere/model/I_AD_Client.java -o %p

Save to alternate location

hg cat -r 71 src/org/compiere/model/I_AD_Client.java -o /tmp/%s
hg cat -r tip src/org/compiere/ReportCustom/ZZ_Quotation.jrxml -o /tmp/%s

Get files as at specific revision

mkdir /tmp/test; hg cat -r 10469 org.adempiere.server-feature/buckminster_linux_gtk_x86_64.properties org.adempiere.server-feature/server.product.eventtest.launch -o /tmp/test/%s

Purge (remove untracked files)

Is there a way to delete all untracked files in a mercurial working area?  Yes, with the purge extension.

Installing Purge

This extension is shipped by default with mercurial but turned off.   To enable it, modify your config file (.hgrc on Unix, Mercurial.ini on  Windows) to add
[extensions] 
purge = This activates the plugin.  You can now use
$ hg purge to delete all untracked files.

Patches

Mercurial can generate patch files in the unified diff format with the hg diff command.

Follow renames

hg log -f .classpath

Use extdiff to diff 2 revisions

hg extdiff -r tip -r 1000 src/org/compiere/model/MShippingInstr.java

Enable extdiff extension and set Meld as the default diff tool

.hgrc:

[extensions]
hgext.extdiff =

[extdiff]
cmd.extdiff = meld

Resolving Conflicts

hg resolve -m file.txt

hg resolve -t {editor} file

Default paths

Edit hgrc file (under .hgrc):

[paths]
default=ssh://user@server://path/to

[paths]
default-push = ssh://hg@example.com/path

Basics

hg add / hg addremove (add specific, or add/remove all)

hg init

hg log (-v & --debug) -r : specific revision

hg clone

hg commit -m "A small change - for testing the tagging system"

hg push

Branches

Create new branch:

hg branch development

.. commit files ..

hg commit

Switch between branches:

hg update development

hg update default

Merging branches:

hg update development

hg merge default

... merges default into development

Tagging

hg tags

hg tag -m "Second tag" "V1.01"

Clone the specified tag (exact copy)

hg clone -r "V1.00" TestProject TestProject1

hg clone -r "V1.0.4a_20140217" ssh://user@server://path/to destination

To pull (don't forget to update!)

hg pull

hg update

NB: Always use filesystem snapshots using tar (before doing any critical work) so that you can backout gracefully from bad pulls and bad commits.

Viewing revisions for a file

hg log src/org/compiere/model/MShippingInstr.java -v | more

Clone using non-default port

hg clone ssh://user@server:22227//path/to

Credits

Initial contribution by: nTier Software Services http://www.ntier.co.za ngordon7000

Add your credit here.