public static void main(String[] args) throws Exception {
        Options plumeOptions = new Options(
                TestIsolationDataGenerator.usage_string,
                TestIsolationDataGenerator.class);
        plumeOptions.parse_or_usage(args);

        // Display the help screen.
        if (showHelp) {
            plumeOptions.print_usage();
            return;
        }

        if (projName == null || repoPath == null 
        		|| startCommitID == null || endCommitID == null) {
            plumeOptions.print_usage();
            return;
        }
        
        File repoDir = new File(repoPath);
        
        BuildStrategy buildStrategy = null;
        
        if (projName.equals(VOLDEMORT)) {
        	buildStrategy = new VoldemortBuildStrategy(repoDir, buildCommand);
        } else if (projName.equals(JODA_TIME)) {
        	buildStrategy = new JodatimeBuildStrateygy(repoDir, buildCommand);
        }
        
        assert buildStrategy != null;
        
        Repository repository = new GitRepository(repoDir, buildStrategy);
        
        HistoryGraph hGraph = repository.buildHistoryGraph(startCommitID, endCommitID);
        
        saveHistoryGraph(hGraph);
    }