一個管理員離開這個項目(他不是VOB所有者)轉移到ClearCase VOB /可能腳本中所有流的新所有者?
在他的名字:
- 他是一個很大的項目,溪流和其他對象的所有者
- 他是「鎖「每個不同的人都被排除在外的流所有者。
新管理員正在進入該項目。
我想知道是否存在一個腳本讓我chown
所有現有的對象,並取代 「鎖」擁有者的流。
這樣可以節省一些時間手動記下流上的排除用戶,解鎖並再次鎖定新管理員。
一個管理員離開這個項目(他不是VOB所有者)轉移到ClearCase VOB /可能腳本中所有流的新所有者?
在他的名字:
新管理員正在進入該項目。
我想知道是否存在一個腳本讓我chown
所有現有的對象,並取代 「鎖」擁有者的流。
這樣可以節省一些時間手動記下流上的排除用戶,解鎖並再次鎖定新管理員。
帶鎖機制的真正痛點:如果您解鎖(如果您想執行cleartool protect -chown
,則需要執行此操作),那麼您將失去從給定鎖中排除的用戶列表。
起點,腳本類型的操作是這樣的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
離開我作爲評論您將在其上執行這些操作的操作系統,並且我將用腳本完成此答案。
例如,一個快速的DOS腳本chown_locked.cmd
將是:
@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
doskey ct=cleartool $*
set ucmObject=%1 & REM #project:[email protected]\aPVob or stream:[email protected]\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:[email protected]\aPVobName aPreviousOwner
chown_locked.cmd stream:[email protected]\aPVobName aPreviousOwner
如果說子流AR它會保護任何子流的當前用戶 E:
如果子流被鎖定,排除用戶的-nusers
列表(排除鎖),此列表在解鎖之前保存,並在再次鎖定流時恢復。
當然,只有當前用戶是ClearCase管理員(即與ClearCase_albd
用戶在同一個組中)時才能工作:只有這個用戶的王可以在ClearCase對象上執行一個chown。
謝謝Vonc!這將有所幫助。 – edelwater 2010-12-11 14:03:53
剛剛添加了一個DOS腳本來說明如何完成 – VonC 2010-12-09 16:47:46