当svn服务器IP发生变更后,svn工作目录需要重定位(relocate)。
命令行方式: svn relocate xxx
GUI客户端: 进入
relocate菜单
本文主要记录一下subclipse重定位的方法。
方法一:
eclipse中进入【SVN资源库】视图,选中一条url,右键点【重新定位】,输入新URL。
这种方法需要注意,subclipse能自动找出需要重新定位的工程,但仅限于打开的工程,
未打开的工程不会自动重定位。
另外,我遇到的一个问题是,我的工程中,既有maven父工程,又有maven子工程。
svn的路径是像下面这样:
/masterProject1
/masterProject1/subProject1
/masterProject1/subProject2
/project2
在我的workspace中,从svn检出masterProject1和project2后,又从masterProject1里选择【导入为工程subProject1,2】。
所以一共有4个工程,masterProject1,subProject1,subProject2和project2。
结果在做重定位时,报错了,有一部分工程重定位了,一部分工程没有重定位。
为避免这个问题,使用下面的方法2。
方法2:
用svn客户端,对workspace下的各工程执行重定位,然后在eclipse中,
对这些工程选 【team -> 断开】,再【team -> share project】。
当工程比较多时,一个一个操作是比较麻烦的,也没有查到怎么用命令行执行eclipse里的那些操作。
不过,断开是可以一次选中多个工程的。
share project也还好,可以多选,不过在弹出页面里还是要一个一个点一下确认才行。
下面是一个bat脚本,可以批量执行svn relocate。
-
@echo off
REM ------------------------------------------
REM -
REM ------------------------------------------
REM configure new repository path
set NEW_REPO=svn://svn.lzt.com.cn
REM set SVN_HOME=C:\svn
REM set PATH=%PATH%;%SVN_HOME%\bin
REM check svn installation
svn help > nul 2>&1
if ERRORLEVEL 1 (
echo [ERROR] svn not installed.
goto SEC_ERR_END
)
REM set eclipse workspace path
:SEC_WORKSPACE_DIR
set WORKSPACE_DIR=
set /p WORKSPACE_DIR=input workspace path:
REM echo [DEBUG] got WORKSPACE_DIR="%WORKSPACE_DIR%"
if "%WORKSPACE_DIR%" == "" (echo empty path. exit. & goto SEC_END)
cd /d %WORKSPACE_DIR%
if ERRORLEVEL 1 (
echo [ERROR] bad path. ctrl-c to quit
goto SEC_WORKSPACE_DIR
)
REM find svn working directory and exec svn relocate
for /d %%d in (*) do (
pushd %%d
if exist .svn (
echo [INFO] relocate %%d
svn info |findstr /r /c:"^URL"
echo [INFO] relocate to %NEW_REPO%
svn relocate %NEW_REPO%
if ERRORLEVEL 1 (
echo [ERROR] svn relocate. exit
goto SEC_ERR_END
)
) else ( echo [INFO] %%d is not a svn working directory. skip. )
popd
echo.
)
goto SEC_END
:SEC_ERR_END
echo [ERROR] end
:SEC_END
pause
@echo on
最后,推荐svn的URL中使用域名,而不是IP地址。
没有dns服务器的话,也可以在hosts文件中配一个。避免IP地址变更造成的麻烦。
阅读(4820) | 评论(0) | 转发(0) |