Skip to content

Instantly share code, notes, and snippets.

@fabriciocolombo
Created February 14, 2013 11:31
Show Gist options
  • Save fabriciocolombo/4952240 to your computer and use it in GitHub Desktop.
Save fabriciocolombo/4952240 to your computer and use it in GitHub Desktop.
From http://www.cesarromero.com.br/script-para-baixar-atualizacoes-de-repositorios-subversion-mercurial-e-git
@echo off
::--------------------------------------------------------------------------
:: Copyright (c) 2012-2013, Cesar Romero
:: All rights reserved.
::
:: Code license Mozilla Public License 1.1
::
:: Redistribution and use in source and binary forms, with or without
:: modification, are permitted provided that the following conditions are met:
::
:: - Redistributions of source code must retain the above copyright notice,
:: this list of conditions and the following disclaimer.
::
:: - Redistributions in binary form must reproduce the above copyright notice,
:: this list of conditions and the following disclaimer in the documentation
:: and/or other materials provided with the distribution.
::
:: - Neither the name of this library nor the names of its contributors may be
:: used to endorse or promote products derived from this software without
:: specific prior written permission.
::
:: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
:: AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
:: IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
:: ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
:: LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
:: CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
:: SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
:: INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
:: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
:: ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
:: POSSIBILITY OF SUCH DAMAGE.
::--------------------------------------------------------------------------
:START
cls
setlocal ENABLEDELAYEDEXPANSION
:: left blank next 2 lines after set EOL=^
set EOL=^
:: keep last 2 lines blank
set ROOT=%CD%
:ENVIRONMENT
set UPDATE_HG=1
set UPDATE_GIT=1
set UPDATE_SVN=1
set HG_CMD="C:\Program Files\TortoiseHg\hg.exe"
set GIT_CMD="C:\Program Files (x86)\Git\cmd\git.exe"
set SVN_CMD="C:\Program Files\SlikSvn\bin\svn.exe"
set SVN_ASYNC_CMD=C:"\Program Files"\TortoiseSVN\bin\TortoiseProc.exe
set HG_PARAMS=pull -u
set GIT_PARAMS=pull --all -u
set SVN_PARAMS=update
set SVN_ASYNC_PARAMS=/command:update /path:%%G
:: SVN_ASYNC=1 call GUI async, default 0
set SVN_ASYNC=0
:: English = EN_US
:: Portugues Brasil = PT_BR
set SCRIPT_LANGUAGE=PT_BR
:RESOURCESTRING
if "%SCRIPT_LANGUAGE%"=="EN_US" (
goto PORTUGUES
)
:ENGLISH
set SCommandNotFound=not found, please check the command
set SDisable=disabled
set SDone=My work is done, now go write some code.
set SEnterKeyToContinue=Type ENTER key to continue.
set SError=Error
set SNoCommandAvailable=No command found or path configured: hg, git or svn
set SProcessing=processing
set SRepositories=Repositories
set SProcessingErrors=Errors:
set SSearchingUpdates=Searching for updates in
goto PROCESS
:PORTUGUES
set SCommandNotFound=nao encontrado, por favor verifique o comando
set SDisable=desabilitado
set SDone=Meu trabalho esta pronto, agora va escrever algum codigo.
set SEnterKeyToContinue=Tecle ENTER para continuar.
set SError=Erro
set SNoCommandAvailable=Nenhum comando encontrado ou configurado o path: hg, git or svn
set SProcessing=processando
set SProcessingErrors=Erros:
set SRepositories=Repositorios
set SSearchingUpdates=Procurando atualizacoes em
:PROCESS
set PROCESSCOUNT=0
:TESTMERCURIAL
if "!UPDATE_HG!"=="0" (
set UPDATE_HG=- Mercurial %SDisable%
goto TESTGIT
)
if not exist %HG_CMD% (
set UPDATE_HG=- %HG_CMD% %SCommandNotFound% "HG_CMD".
goto TESTGIT
)
set /a PROCESSCOUNT+=1
:TESTGIT
if "!UPDATE_GIT!"=="0" (
set UPDATE_GIT=- Git %SDisable%
goto TESTSUBVERSION
)
if not exist %GIT_CMD% (
set UPDATE_GIT=- %GIT_CMD% %SCommandNotFound% "GIT_CMD".
goto TESTSUBVERSION
)
set /a PROCESSCOUNT+=1
:TESTSUBVERSION
if "!UPDATE_SVN!"=="0" (
set UPDATE_SVN=- Subversion %SDisable%
goto END
)
if "%SVN_ASYNC%"=="1" (
set SVN_CMD=%SVN_ASYNC_CMD%
set SVN_PARAMS=%SVN_ASYNC_PARAMS%
)
if not exist %SVN_CMD% (
if "%SVN_ASYNC%"=="0" (
set UPDATE_SVN=- %SVN_CMD% %SCommandNotFound% "SVN_CMD".
goto PROCESSREPOSITORIES
)
)
set /a PROCESSCOUNT+=1
if "%SVN_ASYNC%"=="1" (
set SVN_CMD=start %SVN_ASYNC_CMD%
)
:PROCESSREPOSITORIES
echo.
if "!PROCESSCOUNT!"=="0" (
echo SNoCommandAvailable
goto END
)
set HGCOUNT=0
set GITCOUNT=0
set SVNCOUNT=0
set ERRORS=
for /D /R %%G in ("*") do (
if "!UPDATE_HG!"=="1" (
if exist "%%G\.hg" (
echo Mercurial %SProcessing%: %%G
set /a HGCOUNT+=1
echo.
cd /d %%G
%HG_CMD% %HG_PARAMS%
if not ERRORLEVEL 0 set ERRORS=!ERRORS! Mercurial %%G - !ERRORLEVEL! !EOL!
echo.
)
)
if "!UPDATE_GIT!"=="1" (
if exist "%%G\.git" (
echo Git %SProcessing%: %%G"
set /a GITCOUNT+=1
echo.
cd /d %%G
%GIT_CMD% %GIT_PARAMS%
if not ERRORLEVEL 0 set ERRORS=!ERRORS! Git %%G - !ERRORLEVEL! !EOL!
echo.
)
)
if "!UPDATE_SVN!"=="1" (
if exist "%%G\.svn" (
echo Subversion %SProcessing%: %%G"
set /a SVNCOUNT+=1
echo.
cd /d %%G
echo %SVN_CMD% %SVN_PARAMS%
%SVN_CMD% %SVN_PARAMS%
if not ERRORLEVEL 0 set ERRORS=!ERRORS! Subversion %%G - !ERRORLEVEL! !EOL!
echo.
)
)
)
:END
echo.
echo %SRepositories%
echo.
if "!UPDATE_HG!"=="1" (
echo Mercurial: !HGCOUNT!
) else (
echo !UPDATE_HG!
)
if "!UPDATE_GIT!"=="1" (
echo Git: !GITCOUNT!
) else (
echo !UPDATE_GIT!
)
if "!UPDATE_SVN!"=="1" (
echo Subversion: !SVNCOUNT!
) else (
echo !UPDATE_SVN!
)
echo.
if not "!ERRORS!"=="" (
echo %SProcessingErrors% !EOL! !ERRORS!
)
echo.
if "!PROCESSCOUNT!"=="0" (
set /P USER_INPUT="%SEnterKeyToContinue%"
) else (
set /P USER_INPUT="%SDone%"
)
:STOP
:: Hey! Go back to root directory
cd %ROOT%
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment