Configuring Your Projects & Systems
Test source code we are using
In these examples we got open source code for early versions of the Apache HTTPd web server, early versions of the Linux Kernel, and all released versions of Axis2.
You can follow along with these same codebases by going to the following websites and downloading <package>-<version>.tar.gz files.
https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/v0.99/ https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/ https://mirrors.edge.kernel.org/pub/linux/kernel/v1.1/ https://archive.apache.org/dist/httpd/ https://github.com/apache/axis-axis2-java-core/tags
https://mirrors.edge.kernel.org/pub/linux/kernel/v1.1/
https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/
https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/v0.99/
https://archive.apache.org/dist/httpd/
https://github.com/apache/axis-axis2-java-core/tags
Where things might go
Location of the CodeMRI Data Vault where databases, reports, and other things are stored by CodeMRI
$HOME/Documents/test_datavault
Location where you store the source code you are analyzing
$HOME/Documents/test_sourcecode
You can put these wherever you like. I am going to do the following:
# On a Linux machine export CMRI_VAULT=/home/dan/Documents/test_datavault export CMRI_SOURCECODE=/home/dan/Documents/test_sourcecode # On a MacOSX machine export CMRI_VAULT=/home/dan/Documents/test_datavault export CMRI_SOURCECODE=/home/dan/Documents/test_sourcecode Set these in your UNIX shell to set the variables temporarily Add them to your .bashrc or .zshrc file if you want them to always be available
Get Your Source Code Ready
In this demo, we are putting source code into a directory structure with the name ‘test_sourcecode’ that will mirror the structure that the CodeMRI Data Vault will take when it is processed.
dan $ls -l test_sourcecode total 8 drwxr-xr-x 18 dan staff 576 Oct 14 01:35 Apache_HTTPd drwxr-xr-x 24 dan staff 768 Oct 14 01:36 Axis2 drwxr-xr-x 44 dan staff 1408 Oct 14 02:02 Linux_Kernel -rw-r--r-- 1 dan staff 150 Oct 12 10:39 README
We downloaded the .tar.gz files into this directory structure:
dan $ls -l test_sourcecode/Axis2/tar_files total 322288 -rw-r--r--@ 1 dan staff 7747396 Oct 12 10:39 axis-axis2-java-core-1.5.3.tar.gz -rw-r--r--@ 1 dan staff 7766202 Oct 12 10:39 axis-axis2-java-core-1.5.4.tar.gz -rw-r--r--@ 1 dan staff 7768751 Oct 12 10:39 axis-axis2-java-core-1.5.5.tar.gz -rw-r--r--@ 1 dan staff 7774707 Oct 12 10:39 axis-axis2-java-core-1.5.6.tar.gz -rw-r--r--@ 1 dan staff 8090678 Oct 12 10:39 axis-axis2-java-core-1.6.0.tar.gz -rw-r--r--@ 1 dan staff 8106817 Oct 12 10:39 axis-axis2-java-core-1.6.1.tar.gz -rw-r--r--@ 1 dan staff 8115902 Oct 12 10:39 axis-axis2-java-core-1.6.2.tar.gz -rw-r--r--@ 1 dan staff 8362665 Oct 12 10:39 axis-axis2-java-core-1.6.3.tar.gz -rw-r--r--@ 1 dan staff 8282619 Oct 12 10:38 axis-axis2-java-core-1.6.4.tar.gz -rw-r--r--@ 1 dan staff 8458609 Oct 12 10:38 axis-axis2-java-core-1.7.0.tar.gz -rw-r--r--@ 1 dan staff 8454629 Oct 12 10:38 axis-axis2-java-core-1.7.1.tar.gz -rw-r--r--@ 1 dan staff 8455957 Oct 12 10:38 axis-axis2-java-core-1.7.2.tar.gz -rw-r--r--@ 1 dan staff 8459411 Oct 12 10:38 axis-axis2-java-core-1.7.3.tar.gz -rw-r--r--@ 1 dan staff 8453438 Oct 12 10:38 axis-axis2-java-core-1.7.4.tar.gz -rw-r--r--@ 1 dan staff 8454106 Oct 12 10:38 axis-axis2-java-core-1.7.5.tar.gz -rw-r--r--@ 1 dan staff 8453947 Oct 12 10:38 axis-axis2-java-core-1.7.6.tar.gz -rw-r--r--@ 1 dan staff 8465864 Oct 12 10:38 axis-axis2-java-core-1.7.7.tar.gz -rw-r--r--@ 1 dan staff 8465646 Oct 12 10:38 axis-axis2-java-core-1.7.8.tar.gz -rw-r--r--@ 1 dan staff 8465496 Oct 12 10:38 axis-axis2-java-core-1.7.9.tar.gz -rw-r--r--@ 1 dan staff 8366794 Oct 12 10:38 axis-axis2-java-core-1.8.0.tar.gz
The ‘tar’ command was used to unpack each source code directory. For this example we used Linux shell scripting to automate the process. Once this was complete, we moved the .tar.gz files into a subdirectory called ‘tar_files’:
# TO UNPACK LINUX for i in `ls *.tar.gz` ; do echo $i; j=$(echo $i | sed 's/\.tar\.gz//') ; mkdir $j ; tar xvzf $i -C $j ; done # TO UNPACK APACHE_HTTPD & AXIS2 for i in `ls *.tar.gz` ; do echo $i; j=$(echo $i | sed 's/\.tar\.gz//') ; tar xvzf $i ; done mkdir tar_files mv *.tar.gz tar_files
The Axis2 source code directory then looked like the following:
dan $ls -l test_sourcecode/Axis2 total 0 drwxr-xr-x@ 13 dan staff 416 Nov 11 2010 axis-axis2-java-core-1.5.3 drwxr-xr-x@ 13 dan staff 416 Dec 19 2010 axis-axis2-java-core-1.5.4 drwxr-xr-x@ 13 dan staff 416 May 28 2011 axis-axis2-java-core-1.5.5 drwxr-xr-x@ 13 dan staff 416 Aug 30 2011 axis-axis2-java-core-1.5.6 drwxr-xr-x@ 13 dan staff 416 May 17 2011 axis-axis2-java-core-1.6.0 drwxr-xr-x@ 13 dan staff 416 Aug 30 2011 axis-axis2-java-core-1.6.1 drwxr-xr-x@ 13 dan staff 416 Apr 17 2012 axis-axis2-java-core-1.6.2 drwxr-xr-x@ 13 dan staff 416 Jun 27 2015 axis-axis2-java-core-1.6.3 drwxr-xr-x@ 12 dan staff 384 Dec 28 2015 axis-axis2-java-core-1.6.4 drwxr-xr-x@ 13 dan staff 416 Jan 18 2016 axis-axis2-java-core-1.7.0 drwxr-xr-x@ 13 dan staff 416 Feb 20 2016 axis-axis2-java-core-1.7.1 drwxr-xr-x@ 13 dan staff 416 May 2 2016 axis-axis2-java-core-1.7.2 drwxr-xr-x@ 14 dan staff 448 May 30 2016 axis-axis2-java-core-1.7.3 drwxr-xr-x@ 14 dan staff 448 Oct 21 2016 axis-axis2-java-core-1.7.4 drwxr-xr-x@ 14 dan staff 448 May 6 2017 axis-axis2-java-core-1.7.5 drwxr-xr-x@ 14 dan staff 448 Jul 30 2017 axis-axis2-java-core-1.7.6 drwxr-xr-x@ 14 dan staff 448 Nov 20 2017 axis-axis2-java-core-1.7.7 drwxr-xr-x@ 15 dan staff 480 May 19 2018 axis-axis2-java-core-1.7.8 drwxr-xr-x@ 16 dan staff 512 Nov 15 2018 axis-axis2-java-core-1.7.9 drwxr-xr-x@ 16 dan staff 512 Aug 1 13:16 axis-axis2-java-core-1.8.0 drwxr-xr-x 22 dan staff 704 Oct 12 11:33 tar_files
In the operating system ‘Finder' application, the entire layout looked like the following
We now have several versions of multiple projects stored for use by CodeMRI.
Install CodeMRI - follow installation instructions
…
Configure the CodeMRI Data Vault
# change directories into cd /Users/dan/Documents/test_datavault cmri vault create
Make sure your CodeMRI license is set up
Add Projects - via CodeMRI Command Line Shell
On the UNIX command line:
cmri project add --name Axis2 cmri project add --name Linux_Kernel cmri project add --name Apache_HTTPd
Alternatively, do this inside the CodeMRI shell itself:
$ cmri shell > project add --name Axis2 > project add --name Linux_Kernel > project add --name Apache_HTTPd
Note: If you ever want to remove those projects, run the following
cmri project remove --selection Apache_HTTPd cmri project remove --force --selection Axis2:Linux_Kernel
Add systems - via CodeMRI Command Line Shell
Using Apache_HTTPd as the example
# THIS WORKS IN ZSH & BASH PROJECT=Apache_HTTPd PROJECT_SRC_LOCATION="/home/dan/Documents/test_sourcecode/Apache_HTTPd" BASENAME_START='apache_' PROJECT_SRC_DIRS=$(ls -d ${PROJECT_SRC_LOCATION}/${BASENAME_START}*) while read sourcedir; do basedir=$(basename ${sourcedir}) ; version=$(echo $basedir | sed "s/${BASENAME_START}//") ; echo "cmri system add --selection ${PROJECT} --origin ${sourcedir} --name ${PROJECT} --version ${version}" ; done <<<"$PROJECT_SRC_DIRS"
At your terminal, you can open a CodeMRI shell (cmri) to run commands interactively
$cmri shell
To add each system one at a time, type the following
system add --selection Apache_HTTPd --origin /Users/dan/Documents/test_sourcecode/Apache_HTTPd/apache_1.3.0 --name Apache_HTTPd --version 1.3.0 system add --selection Apache_HTTPd --origin /Users/dan/Documents/test_sourcecode/Apache_HTTPd/apache_1.3.1 --name Apache_HTTPd --version 1.3.1 system add --selection Apache_HTTPd --origin /Users/dan/Documents/test_sourcecode/Apache_HTTPd/apache_1.3.11 --name Apache_HTTPd --version 1.3.11 ... AND SO ON ...
Note: You could remove all the Apache_HTTPd systems from the DataVault by typing this:
system remove --force --selection Apache_HTTPd/*
Add systems - via Linux / Windows command Line
Using Linux_Kernel as the example
Helps with system administration & automation
This command tells you that important information is being captured
for sourcedir in $(ls -d /home/dan/Documents/test_sourcecode/Linux_Kernel/linux-*) ; do basedir=$(basename $sourcedir) ; version=$(echo $basedir | sed 's/linux-//') ; echo $sourcedir ; echo $basedir ; echo $version ; done
This command produces strings you will want to cut an paste into the terminal to add systems
PROJECT=Linux_Kernel PROJECT_SRC_LOCATION="/home/dan/Documents/test_sourcecode/Linux_Kernel" BASENAME_START='linux-' PROJECT_SRC_DIRS=$(ls -d ${PROJECT_SRC_LOCATION}/${BASENAME_START}*) while read sourcedir; do basedir=$(basename ${sourcedir}) ; version=$(echo $basedir | sed "s/${BASENAME_START}//") ; echo "cmri system add --selection ${PROJECT} --origin ${sourcedir} --name ${PROJECT} --version ${version}" ; done <<<"$PROJECT_SRC_DIRS"
Now run all the ‘cmri system add’ commands in a shell
Result:
Add systems - via CodeMRI Batch Mode
Using Axis2 as the example
$cmri shell
# THIS WORKS IN ZSH PROJECT=Axis2 PROJECT_SRC_LOCATION="/home/dan/Documents/test_sourcecode/Axis2" BASENAME_START='axis-axis2-java-core-' PROJECT_SRC_DIRS=$(ls -d ${PROJECT_SRC_LOCATION}/${BASENAME_START}*) # PROJECT_SRC_DIRS=$(ls -d ${PROJECT_SRC_LOCATION}/${BASENAME_START}* | xargs sed "s/${BASENAME_START}//") while read sourcedir; do echo "$sourcedir"; basedir=$(basename ${sourcedir}) ; echo $basedir ; version=$(echo $basedir | sed "s/${BASENAME_START}//") ; echo $version ; done <<<"$PROJECT_SRC_DIRS" while read sourcedir; do basedir=$(basename ${sourcedir}) ; version=$(echo $basedir | sed "s/${BASENAME_START}//") ; echo "system add --selection ${PROJECT} --origin ${sourcedir} --name ${PROJECT} --version ${version}" ; done <<<"$PROJECT_SRC_DIRS"
Add systems - via Batch Script
Save the list of commands as a file: /tmp/Axis2_add.cmri and then run cmri in batch mode
cmri batch run /tmp/Axis2_add.cmri
Select Systems to Operate On
CodeMRI commands operate on ‘selected’ projects and systems in a DataVault. When you first start CodeMRI shell, no systems are selected (unless environment variables are set up.)
$ cmri shell > vault list
You can select a single system to operate on. Note below that one system now shows ‘SELECTED’ to be ‘True’
> select Axis2/Axis2-1.5.3 > vault list
You can select multiple systems by using ‘globbing'. This allows CodeMRI to run operations on multiple systems to be run in parallel.
> select Linux_Kernel/* > vault list
See What Kind of Jobs Can Be Run
> job list
See details for ‘produce_reports’ job
Produce Reports for a System (Default Set of Reports)
First, select a single system
> select Axis2/Axis2-1.7.9
Then run a job called ‘produce_reports’ which generates a number of Excel files about the system
> job run produce_reports
…
You can also do this for multiple systems in parallel. Your machine’s resources (CPUs, RAM) will be used to determine how many jobs will run in parallel:
First, select a single system
> select Linux_Kernel/* > job run produce_reports
While you have jobs running in one terminal, you could open up a second terminal to see the history of jobs that are running and have been run:
> job history
Produce the ‘Technical Health Improvement Plan’ (THIP)
If the system has ‘core’ files, you will probably also want to produce a ‘Technical Health Improvement Plan’ (THIP). This may be a long-running job, and only is necessary if the system has cores, so isn’t run as part included in the default set of Excel files generated
> job run produce_thip
Look at CodeMRI Excel Files
The previous commands (produce_reports, produce_thip) create a number of Excel files in the <data vault>/reports directory for each system
Others Jobs You Might Want To Run
# In UNIX shell $ cmri shell # In cmri interactive shell > job run export_web_data > job run generate_query_data > job run generate_system_summary > job run generate_vault_summary > job run produce_sourcedata_file > job run produce_unprocessed_metadata
Settings for Systems and Projects
The settings and what they do
Each project and system stored in a Data Vault has settings. To see the list of settings, do the following to show the options:
> system config list
Modifying settings
Now let’s select a single system and look at it’s settings:
> select Axis2/Axis2-1.7.9 > system config get name
Now let’s look at all the settings:
> system config get *
Let’s change one of these settings. Note that ‘revision_date’ is wrong. It’s set to the date the scan was run, not the release date for the project. By looking at the timestamp on the source directory unpacked from the .tar.gz file we unpacked, we know that the release date was actually Nov 15, 2018.
Getting this right for each system will be useful later when we want to show trends across the project in the CodeMRI web interface. Note: If you are using the web interface, run the ‘export_web_data’ job after setting all the revision_date fields properly
Let’s make the change:
system config set revision_date '2018-11-15 12:00:00' system config get revision_date
We can also do this without ‘selecting’ a single system (or multiple systems) to operate on and instead use the --selection flag for the command to do so:
system config get revision_date --selection Axis2/Axis2-1.7.8
Modifying settings in bulk - ‘revision_date’ example
Let’s make the dates correct for all the Axis2 systems in the Data Vault. Note that the directories have UNIX timestamps indicating the release date for each version. In this example, we’ll parse these dates and use them for inputs into CodeMRI.
ls -ld /home/dan/Documents/test_sourcecode /Axis2/*
Let’s rerun the ‘ls’ command to get the exact style we entered into CodeMRI previously for the ‘revision_date’ setting:
ls -ld --time-style="+%Y-%m-%d %H:%M:%S" /home/dan/Documents/test_sourcecode/Axis2/*
Now we’ll write some UNIX script code to generate the CodeMRI command we want
PROJECT=Axis2 PROJECT_SRC_LOCATION="/home/dan/Documents/test_sourcecode/Axis2" BASENAME_START='axis-axis2-java-core-' PROJECT_SRC_DIRS=$(ls -d ${PROJECT_SRC_LOCATION}/${BASENAME_START}*) PROJECT=Apache_HTTPd PROJECT_SRC_LOCATION="/home/dan/Documents/test_sourcecode/Apache_HTTPd" BASENAME_START='apache_' PROJECT_SRC_DIRS=$(ls -d ${PROJECT_SRC_LOCATION}/${BASENAME_START}*) # To show and debug logic while read sourcedir; do echo ${PROJECT} ; basedir=$(basename ${sourcedir}) ; echo $basedir ; version=$(echo $basedir | sed "s/${BASENAME_START}//") ; echo $version ; ls_string=$(ls -ld --time-style="+%Y-%m-%d %H:%M:%S" $sourcedir) ; echo $ls_string ; date_string=$(echo ${ls_string} | tr -s ' ' | cut -d' ' -f6-7) ; echo $date_string ; done <<<"$PROJECT_SRC_DIRS" # To generate commands we want to run to set 'revision_date' for all of Axis2 while read sourcedir; do basedir=$(basename ${sourcedir}) ; version=$(echo $basedir | sed "s/${BASENAME_START}//") ; ls_string=$(ls -ld --time-style="+%Y-%m-%d %H:%M:%S" $sourcedir) ; date_string=$(echo ${ls_string} | tr -s ' ' | cut -d' ' -f6-7) ; system_name=${PROJECT}/${PROJECT}-${version} ; echo system config set revision_date \'${date_string}\' --selection ${system_name} ; done <<<"$PROJECT_SRC_DIRS"
Let’s confirm that this worked:
system config get revision_date --selection Axis2/*
Note that the same thing can be done to set revision_date for Apache_HTTPd because the .tar.gz files unzip with valid release dates for that project as well. For early versions of Linux, this doesn’t work. Instead you will have to get dates by looking at the download sites.
https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/v0.99/ https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/ https://mirrors.edge.kernel.org/pub/linux/kernel/v1.1/
From here, you can copy the contents of the download pages into an editor write some scripts to produce the correct CodeMRI commands
PROJECT=Linux_Kernel PROJECT_SRC_LOCATION="/home/dan/Documents/test_sourcecode/Linux_Kernel" BASENAME_START='linux-' PROJECT_SRC_DIRS=$(ls -d ${PROJECT_SRC_LOCATION}/${BASENAME_START}*) # I manually created this file by copying linux-<ver>.tar.gz lines from the websites above. REV_DATE_FILE=${PROJECT_SRC_LOCATION}/Linux_download_site_releaes_dates while read rel_date_line; do version=$(echo $rel_date_line | sed s/linux-// | sed s/\.tar\.gz.*//) ; rev_date=$(echo $rel_date_line | tr -s ' ' | cut -d' ' -f2-3) ; system_name=${PROJECT}/${PROJECT}-${version} ; echo cmri system config set revision_date \'${rev_date}\' --selection ${system_name} ; done <"$REV_DATE_FILE"
Here are some commands you could use to set revision_date for the Linux systems without going through the process above
cmri system config set revision_date '06-Apr-1998 05:10' --selection Linux_Kernel/Linux_Kernel-0.99.11 cmri system config set revision_date '06-Apr-1998 05:11' --selection Linux_Kernel/Linux_Kernel-0.99.12 cmri system config set revision_date '06-Apr-1998 05:11' --selection Linux_Kernel/Linux_Kernel-0.99.13 cmri system config set revision_date '06-Apr-1998 05:11' --selection Linux_Kernel/Linux_Kernel-0.99.15 cmri system config set revision_date '04-Dec-1994 00:00' --selection Linux_Kernel/Linux_Kernel-0.11 cmri system config set revision_date '04-Dec-1994 00:00' --selection Linux_Kernel/Linux_Kernel-0.12 cmri system config set revision_date '08-Mar-1992 00:00' --selection Linux_Kernel/Linux_Kernel-0.95 cmri system config set revision_date '24-Mar-1992 00:00' --selection Linux_Kernel/Linux_Kernel-0.95a cmri system config set revision_date '15-Jan-1993 00:00' --selection Linux_Kernel/Linux_Kernel-0.96a cmri system config set revision_date '15-Jul-1992 00:00' --selection Linux_Kernel/Linux_Kernel-0.96b cmri system config set revision_date '19-Jul-1992 00:00' --selection Linux_Kernel/Linux_Kernel-0.96c cmri system config set revision_date '23-May-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.13 cmri system config set revision_date '27-Jun-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.23 cmri system config set revision_date '14-Jul-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.29 cmri system config set revision_date '21-Jul-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.33 cmri system config set revision_date '24-Jul-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.35 cmri system config set revision_date '15-Aug-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.45 cmri system config set revision_date '06-Oct-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.52 cmri system config set revision_date '28-Oct-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.59 cmri system config set revision_date '14-Nov-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.63 cmri system config set revision_date '15-Nov-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.64 cmri system config set revision_date '28-Nov-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.67 cmri system config set revision_date '02-Dec-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.70 cmri system config set revision_date '05-Dec-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.71 cmri system config set revision_date '15-Dec-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.73 cmri system config set revision_date '23-Dec-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.74 cmri system config set revision_date '29-Dec-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.75 cmri system config set revision_date '02-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.76 cmri system config set revision_date '09-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.78 cmri system config set revision_date '11-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.79 cmri system config set revision_date '12-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.80 cmri system config set revision_date '13-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.81 cmri system config set revision_date '16-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.82 cmri system config set revision_date '18-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.83 cmri system config set revision_date '22-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.84 cmri system config set revision_date '23-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.85 cmri system config set revision_date '27-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.86 cmri system config set revision_date '30-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.87 cmri system config set revision_date '31-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.88 cmri system config set revision_date '05-Feb-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.89 cmri system config set revision_date '08-Feb-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.90 cmri system config set revision_date '12-Feb-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.91 cmri system config set revision_date '15-Feb-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.92 cmri system config set revision_date '20-Feb-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.93 cmri system config set revision_date '22-Feb-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.94 cmri system config set revision_date '02-Mar-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.95
Note: If you are using the CodeMRI web server, run the ‘export_web_data’ job after setting all the revision_date fields properly to update the views