work_area 命令语法

以下示例仅显示 /find/dbpath 选项的语法。

您可以将 /new 选项添加到 /find/replace 中以指示新数据库的存在。这就意味着此会话无法查看 /find 指定的原始工作区,且必须被忽略。数据库解压缩到新路径名后,且想要忽略原始数据库工作区,或者如果原始数据库不存在,那么此选项非常有用。如果没有添加 /new 选项,那么该命令仅对包含可视工作区的项目执行操作。

可以将 /show 选项添加到 /find/dbpath,以显示更新的项目。如果使用 /find/replace 来使用 /show,那么将显示替换路径名。如果正在将 /find/replace 与正则表达式 (/regexp) 配合使用,那么此命令很有用。

示例

  • 以下命令将查找如下所有工作项目:具有包含 - 字符的可视工作区和路径,并将 - 更改为 ~

    > ccm work_area /find "-" /replace "~"

    将数据库定界符从 - 更改为 ~ 后,可以使用此命令。必须从足够会话执行此命令,以更改所有工作区。如果可以从一个会话中看到所有工作区,那么一个会话便已足够。但是,如果您同时具有 Windows 和UNIX 工作区,那么必须同时从 Windows 和 UNIX 客户机执行此命令。

  • 以下命令将查找如下所有准备项目:具有包含 - 字符的可视工作区和路径,并将 - 更改为 ~

    > ccm work_area /find "-" /replace "~" /scope prep

    将数据库定界符从 - 更改为 ~ 后,可以使用此命令。必须从足够会话执行命令 build_mgr,以更改所有构建管理工作区。如果可以从一个会话中看到准备工作区,那么一个会话便已足够。但是,如果您同时具有 Windows 和 UNIX 构建管理工作区,那么必须同时从 Windows 和 UNIX 客户机执行此命令。

  • For UNIXUNIX 用户:以下命令为 /vol/acrel5/ccmdb/ccm_platform 查找所有带有工作区的工作项目,并使用当前数据库位置的路径来更新工作区标识文件。

    $ ccm work_area -dbpath /vol/acrel5/ccmdb/ccm_platform

    使用此命令可更新已被移动,但可以使用其旧的工作区路径的数据库。必须从足够会话执行此命令,以更改所有工作区。如果可以从一个会话中看到所有工作区,那么一个会话便已足够。但是,如果您同时具有 Windows 和UNIX 工作区,那么必须同时从 Windows 和 UNIX 客户机执行此命令。

  • 以下命令将查找路径中包含 platform 字符的所有工作项目,并将该字符串更改为 services

    > ccm work_area /find platform /replace services /new

    使用此命令可更新解压缩或复制为新名称的数据库。因为旧数据库正在使用旧工作区,所以 /new 选项将创建工作区。如果要复用旧的工作区(如已移动的数据库),必须首先使用 /dbpath 选项来更新工作区标识文件,以使旧工作区对于此数据库可见。

正则表达式示例

使用 /reg/regexp 选项可使 work_area 命令将 find_strnew_str 参数解释为正则表达式。

正则表达式可能非常有用,但是具有以下限制:
  • Windows 客户机使用反斜杠表示目录名称。正则表达式中的反斜杠可能被解释为转义或替换构造的一部分。
  • 如果将 find_strnew_str 参数括在引号中,那么命令行处理可能会变得混乱。发生这种情况的原因是:UNIX shell 和 Rational® Synergy 命令行处理器,甚至 Windows 上的客户机都可以解释引号。
