一名管理员离开项目(他不是Vob所有者)
以他的名义:
新管理员正在进入该项目。
我想知道是否存在允许我chown
所有现有对象并替换的脚本
溪流上的“锁定”拥有者。
这样可以节省几个小时手动写下流中被排除的用户,再次为新管理员解锁和锁定。
答案 0 :(得分:1)
使用锁定机制的真正痛点:如果您解锁(如果要执行cleartool protect -chown
则需要执行此操作),则会丢失从给定锁定中排除的用户列表。< / p>
脚本这种操作的起点是这个IBM文档“How to list locked VOBs”:
for /F %v in ('cleartool lsvob -short') do cleartool lslock vob:%v
for i in
cleartool lsvob -short -host ; do cleartool lslock vob:$i; done
请留下我作为评论你将执行这些操作的Os,我将用脚本完成这个答案。
例如,快速DOS脚本 chown_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_albd
用户属于同一组)时才会起作用:只有这位用户才能在ClearCase对象上做一个chown。