2014-10-02 14 views
12

La seguente dichiarazione GitE 'possibile avere un periodo finale in user.name in Git?

cd periodtest/ 
git init 
git config user.name "Test." 

# verify that user.name is 'Test.' 
git config user.name 

touch README 
git add README 
git commit -a -m "period test" 

risultati nei seguenti cassa

# check user name after commit 
git log 
And the resulting commit w/out the period was: 
commit 9b7e4960fd8129059b5759d1bb937b60241fd70b 
Author: Test <[email protected]> 
Date: Wed Oct 1 20:28:28 2014 -0700 

    period test 

C'è un modo per ottenere quel periodo per rimanere nel nome utente?

+1

Almeno 1.9.3 mostra questo comportamento. Strano. –

risposta

8

Questo comportamento è codificato in git.

Edit: Così com'è questo è ancora vero per git versione 2.16.1 (22 gennaio 2018).

Per creare l'autore stringa durante un commit git rimuove CRUD (come lo chiama git) dal l'inizio e la fine della stringa. Per questo utilizza la funzione strbuf_addstr_without_crud definita in ident.c - see ident.c line 406 version 2.16.1. Dai un'occhiata all'intestazione della funzione.

/* 
* Copy over a string to the destination, but avoid special 
* characters ('\n', '<' and '>') and remove crud at the end 
*/ 
static void strbuf_addstr_without_crud(struct strbuf *sb, const char *src) 

See ident.c lines 214-255 version 2.16.1.

Git determina crud tramite un'altra funzione che verifica la presenza di caratteri specifici.

static int crud(unsigned char c) 
{ 
    return c <= 32 || 
    c == '.' || 
    c == ',' || 
    c == ':' || 
    c == ';' || 
    c == '<' || 
    c == '>' || 
    c == '"' || 
    c == '\\' || 
    c == '\''; 
} 

See ident.c lines 191-203 version 2.16.1.

Come si può vedere un periodo è considerato crud da git e verrà rimosso, al momento non ci sono flag o opzioni che è possibile impostare per evitare questo comportamento.


Ciò significa che sono disponibili due opzioni.

  1. È forchetta git e cambiare il modo git crea la stringa diautore.

  2. O si aggiunge un altro personaggio dopo il periodo di uscita, ad esempio, un Zero-width space (che spesso non sarà stampato correttamente su una console)

In alternativa si può sempre inviare una richiesta di funzionalità sul git mailing list, ma in questo caso non vorrei alzare le mie speranze troppo in alto.

Problemi correlati