Chinaunix首页 | 论坛 | 博客
  • 博客访问: 622633
  • 博文数量: 142
  • 博客积分: 116
  • 博客等级: 入伍新兵
  • 技术积分: 1445
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-28 08:37
文章分类

全部博文(142)

文章存档

2017年(7)

2016年(57)

2015年(48)

2014年(30)

我的朋友

分类: WINDOWS

2016-06-13 15:49:15

当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。

  1. @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) |
给主人留下些什么吧!~~