#hg++ - power tools for mercurial
Do you keep multiple clones of your repository on your system and find keeping them merged and fresh a chore?
Then this is the tool for you.
Example gif of hgpp in action
Usage
hgpp --help
Show help. Probably more up-to-date than this readme.
hgpp
Default command - lists the current branch name for each configured repo.
hgpp pull
Does an hg pull
on each repo. -u
to also update.
hgpp push
Does an hg push
on each repo.
hgpp merge
First does an hg pull, and then attempts to merge. The project will be skipped if:
- there are uncommitted changes
- the branch is default (or a differently configured parent branch)
- the branch already has default merged in
hgpp multimerge foo-branch bar-branch
Runs merge commands on several branches in a row.
This command operates on the path you run the command, rather than on each project specified in the config. It accepts a
space-separated list of "fragments" it will use to try match on a branch name (e.g. a jira case number).
- match each fragment to a full branch name
- update to that branch
- merge in default
- commit
- repeat for all matched branches
hgpp config
Print your current .hgpp config file location and contents.
Setup
####Install the tool (globally):
npm install hgpp -g
####Make a .hgpp
config file in your home directory:
(a empty config file will be generated the first time you run hgpp if it does not find a config file at the expected location)
~/.hgpp
for unix
c:/users/foobar/.hgpp
for Windows
This config file is standard JSON:
{
"projects": [
{ "path": "C:\\code\\myproj" },
{ "path": "C:\\code\\myproj_clone1" },
{ "defaultBranch": "temporary-other-default", "path": "C:\\code\\myproj_clone2" }
],
"maxConcurrent": 3,
"easymergeCmd": "customHgCommand"
}
Specify paths to your projects.
Optionally specify a different default
branch - this is useful when you're branching off of a parent branch and want to keep in sync with that parent rather than default
. If no value is provided, this defaults to default
.
maxConcurrent is optional, and specifies how many simultaneous mercurial actions it will try perform. Defaults to 3.
easymergeCmd is optional, and allows specifying a custom mercurial command to use with the hgpp multimerge feature. Without specifying this it will do hg merge default