@StephenJennings: to lepszy sposób, aby dowiedzieć się, jakie pliki masz pod kontrolą wersji, niż mentalnie robiąc „ ls -Rminus .gitignore”. Przydatność w ogóle: można mniej więcej wiedzieć, co się dzieje, ale introspekcja repozytorium daje pewność, że się wie. Szczególnie dla początkujących użytkowników taka pewność robi dużą różnicę w tym, jak przyjemny jest program. Git nie traktuje uspokajania swoich użytkowników priorytetem, dlatego tak wiele osób w zrozumiały sposób nienawidzi go, dopóki się go nie nauczy.
Jestem absolutnie okropny w skryptach powłoki, więc to z pewnością nie jest optymalne, ale tego rodzaju rzeczy mogą zrobić to dla ciebie, zakładając, że używasz bash. Mam nadzieję, że ktoś inny przyjdzie i posprząta go lub zastąpi czymś lepszym. Testowałem to tylko na komputerze Mac, więc uważaj.
Powinien wydrukować wszystkie pliki w commits, które są przodkami obecnego HEAD. Zapisz go w pliku nazwanym manifest.shgdzieś na swojej ścieżce:
#!/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
Nie ma exporttakiej potrzeby, ponieważ nie musi być dostępny w procesach potomnych. Jeśli pętla jest ponad skrótami SHA, pętla działa dobrze, w przeciwnym razie readlepiej byłoby użyć i zacytować zmienną. sortma -uopcję, która robi to, co uniqrobi. Plik nie dostanie się rmd, gdy anulujesz w połowie, będziesz potrzebować trapdo tego, ale prawdopodobnie byłoby to nadmierne w przypadku tego skryptu.
Daniel Beck
@DanielBeck: Dzięki, zaktualizowałem to nieco. mktempnie istnieje w Git Bash, powinienem znaleźć sposób, aby sobie z tym poradzić, aby system Windows mógł także grać.
git ls-files
?ls -R
minus.gitignore
”. Przydatność w ogóle: można mniej więcej wiedzieć, co się dzieje, ale introspekcja repozytorium daje pewność, że się wie. Szczególnie dla początkujących użytkowników taka pewność robi dużą różnicę w tym, jak przyjemny jest program. Git nie traktuje uspokajania swoich użytkowników priorytetem, dlatego tak wiele osób w zrozumiały sposób nienawidzi go, dopóki się go nie nauczy.Odpowiedzi:
Jestem absolutnie okropny w skryptach powłoki, więc to z pewnością nie jest optymalne, ale tego rodzaju rzeczy mogą zrobić to dla ciebie, zakładając, że używasz bash. Mam nadzieję, że ktoś inny przyjdzie i posprząta go lub zastąpi czymś lepszym. Testowałem to tylko na komputerze Mac, więc uważaj.
Powinien wydrukować wszystkie pliki w commits, które są przodkami obecnego HEAD. Zapisz go w pliku nazwanym
manifest.sh
gdzieś na swojej ścieżce:źródło
export
takiej potrzeby, ponieważ nie musi być dostępny w procesach potomnych. Jeśli pętla jest ponad skrótami SHA, pętla działa dobrze, w przeciwnym razieread
lepiej byłoby użyć i zacytować zmienną.sort
ma-u
opcję, która robi to, couniq
robi. Plik nie dostanie sięrm
d, gdy anulujesz w połowie, będziesz potrzebowaćtrap
do tego, ale prawdopodobnie byłoby to nadmierne w przypadku tego skryptu.mktemp
nie istnieje w Git Bash, powinienem znaleźć sposób, aby sobie z tym poradzić, aby system Windows mógł także grać.