ccm work_area /find find_str /replace new_str
如果还指定 /reg 或 /regexp,那么 find_str 和 new_str 都将被解释为正则表达式。
ccm work_area /dbpath old_path
old_path 选项无法被解释为正则表达式。/dbpath 选项使用当前数据库的路径名称来更新找到的项目的工作区标识文件。仅当移动数据库时,才必须使用此选项。在 UNIX 的基于链接的工作区上使用此选项可能导致同步工作区,以便更新指向新数据库位置的链接。如果还指定 /nosync 选项,那么同步将被延迟。但是,必须首先手动执行同步,然后才能使用工作区。
您可以将 /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 客户机执行此命令。
$ ccm work_area -dbpath /vol/acrel5/ccmdb/ccm_platform
使用此命令可更新已被移动,但可以使用其旧的工作区路径的数据库。必须从足够会话执行此命令,以更改所有工作区。如果可以从一个会话中看到所有工作区,那么一个会话便已足够。但是,如果您同时具有 Windows 和UNIX 工作区,那么必须同时从 Windows 和 UNIX 客户机执行此命令。
> ccm work_area /find platform /replace services /new
使用此命令可更新解压缩或复制为新名称的数据库。因为旧数据库正在使用旧工作区,所以 /new 选项将创建工作区。如果要复用旧的工作区(如已移动的数据库),必须首先使用 /dbpath 选项来更新工作区标识文件,以使旧工作区对于此数据库可见。
使用 /reg 或 /regexp 选项可使 work_area 命令将 find_str 和 new_str 参数解释为正则表达式。
> 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’
> 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_str 或 new_str 中存在特殊字符或空格,否则不需要任何引号(在非 UNIX 环境中)。以下示例显示没有引号的正则表达式。
> 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 文件系统是区分大小写的。
如果 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’
如果 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’