2009-06-08 14 views
6

Jak można zintegrować Subversion i CA Harvest SCM, jeśli używasz Subversion do synchronizacji pracy w zespole i zbioru jako systemu rekordów przedsiębiorstwa?Synchronizacja Subversion i Harvest SCM repozytoriów?

Podejście, które badam, polega na utworzeniu skryptu, który ładuje znacznik SVN do pliku Harvest, ale jestem ciekawy, czy ktoś inny zrobił coś takiego wcześniej lub istnieje lepszy sposób na rozwiązanie problemu.

+0

... widocznie nie! – cwash

+0

Jeśli wpadniesz na dobrą odpowiedź, wyślij ją. :-) –

Odpowiedz

4

Skończyło się na stworzeniu skryptu do synchronizacji Subversion z Harvest. Nie musimy synchronizować odwrotnie, ale nie byłoby trudno zmienić skrypt, aby to zrobić. Możesz sprawdzić skrypt tutaj ->http://developerdad.com/2011/03/28/synchronize-subversion-to-ca-allfusion-harvest/

Używamy tego skryptu teraz z naszym serwerem Jen Jenkins (dawniej Hudson), więc tworzony jest nowy pakiet Harvest (nazwany przez zmienną% JOB_NAME% ustawioną przez Jenkinsa) z każdą wersją Produkcji jest uruchamiana.

Aktualizacja

Strona została w górę iw dół, tak oto skrypt:

@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

Słodki! To jeden sposób, aby to zrobić. – cwash

1

Wiem, że dzięki subversion można skonfigurować serwer tak, aby uruchamiał skrypt po każdym zatwierdzeniu, które może wywoływać niektóre funkcje w CA Harvest.

Inną alternatywą, jeśli korzystasz z Eclipse, będzie integracja za pomocą Mylyn. Mylyn integruje się z Subversion i myślę, że istnieje wtyczka Eclipse dla CA Harvest - być może wszystkie będą dobrze współpracować?

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