Posted by: Tamir Gefen on: July 1, 2008
As CM manager, I dealt with IBM Rational ClearCase projects in which the users could deliver from a child stream into another child stream (in the same project or not).
Sometimes, I was asked about the following situation, as I pictured here in the chart: (Yeah, I pictured it by myself!)
A delivery from stream A to stream B has started but has not completed yet.
Meanwhile, a user that works on stream B would like to start delivery from stream B to stream C. When he starts the delivery, ClearCase notifies him that he is in the middle of a delivery, but since stream B is the target stream, ClearCase does not inform about the source stream (try this – if you run “cleartool deliver -status” from the destination view, ClearCase tells you the following: “No deliver operation in progress on stream”.
So how can I know the source stream?
If the user is part of a small group, he can just shout this question out in the open-space, and then someone might shout in response, hopefully.
But what if there are dozens of streams, or if the user is part of an international group? Email is a typical answer, but he can wait hours until he gets a response.
Here I show a simple command line example that can find the source stream in a short while:
Windows OS - open the command line and run the following:
cleartool lsstream -short -in PROJECTNAME@PVOB > c:\streams.txt & for /f %i in (c:\streams.txt) do cleartool deliver -status -stream %i@PVOB
UNIX or Linux OS - run the following:
foreach line (`/usr/atria/bin/cleartool lsstream -short -in PROJECTNAME@PVOB`) ;
/usr/atria/bin/cleartool deliver -status -stream $line@PVOB
end
(The unix example intended to csh environment. You have to make some minor changes for other shell environments).
How it technically works:
It generates a list that contains all project streams, and check the delivery status for each one of them.