2015-01-13 2 views
5

Con --date=localgit log mostra le date nel mio fuso orario (dell'utente):mostra i timestamp del log git in formato ISO nel fuso orario dell'utente?

$ git log --date=local -3 --pretty=tformat:'%cd %h' --abbrev-commit 
Thu Dec 18 15:22:11 2014 dc20f74 
Thu Dec 18 14:01:26 2014 06c214f 
Tue Nov 4 03:48:44 2014 ac33158 

Il man-page dice

- data [...] ha effetto solo per le date indicate in formato leggibile, come quando si usa --pretty.

Ma con formato ISO %ci essa non ha effetto, come un dato di fatto --date=local e --date=default prodotto esattamente lo stesso di uscita:

$ git log --date=local -3 --pretty=tformat:'%ci %h' --abbrev-commit 
2014-12-18 23:22:11 +0000 dc20f74 
2014-12-18 22:01:26 +0000 06c214f 
2014-11-04 17:18:44 +0530 ac33158 

$ git log --date=default -3 --pretty=tformat:'%ci %h' --abbrev-commit 
2014-12-18 23:22:11 +0000 dc20f74 
2014-12-18 22:01:26 +0000 06c214f 
2014-11-04 17:18:44 +0530 ac33158 

Come posso vedere git log in un formato meno prolisso in il mio fuso orario locale? Idealmente mi piacerebbe vederli in '%C%m%dT%H%M%S', per usare la sintassi della data di unix.

+0

Il tuo secondo commento ha '--date = default' specificato mentre il primo ha' --date = local'. È intenzionale? "default mostra timestamp nel fuso orario originale (o committer o autore)", dice la manpage git. – dcsohl

+0

Era una pessima incolla. '--date = local' ha lo stesso risultato. Aggiornerò la domanda –

+0

Come fai a sapere che il top case è nel fuso orario dell'utente? Non sono stampate informazioni sul fuso orario e i commit mostrati sono diversi dai commit mostrati in basso. Sarebbe bello avere un po 'più di coerenza. – dcsohl

risposta

0

Non sembra possibile visualizzare %ci (formato orario ISO) convertito nel fuso orario dell'utente locale; viene sempre visualizzato nel fuso orario del committer. È possibile utilizzare %ct e analizzare l'output e riformattarlo con un'utilità come date o qualche altro script o utilizzare %cd.

6

Sarà possibile con git 2.7 (Q4 2015), che introduce -local come istruzione.

Ciò significa che, oltre a:

--date=(relative|local|default|iso|iso-strict|rfc|short|raw) 

si avrà anche:

--date=(relative-local|default-local|iso-local|iso-strict-local|rfc-local|short-local|raw-local) 

È ora possibile chiedere qualsiasi formato data utilizzando il fuso orario locale.

Nel tuo caso:

git log --date=iso-local -3 --pretty=tformat:'%cd %h' --abbrev-commit 
       ^^^^^^^^^ 
        |____| that part is new! 

Vedi commit 99264e9, commit db7bae2, commit dc6d782, commit f3c1ba5, commit f95cecf, commit 4b1c5e1, commit 8f50d26, commit 78a8441, commit 2df4e29 (3 settembre 2015) per John Keeping (johnkeeping).
Vedi commit add00ba, commit 547ed71 (03 set 2015) di Jeff King (peff).
(fusa per Junio C Hamano -- gitster -- in commit 7b09c45 05 ott 2015)

In particolare, commit add00ba cita:

date: rendere "local" ortogonale al formato della data:

maggior parte del nostro " --date "le modalità relative al formato della data: quali elementi mostriamo e in quale ordine.
Ma "--date=local" è un po 'strano.Significa "mostra la data nel formato normale, ma usando il fuso orario locale".
Il fuso orario che usiamo è ortogonale al formato reale, e non c'è ragione che non potevamo avere "ISO8601 localizzata", ecc

Questa patch aggiunge un "local" campo "struct date_mode" booleana, e lascia cadere il DATE_LOCAL elemento dall'enum date_mode_type (è ora solo DATE_NORMAL più local=1).
La nuova funzione è accessibile agli utenti aggiungendo "-local" a qualsiasi modalità di data (ad esempio, "iso-local") e manteniamo "local" come alias per "default-local" per compatibilità con le versioni precedenti.

+1

Questo non sembra funzionare come previsto, almeno su Fedora con git 2.7.4-2.fc24: 'git log - -date = iso-local -3 --pretty = tformat: '% cd% h' --abbrev-commit' produce '2016-03-11 15:51:49 +1000 67398e9', cioè con il fuso orario. – seanf