-
-
Save stantonk/1994409 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# This script finds all the mercurial repositories in the current directory | |
# and does a "hg pull -u" to get the latest changes from all the repositories. | |
# | |
# Make sure you know what you're doing before running this ;-) | |
confirm_prompt() { | |
read -p "Are you sure you want to 'hg pull -u' every repository? " -n 1 | |
echo | |
if [[ ! $REPLY =~ ^[Yy]$ ]]; then | |
exit 1 | |
fi | |
} | |
confirm_prompt | |
targetDir=`pwd` | |
dirObjs=`ls $targetDir` | |
# check the current directory for mercurial repositories | |
for d in $dirObjs | |
do | |
if [ -d $d ] && [ -f "$d/.hg/hgrc" ]; then | |
echo "--------" | |
echo "Updating mercurial repository in $d" | |
cd $d | |
hg pull -u | |
cd .. | |
fi | |
done |
Added "-------" before each pull is performed, makes it easier to read the status of each pull. Some pulls may require merges afterwards, this makes it easier to read which ones have stuff todo.
Cool, this should come in handy!
This is a handy script, just one suggestion though, if you can add hg update and merge for +1 heads, that will be great.
Here is a windows version for that.
`@ECHO OFF
REM This script finds all the mercurial repositories in the current directory
REM and does a "hg pull -u" to get the latest changes from all the repositories.
REM
REM Make sure you know what you're doing before running this ;-)
:choice
set /P c=Are you sure you want to 'hg pull -u' every repository? [Y/N]
if /I "%c%" EQU "Y" goto :pull
if /I "%c%" EQU "N" goto :end
goto :choice
:pull
REM check the current directory for mercurial repositories
echo
for /f "tokens=*" %%i in ('dir /ad /b') do (
cd %%i
if EXIST ..hg (
echo
echo -------- START UPDATE "%%i" --------
hg pull -u
echo --------- END UPDATE "%%i" ---------
echo
)
cd ..
)
echo
echo ALL PROJECTS UPDATED
pause
exit
:end
echo
echo UPDATE CANCELED
pause
exit`
Heh, already used it when I didn't intend to. Added a confirm prompt to hopefully stop that from happening ;-)