2010-03-03 11 views
6

Secondo HG manual:Mercuriale: Come rendere HG LOG come genitore banale?

Di default questo comando stampa numero di revisione e di modifiche id, tag, i genitori non banali, utente, data e ora , e un riepilogo per ogni commit. Quando viene utilizzato l'opzione -v/- verbose , viene visualizzato l'elenco dei file modificati e il messaggio di commit completo .

Ho provato hg log -v ma ancora non mostra i genitori banali.

+0

Che cosa significa "banale" significa in questo caso? Un genitore? O è più complicato di così? – mpen

risposta

6

È possibile utilizzare l'opzione --debug.

$ hg log --template '{parents}\n' --debug 
12:49f2f93d2efdd41c9ffb9dccf4d451e2d8bfbc5f -1:0000000000000000000000000000000000000000 
7:012b1bb5d99549a5a7c1a280755fa6336c0b472a -1:0000000000000000000000000000000000000000 
10:d6dc52582cfaa0e8be17a5b9da61b55692353afc 11:8ee9fa792548fc30669a34cf39fcc7185aabaa19 
8:d589ca45072469148f833f38918861e8de406e64 -1:0000000000000000000000000000000000000000 
5

È possibile visualizzarli visivamente in 'hg log -G' dopo aver acceso Graphlog Extension.

In questo contesto "banale" significa solo "è il numero di revisione corrente meno uno", così in una situazione come questa:

o changeset: 1440:fe26f69d4b84 
| user:  [email protected] 
| date:  Fri Jul 18 12:11:58 2008 -0400 
| summary:  Typo in last commit. 
| 
o changeset: 1439:74cbef36b62f 
| user:  [email protected] 
| date:  Fri Jul 18 12:10:23 2008 -0400 
| summary:  Fix bug in JobWrapper.get_input_fnames(), used by pbs runner, when an input dataset was optional and left empty. 
| 
o changeset: 1438:1e111ebb2664 
| user:  James Taylor <[email protected]> 
| date:  Thu Jul 17 22:14:40 2008 -0400 
| summary:  Workflows (owned and shared) can now be added to the tool menu. 
| 
o changeset: 1437:4a4de494fbf6 
|\ parent:  1436:37a7f508eb30 
| | parent:  1431:8b83b7250224 
| | user:  James Taylor <[email protected]> 
| | date:  Thu Jul 17 20:42:00 2008 -0400 
| | summary:  Merge. 
| | 
| o changeset: 1436:37a7f508eb30 
| | user:  James Taylor <[email protected]> 
| | date:  Thu Jul 17 20:40:20 2008 -0400 
| | summary:  Allow loading a specific controller/action in the root middle frame, and use 
| | 
| o changeset: 1435:96e1cda02414 
| | user:  James Taylor <[email protected]> 
| | date:  Thu Jul 17 20:16:13 2008 -0400 
| | summary:  Fix for scroll panel when dropping while still overlapping the edge. 
| | 

un elenco genitore viene visualizzato solo per i 1437, perché per il resto hanno un genitore singolo che è il numero di revisione meno uno.

+0

So come mostrare il grafico e so qual è il genitore banale, ma vorrei sapere se c'è un modo per forzare 'hg log' a mostrare i genitori banali :) (Sto costruendo il grafico da' hg log 'output e ora sto calcolando i genitori, ma getterò il mio codice se' hg log' può farlo.) –

+1

Non c'è modo di farlo funzionare con hg-log, ma ci sono un sacco di estensioni che esportano il grafico di revisione in un modo molto più semplice da analizzare/consumare rispetto all'output del log. Controlla l'estensione Graphviz per un esempio che include codice facilmente modificabile. –

+0

Ok, thx. Sembra più conveniente nella mia situazione mantenere il mio codice di calcolo dei genitori banali, dal momento che 'hg log --template" ... "' è abbastanza nel mio caso. Btw. sai perché 'hg log -r:' e 'hg log' produce l'output in ordine inverso: si tratta di un bug o di una funzionalità? :) –

3

I genitori modello di parola chiave è vuoto quando l'unico genitore è il nodo successivo

hg log --template "{parents}\n" -l 20

0

con questo semplice patch per fonti mercuriali si otterrà tutti i genitori nel registro: file di cmdutil .py: (linea 990 in Hg 3.1.2)

def _meaningful_parentrevs(self, log, rev): 
    """Return list of meaningful (or all if debug) parentrevs for rev. 

    For merges (two non-nullrev revisions) both parents are meaningful. 
    Otherwise the first parent revision is considered meaningful if it 
    is not the preceding revision. 
    """ 
    parents = log.parentrevs(rev) 
    return parents #<=================add this line 
    if not self.ui.debugflag and parents[1] == nullrev: 
     if parents[0] >= rev - 1: 
      parents = [] 
     else: 
      parents = [parents[0]] 
    return parents 

in Mercurial 4.0 ritrovamento nel file scmutil.py:

def meaningfulparents(repo, ctx): 
    """Return list of meaningful (or all if debug) parentrevs for rev. 

    For merges (two non-nullrev revisions) both parents are meaningful. 
    Otherwise the first parent revision is considered meaningful if it 
    is not the preceding revision. 
    """ 
    parents = ctx.parents() 
    return parents  #<===========================add this line 
    if len(parents) > 1: 
     return parents 
    if repo.ui.debugflag: 
     return [parents[0], repo['null']] 
    if parents[0].rev() >= intrev(ctx.rev()) - 1: 
     return [] 
    return parents 

si otterrà qualcosa del tipo:

$ hg log 
changeset: 62355:2722bdc1f0fc 
branch:  ALL-3158-fortran-memkind 
tag:   tip 
parent:  62354:82da46786838 
parent:  -1:000000000000 
user:  Marcos Mayorga <[email protected]> 
date:  Mon Jan 30 09:12:13 2017 +0000 
summary:  memkind smoke tests for FORTRAN 

changeset: 62354:82da46786838 
branch:  ALL-3158-fortran-memkind 
parent:  62194:c98a4c8295ab 
parent:  -1:000000000000 
user:  Marcos Mayorga <[email protected]> 
date:  Fri Jan 27 14:38:53 2017 +0000 
summary:  create branch 

... 
Problemi correlati