Solo por curiosidad, ¿por qué razón necesitas esto?
Stephen Jennings
@StephenJennings: es una mejor manera de saber qué tipo de archivos tiene uno bajo control de versiones que haciendo mentalmente " ls -Rmenos .gitignore". La utilidad en general: uno puede saber más o menos lo que está sucediendo, pero la introspección del repositorio le da a uno la confianza de que uno sabe. Especialmente para los usuarios principiantes, tal confianza hace una gran diferencia en lo agradable que es usar el programa. Git no hace que tranquilizar a sus usuarios sea una prioridad, por lo que es comprensible que tanta gente lo odie hasta que lo aprenda.
Soy absolutamente terrible en los scripts de shell, por lo que esto es ciertamente subóptimo, pero este tipo de cosas podría hacerlo por usted, suponiendo que esté usando bash. Esperemos que alguien más pueda venir y limpiarlo, o reemplazarlo con algo mejor. Solo lo he probado en mi Mac, así que ten cuidado.
Debería imprimir todos los archivos en commits que son ancestros del HEAD actual. Guárdelo en un archivo llamado manifest.shen algún lugar de su ruta:
#!/bin/bash
TFILE=$(mktemp -t git-manifest)
for sha in $(git log --pretty=format:%H)
do
git ls-tree --name-only --full-tree -r $sha >> $TFILE
done
sort -u $TFILE
rm $TFILE
No es necesario, exportya que no necesita estar disponible en los procesos secundarios. Si el bucle está sobre los hash SHA, el bucle funciona bien, de lo contrario readsería mejor usar algo y citar la variable. sorttiene una -uopción que hace lo que uniqhace. El archivo no obtendrá rmd cuando cancele a mitad de camino, necesitaría un trappara eso, pero eso probablemente sería excesivo para este script.
Daniel Beck
@DanielBeck: Gracias, lo actualicé un poco. mktempno existe en Git Bash, debería encontrar una manera de lidiar con eso para que Windows también pueda jugar.
git ls-files
?ls -R
menos.gitignore
". La utilidad en general: uno puede saber más o menos lo que está sucediendo, pero la introspección del repositorio le da a uno la confianza de que uno sabe. Especialmente para los usuarios principiantes, tal confianza hace una gran diferencia en lo agradable que es usar el programa. Git no hace que tranquilizar a sus usuarios sea una prioridad, por lo que es comprensible que tanta gente lo odie hasta que lo aprenda.Respuestas:
Soy absolutamente terrible en los scripts de shell, por lo que esto es ciertamente subóptimo, pero este tipo de cosas podría hacerlo por usted, suponiendo que esté usando bash. Esperemos que alguien más pueda venir y limpiarlo, o reemplazarlo con algo mejor. Solo lo he probado en mi Mac, así que ten cuidado.
Debería imprimir todos los archivos en commits que son ancestros del HEAD actual. Guárdelo en un archivo llamado
manifest.sh
en algún lugar de su ruta:fuente
export
ya que no necesita estar disponible en los procesos secundarios. Si el bucle está sobre los hash SHA, el bucle funciona bien, de lo contrarioread
sería mejor usar algo y citar la variable.sort
tiene una-u
opción que hace lo queuniq
hace. El archivo no obtendrárm
d cuando cancele a mitad de camino, necesitaría untrap
para eso, pero eso probablemente sería excesivo para este script.mktemp
no existe en Git Bash, debería encontrar una manera de lidiar con eso para que Windows también pueda jugar.