Revertir todos los commits timestamp 1 hora atrás y get "Found nothing to rewrite"

Estoy tratando de solucionar algunos problemas con los times de mis commits usando git filter-branch

 git filter-branch --commit-filter -f \ 'if [ "$GIT_AUTHOR_NAME" = "name" ]; then \ old_date = $GIT_COMMITER_DATE;\ export GIT_AUTHOR_DATE=`date -R -d "$old_date -1 hour`;\ export GIT_COMMITER_DATE=`date -R -d "$old_date -1 hour`;\ fi;\ git commit-tree "$@" 

Me he asegurado de que mi campo de nombre sea correcto, pero git returns

No encontré nada para reescribir

EDITAR: (después de las sugerencias)

 git filter-branch --commit-filter \ 'if [ "$GIT_AUTHOR_NAME" = "myusername" ]; then \ old_date=$GIT_COMMITTER_DATE;\ export GIT_AUTHOR_DATE=`date -R -d "$old_date -1 hour"`;\ export GIT_COMMITTER_DATE=`date -R -d "$old_date -1 hour"`;\ fi;\ git commit-tree "$@"' 

Así que supongo que hay algún error con mi syntax bash o mi enfoque, sin embargo, no puedo entender qué

ACTUALIZACIÓN : Aquí hay defectos que encontré.

  • $GIT_COMMITTER_DATE tiene dos T's. 🙂
  • GIT_AUTHOR_DATE=`date -R -d "$old_date -1 hour`; falta un cierre " .
  • GIT_COMMITTER_DATE tiene el formatting @1240466185 -0700 cuya date no comprende. Ver git-commit-tree sobre el "formatting interno de Git".
  • No puede haber un espacio en las asignaciones de variable bash, old_date=$GIT_COMMITTER_DATE .
  • No debe basar GIT_AUTHOR_DATE en GIT_COMMITTER_DATE , pueden ser diferentes.

ACTUALIZACIÓN2 : El código puede simplificarse usando --env-filter . Aquí es donde lo he dejado. El análisis de la date no es correcto. Esperaba que Git entendiera @1240466185 -0700 -1 hour pero parece que no.

 git filter-branch -f --env-filter ' if [ "$GIT_AUTHOR_NAME" = "Michael G. Schwern" ]; then old_committer_date=$GIT_COMMITTER_DATE; old_author_date=$GIT_AUTHOR_DATE; export GIT_COMMITTER_DATE="$old_committer_date -1 hour"; export GIT_AUTHOR_DATE="$old_author_date -1 hour"; fi; ' 

Solo mirando su código, aquí están los lugares donde comenzaría la debugging.

  • Si $GIT_AUTHOR_NAME nunca es "name" .
    • Use $GIT_AUTHOR_EMAIL si puede, es probable que sea más confiable.
  • Si $old_date no está en un formatting que le guste la date .
  • $GIT_COMMITTER_DATE o $GIT_AUTHOR_DATE no tienen el formatting git likes.

Ese primero es más probable.