Monday, June 25, 2007

Nemo is dead

My four and half year old told us the other day, "I think Nemo is dead."

"Why?" surprised by his comment, we asked him. "Because the drainage is full of peepee and poopoo. It is so dirty, Nemo can't survive there."

It was not easy for us to think of a reason that Nemo could survive it.

Friday, June 22, 2007

Move a dynamic view locally

Followed the Admin Guide. But there is one step missing in the doc. Here is a full list of steps.

1. Log on to the view host.
Log on as the view owner or privileged user.

2. Deactivate the view.
cleartool chview –readonly fs137_ucm0

3. Stop the view’s server process.
cleartool endview –server fs137_ucm0

4. Remove its tag and then unregister it.
cleartool rmtag –view –all fs137_ucm0
cleartool unregister –view /tmp/fs137_ucm0.vws

5. Copy the view. Log on as root
cd /tmp
cp -p fs137_ucm0.vws /ccstorage/views/fs137_ucm0.vws

6. Register the view at its new location and create a new view tag. Log on as the view owner,
cleartool register –view /ccstorage/views/fs137_ucm0.vws
cleartool mktag –view –tag fs137_ucm0 /ccstorage/views/v5_integration.vws

7. Make the view writable.
cleartool chview -readwrite fs137_ucm0
cleartool lsview -properties -full fs137_ucm0

8. Reactivate and test the view.
access the view and verify the following:
You can check out versions and, in a dynamic view, create view-private files.
All view-private objects were moved.

9. Update VOB references to this view. The view’s old location is still recorded by all VOBs that the view has accessed. To update this information, go to the view check out any element from each VOB that holds such a reference. (You can cancel the checkout immediately if you want).

10. Delete the old view storage directory.

11. Create additional tags as needed.
If the view has tags in other network regions, replace them with tags that reference the new location.

Wednesday, June 20, 2007

Could not Copy Data to View Storage

We have experiencing some strange behavior of ClearCase dynamic view from some developers these few days.

The vob server is on Unix, the view storage is located locally on developers desktop. We use TAS as the interop solution. When some developers tried to check out, the ClearCase explorer reported: "The element is checkout, but could not copy to view storage". We checked everything, and finally narrowed down the behavior to Windows 2000 users. And we found out that when they try start-> run-> "\\\ccstore", it prompt for id/password logon.

The problem can be solved by a reboot, or explicitly run "net use * \\\cctore" command. It seems that the networking setting has been changed, the cached data is no longer valid.

Friday, June 15, 2007

Team Meeting

We had a very informative team meeting yesterday.

The meeting was scheduled for checking our application migration status. But somehow, when we mentioned an experiment on the security setting, we started to discuss Lilo and Stitch, and kids TV programs, and TV control, and high tech. Anyway, we landed on geo caching. Everyone got excited. The manager started to tell the story of his treasure hunting experience. One person ran back to get her laptop and network cable so we could have a look of the website. Another wanted to teach us how to buy a GPS on eBay.

One hour later, the meeting minutes went like this.... We concluded that TV commander is a very effective device for controlling the total time that kids spend on watching TV.... We decided that we will go geocaching during next week’s team building. The GPS device will be provided by our manager. The site will be decided prior to the team building, somewhere near our office....

When I told my other half at home about the game, he was not that enthusiastic, and said that the site and the game must be set up by those GPS manufactures. Very well, it means that we have saved three hundred bucks of a new toy.

Thursday, June 14, 2007

Manage Activity Creation

One of our applications is moving from VSS to CC UCM. The management likes the idea of activity very much. They want to centralize activity creation and manage the project progress by monitoring the status of activities. The thing is, we don’t have enough money for ClearQuest, which would be the ideal tool for implementing the idea.

All relies on the ClearCase administers (i.e. me). My first task is to create a no_mkactivity trigger except for team leads that would be responsible for creating activities for the developers. However, the deliver and rebase operation implicitly creates activities. This kind of activity must be allowed.


