2009-06-08 10 views
6

¿Cómo integraría Subversion y CA Harvest SCM si utiliza Subversion para sincronizar el trabajo en un equipo y Harvest como el sistema empresarial de registro?¿Sync Subversion y Harvest SCM repositories?

Un enfoque que estoy investigando es crear un script que cargue una etiqueta SVN en Harvest, pero tengo curiosidad por saber si alguien más ha hecho algo así antes o si hay una forma mejor de abordar el problema.

+0

... aparentemente no! – cwash

+0

Si obtiene una buena respuesta, publíquela. :-) –

Respuesta

4

Terminé creando una secuencia de comandos para sincronizar Subversion a Harvest. No tenemos que sincronizar al revés, pero no sería difícil cambiar el script para hacer eso. Puede consultar el script aquí ->http://developerdad.com/2011/03/28/synchronize-subversion-to-ca-allfusion-harvest/

Estamos utilizando este script ahora con nuestro servidor CI de Jenkins (anteriormente Hudson) para que se cree un nuevo paquete Harvest (nombrado por la variable% JOB_NAME% establecido por Jenkins) con cada compilación de producción se ejecuta.

actualización

La página web ha estado arriba y abajo, así que aquí está la secuencia de comandos:

@echo off 

REM ########################################################################### 
REM # 
REM # Script file to move changes from Subversion to Harvest 
REM # 
REM ########################################################################### 

if "%1" == "" goto usage 

setlocal 

set PROJECT_STAGE=-b "" -en "" -st "" 
set VIEW=-vp "" 
set CREDENTIALS=-usr "" -pw "" 
set SUBVERSION_REPO=svn:////trunk/ 

REM Clean up any build artifacts if present 
call ant clean 

REM Create Harvest package 
hcp %1 %PROJECT_STAGE% %CREDENTIALS% 

REM Delete the checked-out Subversion code 
REM Note: You will need to remove everything (except this file of course), so more rmdir or del statements may be required below 
rmdir /S /Q project 

REM Check out the files in Harvest to modify 
hco * %PROJECT_STAGE% %CREDENTIALS% %VIEW% -p "%1" -pn "Check Out Files for Update" -up -r -s * -op pc -cp %CD% 

REM Delete the checked-out Harvest code 
REM Note: You will need to remove everything (except this file of course), so more rmdir or del statements may be required below 
rmdir /S /Q project 

REM Replace with the latest code from Subversion repository 
svn co %SUBVERSION_REPO% . 

REM Delete the .svn directories 
for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *svn') do (
    rd /s /q "%%i" 
) 

REM What are the updates for Harvest? Check them into Harvest 
hci * %PROJECT_STAGE% %CREDENTIALS% %VIEW% -p "%1" -pn "Check In Modified Files" -s * -ur -de "Added in Subversion" -if ne -op pc -cp %CD% 

REM Remove the log files from Harvest 
REM Note: You may need to change or remove this statement depending on whether you want the Harvest logs checked in 
hdv *.log %PROJECT_STAGE% %CREDENTIALS% %VIEW% -pn "Delete Versions" 

REM What removals from Harvest do we need to process? (What files were deleted in Subversion?) 
hsv %PROJECT_STAGE% %CREDENTIALS% %VIEW% -p "%1" -it r -s "*" 

REM This will not work if the file path has spaces in it. You can use %%j %%k ... in the -vp switch for one space in your project name (For example, if you have 2 spaces, it should be -vp %%j %%k %%l) 
for /f "tokens=1-5 skip=3" %%i in (hsv.log) do (
    if not "%%i"=="hsv" (
     hci "%%i" %PROJECT_STAGE% %CREDENTIALS% -vp "%%j" -p "%1" -pn "Check In Modified Files" -ro -cp %CD% 
     hri "%%i" %PROJECT_STAGE% %CREDENTIALS% -vp "%%j" -p "%1" 
    ) 
) 

REM remove read-only attribute from all files 
attrib -r -h * /s 

REM delete all harvest.sig files 
del /f /s /q harvest.sig 

endlocal 

goto end 

:usage 