以下示例显示使用正则表达式的工作区路径更改。
  • c:\ccm_wa\joe45\ 下面的所有工作区路径缩短为 c:\ccm_wa\
    > ccm wa /find "joe45\\\\" /replace "" /reg /p
    Checking work area paths for replacement...
    1 project(s) will be checked.
    Setting path for work area of ‘hsai~1’ to ‘c:\ccm_wa\hsai~1’...
    1 project work area path(s) were updated:
       ‘hsai~1’: ‘c:\ccm_wa\hsai~1’

    从路径中移除目录时,请包含关联的反斜杠。指定前导反斜杠很简单,但是以下示例使用尾随反斜杠:

    joe45\.

    Rational Synergy 命令处理器可看见 joe45 的前导引号。然后,在查找尾随引号时如果遇到反斜杠,那么它会将反斜杠解释为在参数中包含后续引号,而非解释为右引号。 因此,必须通过在前面附加另一个反斜杠来“转义”反斜杠。 另外,正则表达式会将 Rational Synergy 命令处理生成的表达式 (joe45\) 错误解释为没有相应替换构造字符的反斜杠,除非尾随反斜杠本身使用另外零个反斜杠字符进行了转义。

    如果指定用多个引号括起的目录,必须为引号尾随目录反斜杠使用四个引号(紧邻右引号)。 参数中间的目录反斜杠可以被转义一次,以便正则表达式处理器不会将反斜杠解释为替换构造的开始。

    > ccm wa /find "ccm_wa\\joe45\\\\" /replace "" /reg /p hsaw~1
    Checking work area paths for replacement...
    1 project(s) will be checked.
    Setting path for work area of ‘hsaw~1’ to ‘c:\users\joe\hsaw~1’...
    1 project work area path(s) were updated:
       ‘hsaw~1’: ‘c:\users\joe\hsaw~1’
  • 从路径中移除带有前导特殊字符的目录,方法是使用后随反斜杠并将工作区路径从 c:\ccm_wa\+joe45\hsaw~1 缩短为 c:\ccm_wa\hsaw~1
    > ccm wa /find "\+joe45\\\\" /replace "" /reg /p hsaw~1
    Checking work area paths for replacement...
    1 project(s) will be checked.
    Setting path for work area of ‘hsaw~1’ to ‘c:\ccm_wa\hsaw~1’...
    1 project work area path(s) were updated:
      ‘hsaw~1’: ‘c:\ccm_wa\hsaw~1’
  • 从路径中除去带有前导特殊字符的目录,方法是使用前导反斜杠。
    > ccm wa /find "\\\+joe45" /replace ""  /reg /p hsaw~1
    Checking work area paths for replacement...
    1 project(s) will be checked. Setting path for work area of ‘hsaw~1’ to
    ‘c:\ccm_wa\hsaw~1’...
    1 project work area path(s) were updated:
      ‘hsaw~1’: ‘c:\ccm_wa\hsaw~1’

    通常,除非在 find_strnew_str 中存在特殊字符或空格,否则不需要任何引号(在非 UNIX 环境中)。以下示例显示没有引号的正则表达式。

  • 将工作区路径从 c:\ccm_wa\joe45\junk~1 转换为 c:\temp\ccm\joe45\junk~1
    > ccm wa /find users\\joe\\ccm_wa\\ /replace temp\\ccm\\ /reg /p junk~1
    Checking work area paths for replacement...
    1 roject(s) will be checked. 
    Seting path for work area of ‘junk~1’ to
    ‘c\temp\ccm\joe45\junk~1’...
    1 roject work area path(s) were updated:
       ‘jnk~1’: ‘c:\temp\ccm\joe45\junk~1’

    在这种情况下,必须转义的唯一字符是反斜杠,通过反斜杠,正则表达式处理器将正常启动替换构造。

    不转义替换构造的一个常见原因是 UNIX 文件系统是区分大小写的。

  • For UNIXUNIX 用户:执行 ccm query 命令(返回包含工作区的三个项目)后,请将部分路径名从小写转换为首字母大写。

    如果 Rational Synergy 管更改了目录命名中的标准,那么可能需要执行此操作。

    pc-1: /users/joe/ccm_wa/owner/pc-1
    pi-1: /users/joe/ccm_wa/static/pi-1
    pw-1: /users/joe/ccm_wa/owner/pw-

    参数包含在引号中以防止 UNIX shell 处理 * 和其他特殊字符,同时将转义反斜杠,尽管此选项在这种情况下是可选的。括号识别用于后续替换的第一个和第二个表达式。选择集 (@) 运算符指示查询结果。

    $ ccm wa -find "/users/joe/ccm_wa/([^/]+)/(.*)" -replace \
    "/users/joe/ccm_wa/\\u\\1/\\2" -reg @
    Checking work area paths for replacement...
    3 project(s) will be checked.
    Setting path for work area of ‘pc-1’ to ‘/users/joe/ccm_wa/Owner/pc-1’
    	 . . .
    Setting path for work area of ‘pi-1’ to ‘/users/joe/ccm_wa/Static/pi-1’
    	 . . . 
    Setting path for work area of ‘pw-1’ to ‘/users/joe/ccm_wa/Owner/pw-1’
    	 . . . 
    3 project work area path(s) were updated:
    	    	    ‘pc-1’: ‘/users/joe/ccm_wa/Owner/pc-1’
    	    	    ‘pi-1’: ‘/users/joe/ccm_wa/Static/pi-1’
    	    	    ‘pw-1’: ‘/users/joe/ccm_wa/Owner/pw-1’
  • For WindowsWindows 用户:执行 ccm query 命令(返回包含工作区的三个项目)后,请将部分路径名从首字母大写变为小写。

    如果 Rational Synergy 管更改了目录命名中的标准,那么可能需要执行此操作。

    pc-1: c:\joe\ccm_wa\Owner\pc-1
    pi-1: c:\joe\ccm_wa\Static/pi-1
    pw-1: c:\joe\ccm_wa\Owner/pw-1

    参数包含在引号中以防止 shell 处理 * 和其他特殊字符,同时将转义反斜杠,尽管此选项在这种情况下是可选的。括号识别用于后续替换的第一个和第二个表达式。选择集 (@) 运算符指示查询结果。

    > ccm wa /find "\\joe\ccm_wa\\([^\\]+)\\(.*)" /replace
    "\\joe\ccm_wa\\\1\\\1\\\2" /reg @
    Checking work area paths for replacement...
    3 project(s) will be checked.
    Setting path for work area of ‘pc-1’ to ‘C:\joe\ccm_wa\owner\pc-1’
    	 . . .
    Setting path for work area of ‘pi-1’ to ‘C:\joe\ccm_wa\static\pi-1’
    	 . . . 
    Setting path for work area of ‘pw-1’ to ‘C:\joe\ccm_wa\owner\pw-1’
    	 . . . 
    3 project work area path(s) were updated:
    	   	   ‘pc-1’: ‘C:\joe\ccm_wa\owner\pc-1’
    	   	   ‘pi-1’: ‘C:\joe\ccm_wa\static\pi-1’
    	   	   ‘pw-1’: ‘C:\joe\ccm_wa\owner\pw-1’

反馈