mercurialgrepbisect

Finding first appearance of text in Mercurial repository


I have a Mercurial repository with ~800 changesets and I need to find the first changeset where the word Example appeared. The word appears inside a .php file and not on a commit comment etc.

What is the quickest/easiest way to do that?


Solution

  • try hg grep Example *.php

    hg grep [OPTION]... PATTERN [FILE]...
    
    search for a pattern in specified files and revisions
    
        Search revisions of files for a regular expression.
    
        This command behaves differently than Unix grep. It only
        accepts Python/Perl regexps. It searches repository
        history, not the working directory. It always prints the
        revision number in which a match appears.
    
        By default, grep only prints output for the first
        revision of a file in which it finds a match. To get it
        to print every revision that contains a change in match
        status ("-" for a match that becomes a non-match, or "+"
        for a non-match that becomes a match), use the --all
        flag.
    
    options:
    
     -0 --print0              end fields with NUL
        --all                 print all revisions that match
     -f --follow              follow changeset history, or file
                              history across copies and renames
     -i --ignore-case         ignore case when matching
     -l --files-with-matches  print only filenames and revisions
                              that match
     -n --line-number         print matching line numbers
     -r --rev                 search in given revision range
     -u --user                list the author (long with -v)
     -d --date                list the date (short with -q)
     -I --include             include names matching the given
                              patterns
     -X --exclude             exclude names matching the given
                              patterns
    
    use "hg -v help grep" to show global options