Harvest

TECH TIP: FindString Across Multiple SCM Projects and States

  • 1.  TECH TIP: FindString Across Multiple SCM Projects and States

    Posted 01-26-2016 05:28 PM

    Problem:  I wish to perform a string search on the SCM repository but FindVersion in Workbench

    is limited to only perform a search specific to a project and state. I have over 200 projects that I

    need to search, how can I do this without using FindVersion because that can take hours or even

    days to accomplish?

     

    Solution: A field developed command line utility was developed to accomplish this task called

    HarFindString.pl.

     

    Concept:  This command line utility is a perl script designed to first checkout for browse (readonly)

    all trunk files across all projects and states that has packages that contains file items based on a

    file mask as an input parameter. For example, if you need to scan all header and cplusplus files

    belonging to Microsoft projects then you would provide "*.cpp, *.h" as a file mask parameter and

    the script will only checkout those files with these extensions.

     

    Requirements:
    o   The HarFindString.pl perl script has been tested using perl -version v5.10.1.

    o   Requires SqlPlus - uses Oracle TNSName and Harvest schema owner credentials.

    o   Install the FindFiles utility from the below attachments.

     

    Caveats:

    o    The DOS findstr process that HarFindString.pl uses will only work with ascii text files.

    o    The utility deletes the checkout output when the scan process completes.

    o    The hco.log is the log file from the last executed hco process performed by HarFindString.pl.

     

    Additional Info:

    The DOS findstr process that HarFindString.pl uses will only provide the path, filename, and the

    single text line that matches the string search. As an alternative to this, you can download and

    install the attached FindFilesInstall.zip. This windows desktop utility provides a dialog interface

    GUI that allows you to enter the path to the output directory that is created by the HarFindString

    perl script and the file mask and the search string. When you click the "Search" button the utility

    will then perform a recursive directory search of those files in the output directory for a matching

    string hit, and if a match hit occurs then it will list the file item name and path in the lower list box.

    When a file item is posted in the list box, you can then double-click on the file item and it will open

    in the provided CrystalEdit text editor and immediately go to the line of the matching string and

    hilite it. In affect this is basically a search and display process which in my estimation is more

    beneficial for any search task. The only downside for this process is that you must edit the

    HarFindString.pl utility and enter an "exit 1;" line at line 252 just after the hco for loop process

    and before the FINDSTR code section process. When you have editied this perl script you can

    then save your change and then re-execute the HarFindString script to only perform the hco

    process and leave the output directory intact so that you can use FindFiles.exe to search the

    output directory. Of course after you are finished with the scanning, you can then delete the

    "output" directory.

     

    Example script change for line 252 that will launch FindFiles.exe after the hco checkout:

        $cmd="c:\\findfiles\\findfiles basepath=c:\\harfindstring\\output; filemask=*.cpp, *.h;

    findtext="findstringtest"; subdirs=y; execnow=y";

        $rc = system($cmd);

        exit 1;

     

    Here is an example screenshot of executing the HarFindString perl script in action:

     

    Here is a example screenshot of FindFiles.exe in action searching a different path (FindFiles utility

    does not have to be used exclusively for the HarFindString):

     

    Double click on the high lighted line item will open "resource.h" in CrystalEdit (provided by FileFiles

    installation) and go to and display the line with the match string and high light the string.

     

    These utilities are provided as is, from time to time new versions may be attached to this discussion.

    Attachment(s)

    zip
    FindFiles205Install.zip   5.04MB 1 version
    zip
    HarFindString.zip   8K 1 version