Main

September 2, 2010

UCM Composite/Component

There is no formal training of this @ GE that I know of. I know of this stuff only through years of pounding it into my head by other UCM guys (and I constantly need both refreshment and research). It’s taken me a while to get some of these UCM concepts into my head – I know, from experience you need to repeat such definitions, concepts and procedures again and again. That’s how I learned. So I’m glad to reiterate them to you… You’ll also need to read this message over and over again stopping and reflecting about what was just said. Be mindful that composite != component, etc.

It’s best to think of this as a Producer/Consumer relationship. You may, at times, where either hat. Your production is a composite baseline that organizes a unique set of component baselines representing some functional milestone (e.g. The 2.1 release of Foundation). These are consumed by your “customers” who rely on the functionality set that the composite baseline represents. As such you should be mindful about how your “product” (Foundation) develops over time so that you can best serve your consumers/customers.

You’ve already performed an update of the Foundation jar set. The process or mechanics of it doesn’t really change that much. You join the Foundation project, perform your modifications, test, deliver to integration, perhaps retest the integrated changes and then produce a composite baseline (the process of doing so will force UCM to create new component baselines for all components that have changed in order to capture the change as a whole). This composite baseline is then “advertised” to your consumers as a baseline they may wish to use. It can also be recommended (i.e. set to be the default for the rebase operation). Consumers set the baseline in their projects by using the rebase operation. Since they consume your component as non-modifiable they are free to rebase both forward and backward in the timeline of your composite’s development (If they are modifying it as well as you then things get messy – hence the recommendation and current configuration that they consume these components as non-modifiable).

Since Foundation is a UCM Project/Stream like everybody else’s it has an integration stream associated with it. When you perform your work you work on a development stream and deliver to the integration stream. You don’t need to necessarily deliver to integration – you could produce a composite baseline on your development stream and advertise it to your consumers. Such a baseline should be thought of as more “experimental” and “to be integrated later”. After all this is why you have an integration stream – to integrate changes. Consumers could then rebase their streams to your more experimental baseline and try it out. If it fails they can easily go back to the recommended set. If they like it then you may consider the changes represented by this experimental composite baseline as “good to integrate into the main integration stream”/”tested in the field”.

If such divergences are longer lived you may wish to create alternate streams to support such a development line. I’m not sure you’ll need this. If so we can talk about that when the time comes.

Finally consumers can override any of the component baselines in your composite set during rebase. Doing so gives you warnings and notates the component baseline as “overridden”. Normally you should only do this for good reason and only to resolve what’s called a baseline conflict. This is an advanced topic and I don’t see it ever happening to your product (producer nor consumer) given the current configuration of the composite sets.

Consumers of your composite baseline therefore get your changes via rebase operations. But remember the consumer is also set up as an integration/development stream project (i.e. multistream). So again the consumers integration stream is usually where you would integrate the change to its composite baseline set including your new composite baseline. That would be done via a rebase on the consumer’s integration stream. Then they test and say “Yup that new composite baseline from the Foundation guys works well” and they can create a new composite baseline of their project including your composite baseline. Developers, working isolated on their work and probably with the last set of recommended baselines for their product (i.e. CE_CSY_Lyra) then can again use rebase to pick up the new recommended composite set from their project (CE_CSY_Lrya) that will include your latest recommended composite baseline. The rebase operation “merges” any changes into their development stream. But with respect to your composite, since they consume it in a non-modifiable fashion, there cannot be any merge conflicts or even merging going on. So the rebase of your portion of the composite merely incorporates your new functionality. (Other changes in modifiable components of the composite may be merged and require attention).

Like I said you’ll probably want to read this message a few times…

August 18, 2010

Starting a process without the DOS box

I needed to start a process which had it's own window (a Perl/Tk app called diffbl.pl which I have yet to document over on ClearSCM). I want to start this process and not have that silly DOS window hanging around. Normally I'd use Cygwin's run.exe but I cannot be assured that Cygwin will be on the users Windows box. How to start a windowed application sans the DOS box?

set sh = wscript.createobject ("wscript.shell") sh.run "cqperl \\hcu-g97pnd1\Software\diffbl\bin\diffbl.pl", 0, false

August 2, 2010

Slow access on Unix UCM commands

Found certain UCM commands to be 11-13 times slower on Unix than on Windows. Even though the registry host is the same host I was executing the commands on!

Windows:time scm lsstream -short -invob \\p_cesb > /dev/null
real    0m1.198s
user    0m0.093s
sys     0m0.123s
Windows:time scm lsstream -short -invob \\p_ce > /dev/null
real    0m9.526s
user    0m0.045s
sys     0m0.123s
Windows:time scm lsact -short -invob $PVOB > /dev/null
real    0m38.788s
user    0m0.155s
sys     0m0.233s

Unix:time scm lsstream -short -invob /vobs/p_cesb > /dev/null
real    0m13.649s
user    0m0.152s
sys     0m0.203s
Unix:time scm lsstream -short -invob /vobs/p_ce > /dev/null
real    2m6.191s
user    0m0.832s
sys     0m1.501s
Unix:time scm lsact -short -invob $PVOB > /dev/null
real    8m52.516s
user    0m3.647s
sys     0m6.986s

Why is the Unix machine 11 – 13 times slower at getting information out of the Clearcase registry than a Windows client? Note the same does not hold true for other Clearcase registry queries (e.g. lsview takes the same amount of time on both platforms) but querying UCM stream information on the Unix system is vobdog slow! It’s not slow for projects or baselines but just streams… and activities.

April 21, 2010