echo USAGE: 
echo ----------------------------------------------------------------------------- 
echo "svn2harvest {package_name}" 
echo ----------------------------------------------------------------------------- 

:end 
+0

¡Dulce! Esa es una forma de hacerlo. – cwash

1

Sé que con subversión puede configurar el servidor para que ejecute una secuencia de comandos en cada confirmación, que podría llamar algunas funciones en CA Harvest.

Otra alternativa si está utilizando Eclipse sería integrar usando Mylyn. Mylyn se integra con Subversion y creo que hay un plugin de Eclipse para CA Harvest. ¿Acaso todos funcionarán juntos muy bien?

0
@ECHO OFF 

REM By Developer Dad 

REM ########################################################################### 
REM # 
REM # Archivo script para mover los cambios desde el SVN al Harvest 
REM # 
REM ########################################################################### 

IF "%1" == "" GOTO usage 

REM Enable local environment to be changed without affecting anything else 
REM 
SETLOCAL 

SET PROJECT_STAGE=-b "" -en "" -st "" 
SET VIEW=-vp "" 
SET CREDENTIALS=-usr "" -pw "" 
SET SUBVERSION_REPO=svn:////trunk/ 

REM Clean up any build artifacts if present 
REM 
CALL NAnt clean 

REM Create Harvest package 
REM 
HCP %1 %PROJECT_STAGE% %CREDENTIALS% 

REM Delete the checked-out Subversion code 
REM Note: You will need to remove everything (except this file of course), so more RMDIR or del statements may be required below 
REM 
RMDIR /S /Q project 

REM Check out the files in Harvest to modify 
REM 
HCO * %PROJECT_STAGE% %CREDENTIALS% %VIEW% -p "%1" -pn "Check Out Files for Update" -up -r -s * -op pc -cp %CD% 

REM Delete the checked-out Harvest code 
REM Note: You will need to remove everything (except this file of course), so more RMDIR or del statements may be required below 
REM 
RMDIR /S /Q project 

REM Replace with the latest code from Subversion repository 
REM 
SVN co %SUBVERSION_REPO% . 

REM Delete the .svn directories 
REM 
FOR /f "tokens=* delims=" %%i IN ('DIR /s /b /a:d *svn') DO (
    RD /s /q "%%i" 
) 

REM What are the updates for Harvest? Check them into Harvest 
REM 
HCI * %PROJECT_STAGE% %CREDENTIALS% %VIEW% -p "%1" -pn "Check In Modified Files" -s * -ur -de "Added in Subversion" -if ne -op pc -cp %CD% 

REM Remove the log files from Harvest 
REM Note: You may need to change or remove this statement depending on whether you want the Harvest logs checked in 
REM 
HDV *.log %PROJECT_STAGE% %CREDENTIALS% %VIEW% -pn "Delete Versions" 

REM What removals from Harvest do we need to process? (What files were deleted in Subversion?) 
REM 
HSV %PROJECT_STAGE% %CREDENTIALS% %VIEW% -p "%1" -it r -s "*" 

REM This will not work if the file path has spaces in it. You can use %%j %%k ... in the -vp switch for one space in your project name (For example, if you have 2 spaces, it should be -vp %%j %%k %%l) 
REM 
FOR /f "tokens=1-5 skip=3" %%i IN (hsv.log) DO (
    IF NOT "%%i"=="hsv" (
     HCI "%%i" %PROJECT_STAGE% %CREDENTIALS% -vp "%%j" -p "%1" -pn "Check In Modified Files" -ro -cp %CD% 
     HRI "%%i" %PROJECT_STAGE% %CREDENTIALS% -vp "%%j" -p "%1" 
    ) 
) 

REM remove read-only attribute from all files 
REM 
ATTRIB -r -h * /s 

REM delete all harvest.sig files 
REM 
DEL /f /s /q harvest.sig 

ENDLOCAL 

GOTO end 

:usage 

ECHO USAGE: 
ECHO ----------------------------------------------------------------------------- 
ECHO "svn2harvest {package_name}" 
ECHO ----------------------------------------------------------------------------- 

:end