Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Git.commit: CommitOptions.date only sets the author date, not the committer date

Abierto Apto para principiantes
#82 0 comentarios 0 reacciones 0 asignados Ver en GitHub

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

bug S3

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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de joewalker/loop-the-loop

Todos los issues de joewalker/loop-the-loop

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.