5

How can I update multiple mercurial (hg) repositories from their shared parent's directory?

/plugins/search
/plugins/overview
/plugins/chart

I want to change a branch to default one and update them all at once

cd /plugins/search
hg update -C default
hg pull -u
Sergii Tanchenko
  • 702
  • 6
  • 18

3 Answers3

2

Run the following from the parent directory, plugins in this case:

find . -type d -maxdepth 1 -exec hg update -C default -R {} \;
find . -type d -maxdepth 1 -exec hg pull -u -R {} \;

To clarify:

  • find . searches the current directory
  • -type d to find directories, not files
  • -maxdepth 1 for a maximum depth of one sub-directory
  • -exec {} \; runs a custom command for every find
  • hg update -C default -R {} hg changes branch to default in each repository
  • hg pull -u -R {} hg updates to new branch head if changesets were pulled in each repository
Sergii Tanchenko
  • 702
  • 6
  • 18
2

Finding repositories deeper in the directory tree

find . -type d -iname .hg -exec echo \; -exec hg pull -u -R {}/.. \;

The initial -exec echo \; is only there to keep the output clean.

Click here for more find galore.

Community
  • 1
  • 1
Serge Stroobandt
  • 28,495
  • 9
  • 107
  • 102
0

Run this command on your root directory of project which is plugin

find . -maxdepth 1 -type d -print -execdir git --git-dir={}/.git --work-tree=$PWD/{} pull origin develop;

Pramod Lawate
  • 615
  • 1
  • 7
  • 21