ROZDZIAŁ 23 · STRONA 1544

Pierwszy projekt na GitHub: SafeSort

Napisz program, który uporządkuje pliki i doprowadzi je do stanu gotowego do GitHub: testów, historii zatwierdzeń Pull Request.

~16-20 godzin jeden projekt, 6 części 24 treningi: 18 SafeSort + 6 w domu
GitHubPierwszy projekt Pull Request na GitHub

W tym rozdziale zbudujemy program, który robi porządek w zaśmieconym folderze — i doprowadzimy go do stanu, w którym można go pokazać na GitHub: z testami, historią commitów i Pull Request.

kod working tree → staging → commit GitHub push → PR → CI
Tak było
Downloads/
report.pdf
IMG_4912.jpg
archive.zip
notes.txt
photo-copy.jpg
Stało się
Downloads/
Sorted/
documents/
report.pdf
images/
IMG_4912.jpg
photo-copy.jpg
archives/
archive.zip
other/
notes.txt
SafeSort segreguje pliki według kategorii i znajduje takie same (photo-copy.jpg — nie „zgubiony” plik, lecz jego kopia).
Użytkownikuruchamia polecenieSafeSortscan / plan / apply /duplicates / undoSystem plikówjest czytana lub zmieniana
Program nic nie robi bez wyraźnego polecenia użytkownika.
Tylko czytać
scan - Pokazuje pliki
plan - Pokazuje plan podróży
duplicates — pokazuje dopasowania
Zmieniają pliki
apply - Przenosi pliki
undo — przywraca pliki na miejsce
~/safesort $ safesort plan ~/Downloads
9 move operations planned.
No files have been changed.
plan pokazuje tylko, co się stanie — apply będzie potrzebne osobno.
23.1Co stworzymy: SafeSort1547Czym jest Git i czym jest GitHub1554Instaluj Git1557Pierwsze ustawienie Git1559GitHub Relacja1562HTTPS, SSH i uwierzytelnianie1563Konfigurujemy SSH1565Utworzenie repozytorium SafeSort1567Sklonuj repozytorium1569Lokalne i zdalne repozytorium1571Gałąź, HEAD i origin/main1573Repository i GitHub Project1576Najlepsze praktyki Project1578Tworzenie GitHub Project1580Board, Table i Roadmap1581Fields Project1583Szkice: Zadanie bez Issue1585Zamień draft w Issue1587Tworzenie Issues1588Pierwszy cykl: Issue → Branch → PR1591Opcjonalne · Kopiowanie Project1593Nieobowiązkowe · Edytujemy elementy1594Opcjonalne · Filtr i grupa1596Nieobowiązkowe · Przedstawienia1598Opcjonalne · Automatyzacja1599Opcjonalne · Archiwum1602Opcjonalne · Szablony1603Opcjonalne · Insights160523.2Stwórz repozytorium projektów160623.3Pierwszy README projektu161123.4Planowanie struktury pakietu Python-161423.5pyproject.toml i ustawienie projektu161923.6Drużyna łańcuch znaków SafeSort162123.7pathlib: pracujemy ze ścieżkami i katalogami162523.8Zeskanuj katalog162723.9Które katalogi nie wymagają przeglądania163123.10Zdefiniuj kategorię pliku163423.11Od analizy do planu działania163723.12Tryb Podglądu164023.13Bezpiecznie przenoszcie pliki164323.14Co zrobić, jeśli nazwisko jest już zajęte164923.15Dziennik wykonanych operacji165123.16Cofnij ostatnią operację165423.17Znajdź identyczne pliki165723.18SHA-256 i hash zawartości pliku165923.19Znajdź grupy duplikatów166123.20Obsługa błędów systemu plików166523.21Dodaj log programu166823.22Ustawienia projektu167023.23Pisanie pierwszych testów automatycznych167423.24Sprawdź skan i klasyfikację167723.25Sprawdź przeprowadzkę i anulowanie167823.26Sprawdzamy wyszukiwanie duplikatów168023.27Sprawdzamy interfejs wiersza poleceń168223.28Zmiana samooceny i zaangażowanie dyscypliny168423.29GitHub: używać Issue, branch i Pull Request168623.30GitHub Actions: automatycznie wykonuje testy168923.31Dokumentacja, wersja i pierwsze wydanie169223.32Rezultaty: pełna ścieżka projektu od pomysłu do premiery1698Aplikacja: Sześć mini-projektów dla GitHub