Проблема с svn 1.7

17 views
Skip to first unread message

Anton Gusev

unread,
Dec 11, 2012, 11:09:14 PM12/11/12
to scmrt...@googlegroups.com
Всем привет!

Мне недавно один знакомый пожаловался, что скрипт 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<-------------
Под линуксом наверное смогу сделать поаккуратнее.

Если кто-то знает лучший способ - напишите, применим его.


Oleksandr Redchuk

unread,
Dec 12, 2012, 5:48:54 AM12/12/12
to scmrtos-ru
2012/12/12 Anton Gusev <anto...@mail.ru>:

> Я совсем не спец в bat-файлах, поэтому у меня нет идей, как определить
> версию svn.

Сдуреть можно. Команду в обратных кавычках оно только в for принимает,
оказывается.
Я думал, уже везде.

Берём первые два символа версии.
У меня на подвиндовой машине для отладки одного dll-ки стоит аж W2K,
но уже svn 1.7.5 :-)
scmRTOS там нет :-)

for /F "usebackq tokens=1,2 delims=." %f in (`svn --version --quiet`)
do set SVNVERSION=%f.%g

Ну а дальше уже что-то в духе
if "%svnversion%" == "1.6" (set svnsw= ) else (set svnsw=--ignore-ancestry)

пробел перед закрывающей скобкой в первом set нужен.

svn switch %svnsw% ... далее по тексту.

--
wbr,
ReAl

Anton Gusev

unread,
Dec 12, 2012, 1:46:29 PM12/12/12
to scmrt...@googlegroups.com
Hi, Oleksandr Redchuk!
You wrote on 12.12.2012 16:48

> for /F "usebackq tokens=1,2 delims=." %f in (`svn --version --quiet`)
> do set SVNVERSION=%f.%g

Шаман! :-)
В общем, я поправил все скрипты (вроде все). Пожалуйста, авторы портов,
проверьте их, как будет время.


Reply all
Reply to author
Forward
0 new messages