在ClearCase VOB/可能的脚本中传输到所有流的新所有者?
一名管理员将离开项目(他不是Vob所有者) 以他的名义:在ClearCase VOB/可能的脚本中传输到所有流的新所有者?,clearcase,Clearcase,一名管理员将离开项目(他不是Vob所有者) 以他的名义: 他是许多项目、流和其他对象的所有者 他是流的“锁”所有者,每次都有不同的人被排除在外 新管理员正在输入项目 我想知道是否存在一个脚本,它允许我chown所有现有对象,并替换 流上的“锁”所有者 这将节省数小时在流上手动记录被排除的用户,为新管理员再次解锁和锁定。锁定机制的真正痛点是:如果您解锁(如果您想执行cleartool保护-chown),则需要执行此操作,您正在失去从给定锁中排除的用户列表 编写此类操作脚本的起点是IBM文档“”
- 他是许多项目、流和其他对象的所有者
- 他是流的“锁”所有者,每次都有不同的人被排除在外
chown
所有现有对象,并替换
流上的“锁”所有者
这将节省数小时在流上手动记录被排除的用户,为新管理员再次解锁和锁定。锁定机制的真正痛点是:如果您解锁(如果您想执行
cleartool保护-chown
),则需要执行此操作,您正在失去从给定锁中排除的用户列表
编写此类操作脚本的起点是IBM文档“”:
- Windows:
对于('cleartool lsvob-short')中的/F%v执行cleartool lslock vob:%v
- Unix:
中i的
cleartool lsvob-short-host
;do cleartool lslock vob:$i;完成
例如,一个快速DOS脚本
chown\u locked.cmd
将是:
@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
doskey ct=cleartool $*
set ucmObject=%1 & REM #project:aProject@\aPVob or stream:aStream@\aPVob
set anOldUser=%2 & REM #previous owner of the streams
set anOldUser=%anOldUser:~0,-1%
set lsstreamCmd=ct lsstream -in %ucmObject% -fmt "%%Xn %%[locked]p %%u\n"
for /F "tokens=1-3" %%a in ( ' %lsstreamCmd% ') do (
rem echo '%%a'
rem echo '%%b'
rem echo '%%c'
if "%%b" EQU "locked" (
if "%%c" EQU "%anOldUser%" (
call:chown %%a %USERNAME%
) else (
echo.ignore locked %%a because not owned by %anOldUser%, but by '%%c'
)
) else (
echo.ignore unlocked %%a
)
)
goto end
:chown ucmObject -- chown on a ucm object
:: if lock, will restore the nusers lock exception list
:: -- streamName [in] name of the UCM object
:: -- newOwner [in] name of new owner
SETLOCAL ENABLEDELAYEDEXPANSION
set ucmObject=%~1
set newOwner=%~2
set cmd=ct lslock %ucmObject%
for /F "tokens=4*" %%a in ( ' %cmd% ^| find "Locked except for users:" ') do set lslock=%%b
set lslock=%lslock:~0,-1%
rem echo lslock '%lslock%'
if "%lslock%" NEQ "~0,-1" goto lslock
echo.chown locked '%ucmObject%%' for '%newOwner%'
ct protect -chown %newOwner%2 %ucmObject% & goto endchown
:lslock
set lslock2=%lslock: =,%
rem echo lslock2 '%lslock2%'
echo.chown locked '%ucmObject%' for '%newOwner%' while retaining '%lslock2%'
ct unlock %ucmObject%
ct protect -chown %newOwner% %ucmObject%
ct lock -nusers %lslock2% %ucmObject%
:endchown
( ENDLOCAL
)
EXIT /b
:end
( ENDLOCAL
)
在项目或项目内的流(带有子流)上调用它,如下所示:
chown_locked.cmd project:myProject@\aPVobName aPreviousOwner
chown_locked.cmd stream:aStream@\aPVobName aPreviousOwner
如果所述子流是:
- 锁定
- 与右所有者(前一个已离开的所有者)锁定
-nusers
列表(从锁定中排除)锁定,则此列表将在解锁前保存,并在再次锁定流时恢复
当然,只有当前用户是ClearCase管理员(即与
ClearCase\u albd
用户在同一组中)时,它才会起作用:只有这个用户才能对ClearCase对象进行检查。锁定机制的真正痛点是:如果你解锁(如果要执行cleartool protect-chown
,则需要执行此操作),您将失去从给定锁中排除的用户列表
编写此类操作脚本的起点是IBM文档“”:
- Windows:
对于('cleartool lsvob-short')中的/F%v执行cleartool lslock vob:%v
- Unix:
中的i
cleartool lsvob-short-host
;do cleartool lslock vob:$i;done
例如,一个快速DOS脚本
chown\u locked.cmd
将是:
@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
doskey ct=cleartool $*
set ucmObject=%1 & REM #project:aProject@\aPVob or stream:aStream@\aPVob
set anOldUser=%2 & REM #previous owner of the streams
set anOldUser=%anOldUser:~0,-1%
set lsstreamCmd=ct lsstream -in %ucmObject% -fmt "%%Xn %%[locked]p %%u\n"
for /F "tokens=1-3" %%a in ( ' %lsstreamCmd% ') do (
rem echo '%%a'
rem echo '%%b'
rem echo '%%c'
if "%%b" EQU "locked" (
if "%%c" EQU "%anOldUser%" (
call:chown %%a %USERNAME%
) else (
echo.ignore locked %%a because not owned by %anOldUser%, but by '%%c'
)
) else (
echo.ignore unlocked %%a
)
)
goto end
:chown ucmObject -- chown on a ucm object
:: if lock, will restore the nusers lock exception list
:: -- streamName [in] name of the UCM object
:: -- newOwner [in] name of new owner
SETLOCAL ENABLEDELAYEDEXPANSION
set ucmObject=%~1
set newOwner=%~2
set cmd=ct lslock %ucmObject%
for /F "tokens=4*" %%a in ( ' %cmd% ^| find "Locked except for users:" ') do set lslock=%%b
set lslock=%lslock:~0,-1%
rem echo lslock '%lslock%'
if "%lslock%" NEQ "~0,-1" goto lslock
echo.chown locked '%ucmObject%%' for '%newOwner%'
ct protect -chown %newOwner%2 %ucmObject% & goto endchown
:lslock
set lslock2=%lslock: =,%
rem echo lslock2 '%lslock2%'
echo.chown locked '%ucmObject%' for '%newOwner%' while retaining '%lslock2%'
ct unlock %ucmObject%
ct protect -chown %newOwner% %ucmObject%
ct lock -nusers %lslock2% %ucmObject%
:endchown
( ENDLOCAL
)
EXIT /b
:end
( ENDLOCAL
)
在项目或项目内的流(带有子流)上调用它,如下所示:
chown_locked.cmd project:myProject@\aPVobName aPreviousOwner
chown_locked.cmd stream:aStream@\aPVobName aPreviousOwner
如果所述子流是:
- 锁定
- 与右所有者(前一个已离开的所有者)锁定
-nusers
列表(从锁定中排除)锁定,则此列表将在解锁前保存,并在再次锁定流时恢复
当然,只有当前用户是ClearCase管理员(即,与ClearCase\u albd用户在同一组中)时,它才会起作用:只有这个用户才能对ClearCase对象执行chown操作。刚刚添加了一个DOS脚本来说明如何执行它必须添加一个DOS脚本来说明如何执行