Git.commit: --author value is wrapped in literal double quotes, corrupting author names that contain a quote character
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- git, typescript
- Ambito
- tooling
Direzione di ricerca
Inizia nell’implementazione di Git.commit, nel punto in cui viene assemblato l’argomento --author, quindi esamina i test esistenti relativi ai commit. Riproduci il problema con un nome del committer contenente virgolette doppie, rimuovi le virgolette letterali circostanti dall’argomento e aggiungi un test di regressione che verifichi che git log -1 --format='%an' conservi il nome completo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Observed behavior
Git.commit builds the --author argument with literal double quotes:
args.push(`--author="${committer.name} <${committer.email}>"`);
Because child_process.spawn is used without a shell, the literal " characters are part of the value passed to git. Git's "crud stripping" of identity strings hides the problem for ordinary names (leading/trailing quotes get filtered out), but the protection breaks down if committer.name itself contains a ".
Expected behavior
The literal quotes should not be in the value. The standard format that git documents is just --author=Name <email>, with no surrounding quotes.
Minimal reproduction
await git.commit('msg', {
committer: { name: 'Joe \"Real\"', email: '[email protected]' },
});
// git log -1 --format='%an'
// -> Joe \"Real (the trailing quote is silently lost)
Verified with a standalone Node script that replicates Git.commit's exact spawn arguments. Observed result:
AN=[Joe \"Real] AE=[[email protected]] CN=[Joe \"Real] CE=[[email protected]]
The trailing \" from the source name is gone.
Suggested fix
args.push(`--author=${committer.name} <${committer.email}>`);
A regression test that commits with committer.name = 'Joe \"Real\"' and asserts git log -1 --format='%an' returns Joe \"Real\" would catch this.
- Lingua principale
- TypeScript
- Stelle
- 2
- Fork
- 1
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di joewalker/loop-the-loop
-
bug S4
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
joewalker/loop-the-loop#88 ·
-
Git exec(): child killed by a signal rejects with new Error('') and loses the signal informationApertabug S3
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
joewalker/loop-the-loop#84 ·
-
bug S3
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
joewalker/loop-the-loop#82 ·
-
bug S4
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
joewalker/loop-the-loop#79 ·
-
bug S4
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
joewalker/loop-the-loop#78 ·
Tutte le issue di joewalker/loop-the-loop
Issue simili
-
The inspector never shows the instances field, so scaling out is unreachableForse già presa @Mrkewl l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
xevrion/breakscale#96 ·
I maintainer di solito rispondono entro 4 giorni
-
Object parameters lose their structure when resources is enabledForse già presa @asts-top l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
rossant/awesome-math#199 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
jaegertracing/jaeger-ui#4618 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
mifi/lossless-cut#3125 ·
I maintainer di solito rispondono entro 1 giorno