Git.commit: CommitOptions.date only sets the author date, not the committer date
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- git, typescript
- Área
- tooling
Línea de trabajo
Lee src/util/git.ts y localiza el tratamiento de options.date en Git.commit; después, encuentra las pruebas existentes relacionadas con commit y ejecútalas antes de añadir un caso de regresión. Se considera terminado cuando un commit al que se le proporciona una fecha informa de timestamps de author y committer coincidentes tanto en %ai como en %ci.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Observed behavior
Git.commit in src/util/git.ts forwards options.date as --date=<iso> to git:
if (date != null) {
args.push(`--date=${new Date(date).toISOString()}`);
}
Git's --date flag only sets the AUTHOR date. The committer date defaults to "now" unless GIT_COMMITTER_DATE is set. Because the API exposes a single date, callers will reasonably assume it sets the commit's timestamp, but only one of the two timestamps actually changes.
Expected behavior
A single date option should set both author and committer dates so the resulting commit is fully deterministic, or the option should be renamed/split to make the asymmetry explicit.
Minimal reproduction
const date = new Date('1970-01-01T00:00:00Z').getTime();
await git.commit('msg', {
committer: { name: 'X', email: 'x@y' },
date,
});
// git log -1 --format='AD=%ai CD=%ci'
// -> AD=1970-01-01 00:00:00 +0000 CD=2026-05-25 19:25:44 +0100
Verified with a standalone Node script that replicates the exact spawn arguments used by Git.commit.
Suggested fix
Set both timestamps via environment variables, which avoids relying on the asymmetric --date flag:
if (date != null) {
const iso = new Date(date).toISOString();
env['GIT_AUTHOR_DATE'] = iso;
env['GIT_COMMITTER_DATE'] = iso;
}
Add a regression test that commits with a date and asserts both %ai and %ci match.
- Lenguaje dominante
- TypeScript
- Estrellas
- 2
- Forks
- 1
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de joewalker/loop-the-loop
-
bug S4
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
joewalker/loop-the-loop#88 ·
-
Git exec(): child killed by a signal rejects with new Error('') and loses the signal informationAbiertobug S3
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
joewalker/loop-the-loop#84 ·
-
bug S3
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
joewalker/loop-the-loop#83 ·
-
bug S4
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
joewalker/loop-the-loop#79 ·
-
bug S4
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
joewalker/loop-the-loop#78 ·
Todos los issues de joewalker/loop-the-loop
Issues similares
-
bug require-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
expressjs/expressjs.com#2549 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
umami-software/umami#4686 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
[Bug]: Device screenshot fails with 500 on iPhone Duo (Xcode 27.2): serve-sim calls simctl without --displayPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
pingdotgg/t3code#24900 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
inu-appcenter/UNIDorm-web#411 ·
Los mantenedores suelen responder en 1 día
-
🐛 bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 2 días