View clean up

  • Cleaned up many old views that were no longer around
  • Cleaned up incorrect baseline in the views of some config specs. When you rename a baseline that doesn't automatically change the baseline name in the config specs that were using the old baseline name.
  • Added Scripps to the Guardian Twin Reports
  • Tested out adaoptTwin.pl on webview. It has some problems.
  • Tested some limited updates to QC and CQ and synchronized them. Created a conflict and found a bug in the email it sends out.
  • Submitted request to have an ALM Project made for dba_admin
  • Attempted to get the Exitcare BF job running. Still stuck on an environment setting though

March 31, 2010

Dang Eclipse

Dang IDEs! They're often more trouble than they are worth!! Be wary!

I'm in Eclipse and I was trying to clean up my view a little bit. I selected a few view private files I wanted to delete with Control-Click. Then I hit the delete key to delete them. Eclipse prompted me "Are you sure you want to delete these files?" and I responded yes. But then I noticed that one of the files that was selected was mktriggers.pl!!! I did not select mktriggers.pl explicitly - it was selected because that was the last file I was editing was mktriggers.pl. And, remember, I only expected this delete to be deleting the view private files I selected, not Clearcase elements. I did not expect any rmnames to be happening.

No worries you say? This is in Clearcase you say? Yes it was. But it was also checked out and with my most recent modifications. "Ah", I hear you saying, "Clearcase shouldn't be doing any explicit destructive activities without asking you first" - well it just did! It rmnamed mktriggers.pl without confirmation. Sure it asked whether or not I wanted to remove files, and I did, the ones I explicitly selected - not the one it had selected simply because I was editing a file. "Well shouldn't there be an option on rmname that you have to specify in order for rmname to proceed?" Yes there is - it's -force and good old Eclipse must have called rmname with -force!

"But surely there's a .keep file around or something that you can recover from". Well ah, no. Not in this case. My work has been lost!

You have been warned!

March 26, 2010

QC work/mktriggers progress/sync from Tandem issues

  • Detailed which fields are currently getting QC Synchronized
  • Updated vbs scripts to be more Unix like, accepting parameters, etc. and to be able to update the status both backwards and forwards, as well as have a -noexec mode.
  • Met with ??? regarding QC synchronization
  • Worked a lot with Randy on Evil Twin issues for Polaris
  • Documented duplicate code problems
  • Documented how to use dynamic views in Eclipse
  • Working on trying to compare files from the pathway for SDDLS
  • Worked on getting mktriggers.pl finished.

Continue reading "QC work/mktriggers progress/sync from Tandem issues " »

March 24, 2010

SDDLS progress/m_pPerl != 0 fix/Merging directories

  • Updated documentation on UCM Batch Delivery to describe how to use user selectors on BF
  • Release Power Point presentation about SDDLS component
  • Found out that the m_pPerl != 0 bug is fixed by install package on SCM Tools page
  • Went through exercise with Randy of merging directories to allow backporting of code to an earlier release. General procedure is to use the Version Tree to select the appropriate parent directory, right click, merge to... and select the current view's version. Merge everything from the current view except the files that are to be backported. THis gets you an empty copy of the right OID. Then the user needs to do the same procedure with the individual files to get the content.
  • Made some progress with mktriggers.pl

March 16, 2010

SDDLS sync to guardian/QC updates

  • After a 5 hour run, finally managed to get the sync to guardian of SDDLS to work. Looks like it worked correctly. Need to work on documenting. Also need to get Randy to check things out and deliver a simple change
  • Spoke with Jason more. It seems the .vbs script are indeed updating a QC database - one with "clearquest" in the name but a QC database nonetheless
  • Described how to use dynamic views in Eclipse

Continue reading "SDDLS sync to guardian/QC updates" »

March 5, 2010

Clearquest problems

  • Had a problem with Clearquest, something about m_pPerl != 0. Got it when trying to create a UCM project. Traced that down to not being able to create the UCM Project in Clearquest. Then I couldn't even complete a Clearquest activity! I was able to do so over on Omair's machine so we suspected my install was somehow corrupted. Ended up uninstalling and reinstalling Clearquest
  • Created new UCM Project for Nancy

March 3, 2010

Undo checkout

  • Met with Jodi, Lyle, etc. Decided to go with the proposed solution of making BF jobs to do the deliveries as Lyle or designate. Sent him instructions on how to set up the BF part. Unco should be simple.
  • Worked with Sherri to get her going with starting a view. They seem to have been told to go through Eclipse to start the view and mount the vob. Odd.

March 2, 2010

UCM Project Creation

  • Created 3 UCM Projects/streams - one including an Import Project component
  • Investigated what causes users to be considered Clearcase Admins

Continue reading "UCM Project Creation" »

March 1, 2010

Busy day

Need to keep status if even to remind myself what I'm doing.

  • Fixed case #9225676 for Kemyss about evil twins - turns out there was no twin
  • Closed case #9214530 regarding evil twins for Curtis
  • Attended meeting about MQC
  • Submitted ticket to get a MQC account
  • Weekly high level status meeting with Dave and Rob. Focusing on SDDLS & Uncheckout problem
  • Solved another evil twin case with Marlene
  • Submitted helpdesk ticket to get Anthony added to the proper NIS group. They can have a Unix account but not be given access to Unix itself. So, ypmatch <username> passwd will show them but id will not. This is because they are not in the users_seattle_clearcase_users NIS netgroup so thus they are not considered a user on this Unix system. Still have yet to figure out how they do Samba here...

February 25, 2010

Fixing evil twins

  • Fixed up one evil twin. The second one is a few evil directories. These require a little more care because the user cannot simply "fill the directory in with new contents" or rather that's done by manipulating (adding/changing) files to the directory. And those files can easily be yet another evil twin!
  • Learned a little bit about Build Forge - or Build Forge as implemented here at GE - and changed a job to use a different environment so as to sync in a new baseline. Seems here they use a sort of hierarchical include environment variable files thing