@echo off
REM ================================================================
REM   Licensed to the Apache Software Foundation (ASF) under one
REM   or more contributor license agreements.  See the NOTICE file
REM   distributed with this work for additional information
REM   regarding copyright ownership.  The ASF licenses this file
REM   to you under the Apache License, Version 2.0 (the
REM   "License"); you may not use this file except in compliance
REM   with the License.  You may obtain a copy of the License at
REM  
REM     http://www.apache.org/licenses/LICENSE-2.0
REM  
REM   Unless required by applicable law or agreed to in writing,
REM   software distributed under the License is distributed on an
REM   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
REM   KIND, either express or implied.  See the License for the
REM   specific language governing permissions and limitations
REM   under the License.
REM ================================================================

CALL "c:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86

SET TESTDIR=E:\Full
SET TESTPORT=1234
SET "NANTARGS= "

SET TEMP=%TESTDIR%\temp
SET TMP=%TEMP%

IF NOT EXIST "%TESTDIR%\" MKDIR "%TESTDIR%"
IF NOT EXIST "%TEMP%\" MKDIR "%TEMP%"





SET SVN_URL=
SET SVN_RELURL=
for /F "usebackq tokens=1,* delims=:" %%i IN (`svn info .`) do (

  IF "%%i" == "URL" (
    SET SVN_URL=%%j
  ) ELSE IF "%%i" == "Relative URL" (
    SET SVN_RELURL=%%j
  )
)
SET SVN_URL=%SVN_URL:~1%
SET SVN_RELURL=%SVN_RELURL:~3%
SET SVN_SUBBRANCH=%SVN_RELURL:~11%
SET SVN_BRANCH=%SVN_SUBBRANCH:branches/=%
