Differences between revisions 2 and 4 (spanning 2 versions)
Revision 2 as of 2009-05-19 19:30:55
Size: 2731
Editor: localhost
Comment: converted to 1.6 markup
Revision 4 as of 2010-10-16 01:06:57
Size: 2753
Editor: mpm
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
== Bound Mode Extension == = Bound Mode Extension =
Line 9: Line 9:
=== Overview === == Overview ==
Line 28: Line 28:
=== Configuration === == Configuration ==
Line 36: Line 36:
=== Usage === == Usage ==
Line 40: Line 40:
==== hg bind ==== === hg bind ===
Line 59: Line 59:
==== hg unbind ==== === hg unbind ===
Line 66: Line 66:
=== Caveats === == Caveats ==
Line 69: Line 69:

----
CategoryExtensionsByOthers

Bound Mode Extension

This extension is not distributed with Mercurial.

Author: Bill Barry (BillBarry)

Repository: https://bitbucket.org/Bill_Barry/boundmode

Overview

This extension creates a bound mode for use with mercurial. When in bound mode, every time you commit, the system attempts to push.

There is two ways to use this extension:

  1. locally
  2. shared

When using this extension locally you may use the provided bind and unbind commands. These commands alter a file in your .hg directory. In the shared form, you put a file called .hgboundrc in the root of your repository. This file would look something like this:

[paths]
auto-push = default
[ui]
bound = True

When available in a working copy, this file will cause all clones to attempt to push to their default location after each commit. The provided commands will override this file (local usage overrides shared usage).

Configuration

Enable the extension by adding following lines to your configuration file (hgrc):

[extensions]
boundmode=/path/to/boundmode.py

Usage

The extension adds two commands:

hg bind

hg bind will locally put you into bound mode:

hg bind [-f] [-a] [path]

The options provided with this command are:

-f or --force

change the bound path even if already bound

-a or --auto

change the auto path even if it already exists

The way bound mode works, you have 3 available paths which will be used in order:

  1. local.bound-push
  2. local.auto-push
  3. shared.auto-push

When you bind, if you do not provide a path, none of these paths are modified (if none are available then the command will fail). If you do provide a path, local.auto-push will be filled in and if it already exists then local.bound-push will be modified (unless -a is used).

hg unbind

hg unbind takes you out of bound mode

hg unbind

Caveats

This extension was written as something of a proof of concept to experiment with how doing this might work. The original intent was to imitate the way that Bazaar works in its Centralized workflow, but to do it while still feeling like you are using Mercurial (ie. not imitate to acknowledge that the Bazaar pattern is better, but rather to take the best parts of that workflow and bring it over to hg). As such, this extension is subject to changing at the whims of anybody willing to provide a patch (so long as the patch makes some sense) and is unlikely to ever be included in the base Mercurial distribution.


CategoryExtensionsByOthers

BoundModeExtension (last edited 2013-08-26 20:10:31 by StephenRasku)