Das eigentliche Problem mit dem Sperrmechanismus: Wenn Sie entsperren (was Sie tun müssen, wenn Sie eine cleartool protect -chown
durchführen möchten), verlieren Sie die Liste der Benutzer, die Sie von einer bestimmten Sperre ausgeschlossen.
Ein Ausgangspunkt, um Skript diese Art von Betrieb ist dieses IBM Dokument "How to list locked VOBs":
- Fenster:
for /F %v in ('cleartool lsvob -short') do cleartool lslock vob:%v
- Unix:
for i in
Cleartool lsvob -kurzes -host ; do cleartool lslock vob:$i; done
Leave Ich als Kommentar die Os, auf denen Sie diese Operationen durchführen werden, und ich werde diese Antwort mit einem Skript vervollständigen.
Zum Beispiel kann ein schnelles DOS Skript chown_locked.cmd
wäre:
@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
)
Rufen sie an einem Projekt, oder einen Strom (mit Teilströmen) innerhalb eines Projektes, etwa so:
chown_locked.cmd project:[email protected]\aPVobName aPreviousOwner
chown_locked.cmd stream:[email protected]\aPVobName aPreviousOwner
Es schützt einen Teilstrom an den aktuellen Benutzer , wenn die Teilströme ar e:
- gesperrt
- mit dem richtigen Besitzer gesperrt (die vorherige, die verlassen hat) mit einer
-nusers
Liste der ausgeschlossenen Benutzer ist
Wenn ein Teilstrom (aus dem Schloss ausgeschlossen gesperrt), diese Liste wird vor dem Entsperren gespeichert und beim erneuten Sperren des Streams wiederhergestellt.
Natürlich funktioniert es nur, wenn der aktuelle Benutzer ClearCase-Administrator ist (d. H. In der gleichen Gruppe als der ClearCase_albd
Benutzer ist): nur dieser König des Benutzers kann ein Chown auf einem ClearCase-Objekt tun.
Nur ein DOS-Skript hinzugefügt, um zu veranschaulichen, wie es gemacht werden kann – VonC