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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top