Codifica "svnlook cambiata"
-
03-07-2019 - |
Domanda
Quando eseguo il seguente comando:
svnlook ha cambiato {path} -r {rev}
dove {percorso} è il percorso del repository e {rev} è il numero di revisione, ottengo il seguente output:
U trunk / this / is / a / path / Mon fichier avec un nom accentu, .txt
L'output dovrebbe essere effettivamente:
U trunk / this / is / a / path / Mon fichier avec un nom accentué.txt
Il " é " e altri caratteri accentati non vengono mostrati correttamente ...
Esiste un modo per svnlook di generare correttamente i caratteri?
So di poter usare " svn log " con " - xml " opzione per ottenere la codifica corretta, ma ne ho bisogno per un hook pre-commit e svn.exe può ottenere solo informazioni dalle revisioni, non dalle transazioni.
Grazie
Soluzione
Il problema che hai qui è che il tuo hook pre-commit è eseguito dal binario Subversion, che per motivi di sicurezza passa un ambiente vuoto allo script hook. Tra le cose che fa un ambiente vuoto è rimuovere eventuali impostazioni locali specifiche, ripristinando il sistema predefinito (di solito "C" o qualcosa di simile).
Per ottenere l'output corretto da svnlook
, è necessario ripristinare l'ambiente a cui tieni prima di eseguirlo. Se il tuo script è bash, forse qualcosa del tipo:
#!/bin/bash
export LANG="en_US.UTF-8"
export PATH="/bin:/usr/bin"
# Run svnlook here and get UTF-8 encoded output
In generale, qualsiasi locale con il suffisso '.UTF-8' dovrebbe andare bene. Dato che sembri un oratore francese, l'impostazione locale "fr_FR.UTF-8" sarebbe un'impostazione ragionevole.
Altri suggerimenti
Dovresti provare a invocare questo:
export LANG="fr_FR"
(o qualunque sia la lingua dello sviluppatore) prima di utilizzare svnlook. Puoi anche impostare un lang predefinito negli script di avvio della shell, quindi non devi esportarlo ogni volta.