Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Let’s change one of these settings. Note that ‘revision‘release_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 revisionrelease_date fields properly

...

Let’s make the change:

Code Block
system config set revisionrelease_date '2018-11-15 12:00:00'
system config get revisionrelease_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:

Code Block
system config get revisionrelease_date --selection Axis2/Axis2-1.7.8

...

Modifying settings in bulk -

...

‘release_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.

...

Let’s rerun the ‘ls’ command to get the exact style we entered into CodeMRI previously for the ‘revision‘release_date’ setting:

Code Block
ls -ld --time-style="+%Y-%m-%d %H:%M:%S" /home/dan/Documents/test_sourcecode/Axis2/*

...

Code Block
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 'revisionrelease_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 revisionrelease_date \'${date_string}\' --selection ${system_name} ;
done <<<"$PROJECT_SRC_DIRS"

...

Code Block
system config get revisionrelease_date --selection Axis2/*

...

Note that the same thing can be done to set revisionrelease_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.

...

Code Block
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 revisionrelease_date \'${rev_date}\' --selection ${system_name} ;
done <"$REV_DATE_FILE"

Here are some commands you could use to set revisionrelease_date for the Linux systems without going through the process above

Code Block
cmri system config set revisionrelease_date '06-Apr-1998 05:10' --selection Linux_Kernel/Linux_Kernel-0.99.11
cmri system config set revisionrelease_date '06-Apr-1998 05:11' --selection Linux_Kernel/Linux_Kernel-0.99.12
cmri system config set revisionrelease_date '06-Apr-1998 05:11' --selection Linux_Kernel/Linux_Kernel-0.99.13
cmri system config set revisionrelease_date '06-Apr-1998 05:11' --selection Linux_Kernel/Linux_Kernel-0.99.15
cmri system config set revisionrelease_date '04-Dec-1994 00:00' --selection Linux_Kernel/Linux_Kernel-0.11
cmri system config set revisionrelease_date '04-Dec-1994 00:00' --selection Linux_Kernel/Linux_Kernel-0.12
cmri system config set revisionrelease_date '08-Mar-1992 00:00' --selection Linux_Kernel/Linux_Kernel-0.95
cmri system config set revisionrelease_date '24-Mar-1992 00:00' --selection Linux_Kernel/Linux_Kernel-0.95a
cmri system config set revisionrelease_date '15-Jan-1993 00:00' --selection Linux_Kernel/Linux_Kernel-0.96a
cmri system config set revisionrelease_date '15-Jul-1992 00:00' --selection Linux_Kernel/Linux_Kernel-0.96b
cmri system config set revisionrelease_date '19-Jul-1992 00:00' --selection Linux_Kernel/Linux_Kernel-0.96c
cmri system config set revisionrelease_date '23-May-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.13
cmri system config set revisionrelease_date '27-Jun-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.23
cmri system config set revisionrelease_date '14-Jul-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.29
cmri system config set revisionrelease_date '21-Jul-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.33
cmri system config set revisionrelease_date '24-Jul-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.35
cmri system config set revisionrelease_date '15-Aug-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.45
cmri system config set revisionrelease_date '06-Oct-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.52
cmri system config set revisionrelease_date '28-Oct-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.59
cmri system config set revisionrelease_date '14-Nov-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.63
cmri system config set revisionrelease_date '15-Nov-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.64
cmri system config set revisionrelease_date '28-Nov-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.67
cmri system config set revisionrelease_date '02-Dec-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.70
cmri system config set revisionrelease_date '05-Dec-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.71
cmri system config set revisionrelease_date '15-Dec-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.73
cmri system config set revisionrelease_date '23-Dec-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.74
cmri system config set revisionrelease_date '29-Dec-1994 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.75
cmri system config set revisionrelease_date '02-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.76
cmri system config set revisionrelease_date '09-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.78
cmri system config set revisionrelease_date '11-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.79
cmri system config set revisionrelease_date '12-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.80
cmri system config set revisionrelease_date '13-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.81
cmri system config set revisionrelease_date '16-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.82
cmri system config set revisionrelease_date '18-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.83
cmri system config set revisionrelease_date '22-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.84
cmri system config set revisionrelease_date '23-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.85
cmri system config set revisionrelease_date '27-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.86
cmri system config set revisionrelease_date '30-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.87
cmri system config set revisionrelease_date '31-Jan-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.88
cmri system config set revisionrelease_date '05-Feb-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.89
cmri system config set revisionrelease_date '08-Feb-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.90
cmri system config set revisionrelease_date '12-Feb-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.91
cmri system config set revisionrelease_date '15-Feb-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.92
cmri system config set revisionrelease_date '20-Feb-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.93
cmri system config set revisionrelease_date '22-Feb-1995 00:00' --selection Linux_Kernel/Linux_Kernel-1.1.94
cmri system config set revisionrelease_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 revisionrelease_date fields properly to update the views