# Only allow this mkact if it is a result of a deliver or rebase
# Determine this by checking the parent op kind
if ($ENV{"CLEARCASE_POP_KIND"} ne "deliver_start" && $ENV{"CLEARCASE_POP_KIND"} ne "rebase_start") {
print "Activity creation is only permitted for deliver and rebase.\n";
exit 1;

exit 0

We have to create a trigger type for each project, as the team lead would be changing from project to project. And we have to apply the trigger type to the integration stream and each development stream.

cleartool mktrtype -ucm -rep -pre mkactivity -execu "perl /ccstore/admin/" -execw "ccperl \\\\\ccstore\admin\" -nc -nusers ccadmin no_mkact_V5.3

cleartool mktrigger -c "no mkactivity for you" no_mkact_V5.3 stream:qinl_V5.3_d@/vobs/Horizon_PVOB

cleartool mktrigger -c "no mkactivity for you" no_mkact_V5.3 stream:V5.3_i@/vobs/Horizon_PVOB

To automate the process, you may want to create a post-op trigger for mkstream as well. The trigger is used to attach the no_mkact trigger to the stream.

cleartool mktrtype -rep -ucm -postop mkstream -nc -execu "cleartool mktrigger -n
c no_mkact_V5.3 stream:\$CLEARCASE_STREAM" -execw "cleartool mktrigger -nc no_mk
act_V5.3 stream:%CLEARCASE_STREAM%" post_mkstream_V5.3

cleartool mktrigger -nc post_mkstream_V5.3 project:V5.3@/vobs/Horizon_PVOB

Besides that, we need a script for the team leads to create activities for their developers. Basically, it is a Perl script to take stream name, developer account id, and activity headline. The script will create the activity, and change the owner of the activity to the owner of the stream.

Cleartool mkact -in $stream -headline \"$act\" $act_id
Cleartool protect -chown $dev activity:$act_id


Wednesday, June 13, 2007

Feed Squirrels at my Backyard

My father-in-law came to visit us and would stay for a while. He loves garden and stays outside at the backyard tending his plants all day long. One day, I discovered that he started to feed squirrels when I found a half-eaten corn squeezed at the top of the fence. He told me that the squirrels had come the day before and ruined some of his plants because they could not find food. I just hope that the rabbits live in nearby woods have not heard about his generosity yet, as his radish will ripen in a couple of weeks.

Tuesday, June 12, 2007

Install Together Architect 1.0 on Windows 2003 Server

First error message: InstallAnyWhere: the memory could not "written".

Solution: Turn off DEP(Data Execution Prevention).
1. Click Start, click Run, type sysdm.cpl, and then click OK.
2. On the Advanced tab, under Performance, click Settings.
3. On the Data Execution Prevention tab, use one of the following procedures:
• Click Turn on DEP for essential Windows programs and services only to select the OptIn policy.
• Click Turn on DEP for all programs and services except those I select to select the OptOut policy, and then click Add to add the programs that you do not want to use the DEP feature.
4. Click OK two times.

Now that the installer can be launched. Yet, another error: "Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX)". It turned out that the Together Architect installer is not supported for Windows 2003 server.

Solution: Install the software on a supported environment, and copy the installed folder through network to the Windows 2003 server box.

Monday, June 11, 2007

Access UCM with a base ClearCase view

Sometimes, it maybe desirable to use a base ClearCase view to access a UCM baseline. This may happen when the code is read-only and you want to save the effort of joining the project and managing the streams, such as for build purpose.

The config spec looks like the following.

element /vobs/MyVob /main/0 –nocheckout
element * baseline_07_13_2007 –nocheckout

The first line is there for retrieving the vob root, because the vob root will not get labeled when creating the baseline.

Friday, June 8, 2007

Move to 553

The other day, my six year old got sentimental suddenly when she realized that her little brother would be moving out of our house when he grows up. And she would not be able to see him around.

She said that she was going to move to 553 (which is the next house to ours). She asked her little brother where he planned to move. He told her that he was going to China. She was so disappointed but later brighten up telling me secretly that he would forget about his plan when he grows up.

I hope she will not.

Thursday, June 7, 2007

ClearCase: Child Branch vs. Child Stream

In base ClearCase, a dev branch is considered as the child branch of the integration branch. While in UCM, a dev stream is normally considered as the child stream of the integration stream. Yet, after analyzing the config spec of each, you can find out that a dev branch is a true child branch of the integration branch, while the dev stream is not, but only logically considered as a child stream of the integration stream.

Here is the typical dev branch config spec. It clearly shows that the dev branch is branched out from the int branch.

element * CHECKEDOUT
element * .../rel13.0_dev/LATEST
element * .../rel13.0_int/LATEST -mkbranch rel13.0_dev
element * /main/LATEST -mkbranch rel13.0_int

Here is the config spec of a dev stream. It shows that the dev stream is branched out from the recommended baseline.

element * CHECKEDOUT
element "[8226012109f011dc81910001833169b5=\Horizon]/horizon16/..." .../qinl_V5.3_d/LATEST
element "[8226012109f011dc81910001833169b5=\Horizon]/horizon16/..." V5.3_5_29_2007 -mkbranch qinl_V5.3_d
element "[8226012109f011dc81910001833169b5=\Horizon]/horizon16/..." /main/0 -mkbranch qinl_V5.3_d
element * /main/0 -ucm -nocheckout

The change of the branching mechanism from base to UCM means that you cannot always see the pretty picture of a version tree branching from main to integration, then to development branch. But it also makes it possible to add new elements to the dev stream when the integration stream is locked, which cannot be achieved in base CC.

Wednesday, June 6, 2007

Why blog?


I will try to keep and share my thoughts and experiences at this site about my life and work.