2013-03-13 11 views
6

Annotate, o satırdaki en son değişikliği görebildiğiniz kadar uzağa götürür, eğer bu değişiklik birleştirme ise, düzeltme geçmişinde dolaşmaktan başka bir seçeneğim yoktur. Bir dahaki sefere değiştirildi. a) Bu gibi görünüyor) bu yüzden Mercurial - Dosyadaki belirli satırı değiştiren tüm değişiklikleri görüntüle

  • b) orta büyüklükteki repo sonsuza kadar sürer (belirli dosyaları hedef anlamaya olamaz

    • :

      Ben de hg grep -l '[contents of line]' ama denedim sadece son revizyon numarasını

    olarak aşağıdaki bağlantıyı dönmek belli belirsiz benzer - How to find all changsets where a reference to a function was modified?

  • cevap

    8

    Kullanım tortoisehg:

    1. Görünüm ->
    2. Sağ ilgilenen dosyasını tıklayın ve

    üst paneli hızlı geçmişini görmelerine de izin "revizyon numaraları ile açıklama"

  • tıklayarak "Tarih Dosyası" tıklayın Manifest dosyanın taahhütler açısından, alt panelde üst paneldeki seçilen sürüme bağlı olarak açıklamalı dosya gösterilir.

    UNIX: extra senaryo olmadan arielf tepkisini kullanarak

  • +1

    'u kullanmıyorum Belki de TortoiseHg'nin (3.2.3) daha sonraki bir sürümündeyim, fakat bunun tek bir satırın değişikliklerini nasıl izole ettiğini göremiyorum. (Artık manifest seçeneğini bulamıyorum, ancak explorer/plugin bağlam menüsünden dosyalara açıklama ekleyerek, bu cevabın önerdiği gibi görünüyor, bu da bir dosyanın çeşitli revizyonlarda nasıl göründüğünü gösteriyor; her bir revizyonda soru.) – downwitch

    +1

    kayıp bildirisi için - http://stackoverflow.com/questions/23457746/manifest-button-missing-in-tortoise-hg – Tom

    1

    Bu gerekler düşünüyorum biraz (iki adımlı) programlama.

    Aşağıdaki kabuk komut dosyası benim için oldukça iyi çalışıyor. Hem revizyonları hem de eşleşen satırları yazdırır.

    #!/bin/bash 
    # 
    # script to grep for a pattern in all revisions of a file 
    # Usage: scriptname 'pattern' filepath 
    # 
    function fatal() { 
        echo "[email protected]" 1>&2 
        exit 1 
    } 
    
    function usage() { 
        echo "[email protected]" 1>&2 
        fatal Usage: $0 pattern file 
    } 
    
    case "$1" in 
        '') usage 'missing pattern to search for' ;; 
        *) Pat="$1" ;; 
    esac 
    
    if [ "$2" != '' ]; then 
        File="$2" 
    else 
        usage 'must pass file as 2nd argument' 
    fi 
    
    # -- generate list of revisions (change-sets) involving $File 
    for rev in `hg log --template '{rev}\n' $File`; do 
        # -- grep the wanted pattern in that particular revision 
        hg grep "$Pat" -r $rev $File 
    done 
    

    Notlar:

    • sadece revizyonları listesini isterseniz, eşleştirme metnini şerit ve sadece revizyon öneki ve muhtemelen boru 'tür -u' yoluyla ayrılmak için bir adım ekleyebilir Ben de yeniden adlandırılmış/kaldırılan dosyaları desteklemek için, dosyanın varlığının kontrol etmiyoruz
    • (desende örneğin tırnak) tamamen kusursuz değildir
    +0

    Bunu daha kolay bir şekilde yapmanın bir yolu olsaydı. TortoiseHg – ganeshran

    2

    • komut:

      hg log --template '{rev}\n' <FILE> | 
          xargs -I @ hg grep <PATTERN> -r @ <FILE> 
      
    • Eğer yapılandırma dosyanıza bir takma ad eklemek için kullanabilir

      (.hgrc):

      [alias] 
      _grep_line_in_history = ! $HG log --template '{rev}\n' $2 | 
          xargs -I @ hg grep '$1' -r @ $2 
      

    WINDOWS:

    • komutu:

      FOR /F "usebackq" %i IN (`hg log --template "{rev}\n" <FILE>`) DO 
      @(echo %i & hg grep <PATTERN> -r %i <FILE>) 
      
    • takma:

      [alias] 
      _grep_line_in_history = ! FOR /F "usebackq" %i IN 
          (`%HG% log --template "{rev}\n" "$2"`) DO @(echo %i & %HG% grep "$1" -r %i "$2") 
      
    İlgili konular