2010-12-09 5 views
1

Ein Administrator verlässt das Projekt (er ist nicht Vob Inhaber)Übertragen auf den neuen Besitzer aller Streams in einem ClearCase VOB/Mögliches Skript?

In seinem Namen:

  • er ist Inhaber einer Vielzahl von Projekten, Bächen und anderen Objekten
  • er ist das „Schloss "Besitzer von Streams, wo jedes Mal verschiedene Leute ausgeschlossen sind.

Ein neuer Administrator gibt das Projekt ein.

Ich frage mich, ob ein Skript existiert, lässt mich chown alle vorhandenen Objekte und die ersetzt das „Schloss“ Eigentümer auf Streams.

Das würde einige Stunden sparen, die ausgeschlossenen Benutzer in einem Strom manuell notieren, entsperren und für den neuen Verwalter wieder sperren.

+0

Nur ein DOS-Skript hinzugefügt, um zu veranschaulichen, wie es gemacht werden kann – VonC

Antwort

1

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.

+0

Thanks Vonc! Das wird helfen. – edelwater

Verwandte Themen