Всем привет!
Мне недавно один знакомый пожаловался, что скрипт switch.bat не работает
с svn 1.7. Я проверил - действительно не работает. Оказывается, они
ввели какую-то дополнительную проверку:
http://subversion.apache.org/docs/release-notes/1.7.html#switch-ancestry-check
Я толком не понял, что она проверяет, но она точно не даёт работать всем
нашим скриптам. Хорошо хоть, что они сделали ключик для отключения этой
проверки: --ignore-ancestry.
Но на этот ключик ругается svn 1.6:)
Я совсем не спец в bat-файлах, поэтому у меня нет идей, как определить
версию svn. Поэтому я пока предлагаю лобовое решение:
----------------8<-------------
@echo off
IF "%1" == "" (
SET REP="^/trunk"
) ELSE (
SET REP=%1
)
SET TARGET=CortexM3
SET TOOL=GCC
SET FAMILY=STM32F1XX
SET DST_DIR=.
svn switch --ignore-ancestry %REP%/Common/
%DST_DIR%/scmRTOS/Common
if errorlevel 1 goto svn16
svn switch --ignore-ancestry %REP%/Extensions/
%DST_DIR%/scmRTOS/Extensions
svn switch --ignore-ancestry %REP%/Ports/%TARGET%/%TOOL%/
%DST_DIR%/scmRTOS/%TARGET%
svn switch --ignore-ancestry
%REP%/Samples/%TARGET%/%TOOL%/%FAMILY%/1-EventFlag/prj
%DST_DIR%/2-Message/prj
svn switch --ignore-ancestry
%REP%/Samples/%TARGET%/%TOOL%/%FAMILY%/1-EventFlag/prj
%DST_DIR%/3-Channel/prj
svn switch --ignore-ancestry
%REP%/Samples/%TARGET%/%TOOL%/%FAMILY%/1-EventFlag/prj %DST_DIR%/4-Debug/prj
goto ex
:svn16
svn switch %REP%/Common/ %DST_DIR%/scmRTOS/Common
svn switch %REP%/Extensions/ %DST_DIR%/scmRTOS/Extensions
svn switch %REP%/Ports/%TARGET%/%TOOL%/ %DST_DIR%/scmRTOS/%TARGET%
svn switch %REP%/Samples/%TARGET%/%TOOL%/%FAMILY%/1-EventFlag/prj
%DST_DIR%/2-Message/prj
svn switch %REP%/Samples/%TARGET%/%TOOL%/%FAMILY%/1-EventFlag/prj
%DST_DIR%/3-Channel/prj
svn switch %REP%/Samples/%TARGET%/%TOOL%/%FAMILY%/1-EventFlag/prj
%DST_DIR%/4-Debug/prj
:ex
----------------8<-------------
Под линуксом наверное смогу сделать поаккуратнее.
Если кто-то знает лучший способ - напишите, применим его.