ClearCase Basics XML presentation
Contents Introduction ClearCase Concepts Simple ClearCase Use Case ClearCase GUI and CLI Version Control of Directories Config Spec Labels, Branches, Merge Comparing Files and Folder versions Version extended pathnames XML presentation
Introduction – The CM Nightmare Foo.old Foo.bak C:\dev\new\Foo.c Foo.c include header2.h ………….. Foo.c include head.h ………….. Foo.c include header.h when………….. C:\dev\Foo.c Foo.c include header.h hello………….. Which of these went into release 2? Which of these has bug 34 corrected? Who made that change on line 54? Where are Joe’s changes? XML presentation
Introduction – ClearCase basic Functions Version Control VOB Workspace Management View Process Control Trigger Release Management Label, attribute src/ bar.c foo.c foo.h REL1.0 TESTED=”yes” XML presentation
ClearCase Concepts some keywords VOB - Version Object Base View – Workspace Element - file or directory Branch – A way to make parallel development possible. Label – Tag Attribute - Name/value pair XML presentation
ClearCase Concepts – A VOB is… Version Object Base A file system where ClearCase stores all version controlled files and directories. Contents of a VOB is accessed using views A VOB is visible on a client if mounted XML presentation
ClearCase Concepts – An Element is… A file or a directory that is version controlled in ClearCase. Each element has a version tree. XML presentation
ClearCase Concepts – A Branch is… A way of making parallel development possible Used to organize the different versions of files and directories An object that specifies a linear sequence of versions of an element The entire set of an elements versions and branches are called a versiontree. XML presentation
ClearCase Concepts – A Version Tree XML presentation
ClearCase Concepts – A View is… A workspace Selects one version of each element in every mounted/selected VOB, presented in a directory structure. Two types of Views Dynamic Snapshot XML presentation
ClearCase Concepts – Attribute and label is Label – is a ”tag” to mark certain versions of a file, directory or a hole ”product structure”. E.g. to ”freeze” code at a specific release. Attribute – a name/value pair used to describe a ClearCase object. E.g. TESTED=”yes” XML presentation
ClearCase Concepts – Elements in a VOB Public class { Public void… getA() - } Public class { Public void… Int getA() - } mod.java source Public class { Public void… Int getA(int i) Int getB() - } XML presentation
ClearCase Concepts – VOB & View Workspace View private storage Visible versions are filtered by config spec rules Config Spec VOB Checked out version XML presentation
View Configuration Config 1 mod.java source Config 2 XML presentation
Working a view Checking out a file Actually creates a copy in the view Undo Checkout for file, can leave a *.keep file as a view private file. XML presentation
Simple ClearCase Use Case Access ClearCase: Start View, Mount VOB Check-out file Mark and right click Checkout Foo.c include header.h ………….. Edit file Checkin File Mark and right click Checkin XML presentation
Simple ClearCase Use Case #1 REL1 Foo.c 3 4 1 2 REL2 VOB Jane’s View Joe’s View Bar.c 1 2 REL2 XML presentation
Simple ClearCase Use Case #2 REL1 Foo.c 3 4 1 2 REL2 VOB Jane’s View Joe’s View Checkout Bar.c 1 2 REL2 XML presentation
Simple ClearCase Use Case #3 REL1 Foo.c 3 4 1 2 REL2 VOB Jane’s View Joe’s View Edit file Foo.c include header.h ………….. Bar.c 1 2 REL2 XML presentation
Simple ClearCase Use Case #4 REL1 Foo.c 3 4 1 2 REL2 VOB Jane’s View Joe’s View Foo.o Compile Foo.exe Foo.c include header.h ………….. Bar.c 1 2 REL2 XML presentation
Simple ClearCase Use Case #5 REL1 Foo.c 3 4 1 2 REL2 VOB Jane’s View Joe’s View Foo.o Checkin file Foo.exe Bar.c 1 2 REL2 XML presentation
Simple ClearCase Use Case #6 REL1 Foo.c 3 4 1 2 REL2 VOB Jane’s View Joe’s View Foo.o Checkin file Foo.exe 5 Bar.c 1 2 REL2 XML presentation
Simple ClearCase Use Case #7 REL1 Foo.c 3 4 1 2 REL2 VOB Jane’s View Joe’s View Foo.o Foo.exe 5 Bar.c 1 2 REL2 XML presentation
Working in ClearCase ClearCase Explorer Windows Explorer ClearCase CLI: cleartool Tool integration XML presentation
Windows Explorer The Windows Explorer is used to work in ClearCase Access files NO ClearCase move NO ClearCase remove NO ClearCase rename Entire filesystem XML presentation
ClearCase Explorer Use the ClearCase explorer to work in ClearCase: Access files ClearCase move ClearCase rename ClearCase remove XML presentation
ClearCase GUI Menues Context menu ToolBox Help XML presentation
ClearCase GUI View VOB Version Tree Elements XML presentation
ClearCase CLI interface:cleartool Same Syntax as UNIX ClearCase 1 XML presentation
Working in a view Storing files in a view Does not share these files to everybody working in the VOB. These files are View-private and only seen by those working in that particular view. Not seen by others until they are put under source control XML presentation
Creating and Changing Elements Version controlled elements are created using ”Add to source control” command In order to edit an element, it has to be “Checked Out” Changes are committed using the “Check in” command XML presentation
Find Checkouts In order to find checked out elements XML presentation
ClearCase GUI – Version Tree element * CHECKEDOUT element * \main\LATEST XML presentation
Version tree – How to look at other version The eye shows which version is selected in view To look at other version mark it and use the Windows ”Send To” menu XML presentation
Version Control of Directories When is a new directory version created? Adding a new element Removing an element Renaming an element Moving an element XML presentation
Version Control of Directories ClearCase automatically checks out/in the directory when using the Windows GUI:s. Example: Moving a file from ClearCase to ConfigSpec Drag and drop ClearCase ConfigSpec 2 3 Added config.cs 5 6 Removed config.cs XML presentation
The Config Spec Element type Filename Version Selector Element type element * CHECKEDOUT element * /main/LATEST Element type E.g. Element (= all element types) , element -file , element -directory Filename Pathname to file: \project_vob\src\hello.c Pathname pattern: * or \project_vob\... Version Selector /main/4, /main/LATEST, /main/br1/LATEST, BUILD_45, RELEASE2 XML presentation
The Config Spec XML presentation element * CHECKEDOUT element *.doc /main/LATEST element *.vsd /main/LATEST element *.mmap /main/LATEST element *.ppt /main/LATEST element *.mdl /main/LATEST element *.pdf /main/LATEST element *.xls /main/LATEST element *.zip /main/LATEST element *.exe /main/LATEST element .../ReqPro/... /main/LATEST element .../tools/clearcase/... /main/LATEST element ".../NPP Project/..." /main/LATEST element ".../NPP System/1_Business Modeling/..." /main/LATEST element ".../NPP System/2_Requirements/..." /main/LATEST element ".../NPP System/3_Design and Usability/..." /main/LATEST element ".../NPP System/4_Analysis and Design/..." /main/LATEST element ".../NPP System/6_Test/..." /main/LATEST element ".../NPP System/8_Enviroment/..." /main/LATEST element ".../NPP System/9_Config and Change Mgmt/..." main/LATEST element * CLEARCASE_CURRENT -nocheckout element * BUILD_SCRIPTS_CURRENT -nocheckout element * /main/npp_got_rel1/LATEST element * /main/LATEST -mkbranch npp_got_rel1 The Config Spec XML presentation
Setting the Config Spec To set the Config Spec in ClearCase you can use the command line, the GUI or script. The command line can be used to read an existing text file or to edit it manually. The GUI is used to edit it manually. XML presentation
Setting the Config Spec – the GUI Select the Config Spec tab In ClearCase Explorer Right-click on the view and select properties of view And press Edit When done editing save your changes by pressing OK XML presentation
Setting the Config Spec – the cmd For editing an existing Config Spec use cleartool edcs An tmp file is opened where you can edit the Config Spec. When done, close the tmp file and answer “y” in the cmd if you like to set the new Config Spec XML presentation
Setting the Config Spec – the cmd cleartool setcs is a good command to use if you for example have a text file with the Config spec to use. You just write cleartool setcs path_to_file_to_use.txt XML presentation
A Label… Is a user-defined name that can be attached to a version. Identify specific versions of elements Can be used in config spec rules to identify branching points or to mark all versions that where used in a build. XML presentation
Apply Label XML presentation
Apply Label Select your view Press Next XML presentation
Select where to apply the label Apply Label Select where to apply the label Press Add>> Press Next XML presentation
Browse for the label you would like to apply Apply Label Browse for the label you would like to apply XML presentation
Select which label to apply Apply Label Select which label to apply Or create a new label NOTE: Remember that label names shall be all UPPER CASE Press OK XML presentation
Apply Label Press Finish XML presentation
Apply Label – the Version Tree Label on specific file version can be seen in the Version Tree XML presentation
Apply Label – the Version Tree A label can also be applied from the version tree Right click on the version Select Apply Label… Mark the label you would like to apply Press OK XML presentation
ClearCase Reports Select Labels Click on ”Element with Labels” Select path and the Label. XML presentation
ClearCase reports -example XML presentation
Working on branch CM/Administrator defines branch type ”branch1” Use View with config spec like pattern below <joe_bugfix>% cleartool catcs element * CHECKEDOUT 1 element * /main/branch1/LATEST 2 element * LABEL -mkbranch branch1 3 LABEL 3 foo.c LABEL 1 bar.c foobar.c LABEL 2 XML presentation
How to set up the branch In order to start working on a branch this is necessary: The branch type must be defined in ClearCase. The config spec must be written so it selects the correct version and creates the branch when necessary. XML presentation
Working on branch - continued Before Checkout Checkout a file After Checkout After Checkin XML presentation
Deliver/Merge If using parallel development, there will be need for synchronizing the content at given times. Then a merge is performed between specified branches XML presentation
Before Merge - Generic Version Tree 1 Base Branch 1 2 ”From” version ”To” version Merge Result XML presentation
Graphical merge tool Merge Result Base From To XML presentation
Algorithm for Automatic Merging Base ”From” ”To” Merge Result #include ”he.h” #include ”bo.h" int main() { /* Say Hello W */ printf(”Hello World!”); printf(”Hello to World!”); return 0; return 1; return 2; } deleted deleted 1 2 Base ”From” ”To” Merge Result inserted changed ? conflict XML presentation
Merge Conflicts When merging, ClearCase does an automatic merge. If the merge detects conflicts, the user needs to resolve these. XML presentation
Merge (1) Base version (3) Contributor 2 ”Merge to” (2) Contributor 1 Main rel_1 (1) Base version dev_1 (3) Contributor 2 ”Merge to” (2) Contributor 1 ”Merge from” Merge Result version (Checked out) XML presentation
Merge one File 1 TO version FROM version XML presentation
Result is in the checked out version After Merge Result is in the checked out version After Merge Recompile and test... Now everybody else sees it... Checkin XML presentation
Comparing Versions - Text File example Compare with previous version Changed XML presentation
Comparing Versions - Word Example 1 2 The same principle as ”Track changes” in Word XML presentation
Comparing Versions – Directory Example 1 2 File ClearCaseInstallationGuide.doc does exist File ClearCaseInstallationGuide.doc does not exist XML presentation
Version extended pathnames In ClearCase you access a version of a file You can choose what version to access In order to do this, ClearCase use version extended pathnames Version extended pathnames are a way to specify exact the version of interest XML presentation
Version extended pathnames Some examples: foo.c@@ -specifies an element foo.c@@main - specifies a branch foo.c@@main/branch1 - specifies a branch foo.c@@main/branch1/2 - specifies a version XML presentation