【问题标题】:How can I use non-interactive mode of CCRC?如何使用 CCRC 的非交互模式?
【发布时间】:2014-08-15 04:06:46
【问题描述】:

我在 Windows 机器上使用rcleartool 8.0.0.6。有没有办法使用rcleartool非交互模式?

例如,如果我输入:rcleartool lsview -s,客户端会要求我在交互模式下输入服务器 URL、用户名/密码。

有没有办法使用rcleartool lsview -s -username [username] -pass [password] -server [server]
我想在我的 java 代码中使用该命令,所以非交互模式应该更好?
有什么建议吗?

【问题讨论】:

    标签: clearcase-remote-client


    【解决方案1】:

    ClearTeam 8.x

    如“The ClearCase 8.x remote client command-line interface (rcleartool)”中所述:

    rcleartool 是 IBM Rational ClearCase 远程客户端 (CCRC) 的命令行界面。
    此接口最初作为单独下载发布以与 V7.1.2.x 及更高版本兼容,在 V8.0.0.3 中提供,并包含本文档中描述的更改。

    rcleartool login 不是caching credentials before (7.x)
    它现在应该缓存这些凭据。

    CR 3508 提到增强功能已于 2013 年 6 月 14 日提交 RFE(增强请求):

    在 CCRC CLI 单行模式下,您应该只指定一次登录凭据。

    rcleartool 的会话缓存在 8.0.0.3 中提供

    这意味着在一个rcleartool login -lname xxx -server xxx -password xxx 之后,所有其他rcleartool 命令不再需要登录名/密码。


    ClearCase 7.x

    您可以尝试关注 IBM 文章“How to run rcleartool without entering username, password and server URL every time

    建议修改rcleartool.bat 脚本。

    原因

    一般运行rcleartool(不在rcleartool提示下),每次都需要输入用户名、密码和服务器地址。

    例如:

    rcleartool lsvob -username myusername -password mypassword -server  http://myserver:12080/TeamWeb/services/Team
    
    rcleartool lsview -username myusername -password mypassword -server  http://myserver:12080/TeamWeb/services/Team
    

    回答

    您可以备份原来的rcleartool.bat(UNIX下为rcleartool),然后修改该文件如下:

    rcleartool.bat中找到以下行

    "%_JAVACMD%" -Djava.util.logging.config.file="%CCRCCLI%/logging.properties" -cp "%CM_API_DIR%\stpwvcm.jar";"%CM_API_DIR%\stpcmmn.jar";"%CM_API_DIR%\stpcc.jar";"%CM_API_DIR%\remote_core.jar";"%CM_API_DIR%\commons-httpclient-3.0.jar";"%CM_API_DIR%\commons-codec-1.3.jar";"%CCRCCLI%\commons-cli-1.1.jar";"%CM_API_DIR%\icu4j-3_8.jar";"%CM_API_DIR%\commons-logging-1.0.4.jar";"%CCRCCLI%\rcleartool.jar" com.ibm.rational.ccrc.cli.command.ClearWan %*
    Add the username, password and server URL at the end
    
    "%_JAVACMD%" -Djava.util.logging.config.file="%CCRCCLI%/logging.properties" -cp "%CM_API_DIR%\stpwvcm.jar";"%CM_API_DIR%\stpcmmn.jar";"%CM_API_DIR%\stpcc.jar";"%CM_API_DIR%\remote_core.jar";"%CM_API_DIR%\commons-httpclient-3.0.jar";"%CM_API_DIR%\commons-codec-1.3.jar";"%CCRCCLI%\commons-cli-1.1.jar";"%CM_API_DIR%\icu4j-3_8.jar";"%CM_API_DIR%\commons-logging-1.0.4.jar";"%CCRCCLI%\rcleartool.jar" com.ibm.rational.ccrc.cli.command.ClearWan %* -username myusername -password mypassword -server  http://myserver:12080/TeamWeb/services/Team
    

    进行上述修改后,无需每次输入用户名、密码和服务器URL即可使用rcleartool。

    例如,

    rcleartool lsvob
    rcleartool lsview
    

    注意还是需要直接运行rcleartool(不在rcleartool提示符下)如:

    • 能够使用 > 运算符捕获结果。
    • 能够在批处理文件中运行。

    【讨论】:

    • 嗨@VonC,此设置不适用于 8.0.0.6。如果我按照你说的在 rcleartool.bat 中添加登录信息,我使用 rcleartool lsview 时会出现错误。它说:无法识别的选项-用户名。恐怕rcleartool lsview 不支持参数-username。您还有其他解决方案吗?
    • @crispyfries 当然可以。我已经更新了解决 ClearTeam 8.x 的答案
    • 嗨@VonC。感谢您的快速答复。但是缓存凭证如果一段时间不使用就会过期。因此,如果程序运行时间稍长,我必须再次重新登录。有什么方法可以记住该登录信息吗?
    • @crispyfries 确定:只需在同一个 shell 会话中定期执行 rcleartool login -lname xxx -server xxx -password xxx 的作业。不过,我没有看到另一种提供真正凭据缓存的方法。
    • 我明白了。 @VonC 感谢您的帮助!
    【解决方案2】:

    Clear Case 7.1.X 的方法在很多情况下都不起作用,例如在简单的 CHECKOUT 操作或仅启动 rcleartool CLI 时。

    这是因为服务器/登录选项应该在其他参数之前。例如: rcleartool co -server XXX -login me -password 1234 fileToCheckOut.txt

    所以我的建议是对上面提到的修正进行一些改进,将第一个输入参数从批处理中分离出来,代表 Clear Case 命令,其余的是给定命令的参数.

    所以批量看起来或多或少是这样的:

    set LOGIN=-server XXX -login me -password 1234
    set CMD=%1
    set PARAMS=
    
    shift
    :loop1
    if [%1]==[] goto after_loop
    set PARAMS=%PARAMS% %1
    shift
    goto loop1
    
    :after_loop
    
    "%_JAVACMD%" -Djava.util.logging.config.file="%CCRCCLI%/logging.properties" -cp "%CM_API_DIR%\stpwvcm.jar";"%CM_API_DIR%\stpcmmn.jar";"%CM_API_DIR%\stpcc.jar";"%CM_API_DIR%\remote_core.jar";"%CM_API_DIR%\commons-httpclient-3.0.jar";"%CM_API_DIR%\commons-codec-1.3.jar";"%CCRCCLI%\commons-cli-1.1.jar";"%CM_API_DIR%\icu4j-3_8.jar";"%CM_API_DIR%\commons-logging-1.0.4.jar";"%CCRCCLI%\rcleartool.jar" com.ibm.rational.ccrc.cli.command.ClearWan %CMD% %LOGIN% %PARAMS%
    

    像魔鬼一样丑陋,但它适用于大多数情况。 您可以像以前一样执行简单的任务,还可以执行签出/签入等类似任务。

    您仍然不能做的是启动 rcleartool CLI 并使用 help 命令。 它要求我输入密码,即使我输入,它也会失败。

    编辑:在接收包含引号和空格的参数时,对移位片段的比较失败。

    【讨论】:

    • 我的答案的有趣替代方案。 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2012-11-11
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多