Rozdział 23 · Część VI · Wydanie pierwszej wersji

Rezultaty: pełna ścieżka projektu od pomysłu do premiery

Od pomysłu po pierwsze wydanie — cała ścieżka jest raz w całości, na prawdziwym projekcie.

SafeSort · Część 6 z 6Premiera

Pełna ścieżka projektu

Na początku tego rozdziału SafeSort był tylko pomysłem. Teraz to prawdziwe repozytorium na GitHub — Cartesian-School/safesort – z 14 zamkniętymi Issues, realnymi Pull Request, zielonymi CI weryfikacji i opublikowanymi Wydanie 0.1.0. Oto cała podróż, z tym, co pojawiło się na każdym etapie:

Ideawymagania: co program robi, a czego nie robiGit i GitHubinstalacja, uwierzytelnianie, prawdziwe repozytorium SafeSortGitHub Project14 Issues — problem jest formułowany dla każdej częściREADME.md, pyproject.tomlpierwszym zatwierdzeniu repozytorium dostępna staje się safesort poleceńScannerscanner.py — Issue №1, PR №15Klasyfikatorclassifier.py — Issue №2, PR №16Plan i kolizjeplanner.py — Issues nr 3 i nr 6 razem, PR nr 17Applyexecutor.py — Issue №5, PR №18Manifest i undomanifest.py — Issues nr 7 i nr 8 razem, PR nr 19Duplikatyduplicates.py to potwierdzenie rozmiaru → SHA-256 → bajtów, Issue nr 9 PR nr 20Drużyna łańcuch znakówargparse, pięć podzespołów – Issue nr 4, PR nr 21 (ostatni, gdy wszystko inne już było na miejscu)Robaki, config, testy, CIIssues nr 10–13 jest częścią implementacji odpowiadających modułów, bez osobnego PRWersja 0.1.0CHANGELOG.md, editable install, wheel i sdist sprawdzone ponownie — Issue nr 14Premieraprawdziwy v0.1.0 tag i GitHub Release
Od pomysłu do publikacji – dokładna historia: 9 z 14 Issues zamknięto po 7 Pull Request (dwa PR zamknęły się dwa Issue), pozostałe pięć bez osobnego PR
To, co już tam jest
Git i GitHub są skonfigurowane
Repozytorium Real SafeSort
GitHub Project i 14 Issues
Zainstalowany pakiet
Działająca komenda łańcuch znaków
Bezpieczne podróże z anulowaniem
Znajdź duplikaty
Testy automatyczne
GitHub Actions (CI)
Wersja 0.1.0 - Tag i GitHub Release opublikowane
Publikacja w PyPI
Klasyfikacja według zawartości pliku

Co już SafeSort zrobić

KomendaCo robiZmienia pliki?
scanznajduje i liczy pliki według kategoriinie
planpokazuje plan ruchównie
duplicatesznajduje pliki z tą samą zawartościąnie
applywykonuje transfery z planutak, tylko na wyraźne polecenie
undocofa ostatnią wykonaną operacjętak, tylko odzyskiwanie

co dalej

Wersja 0.1.0 celowo nie obejmuje wszystkiego, co możliwe: pierwsza część tego rozdziału to Określił granice. Dalszy rozwój SafeSort wykracza poza zakres tego rozdziału, ale niektóre Instrukcje naturalnie kontynuują to, co już zostało zrobione: publikacja pakietu w PyPI, klasyfikacja nie tylko przez rozszerzenie, ale także przy dokładnym sprawdzeniu zawartości pliku, interfejs dla Ustawienia inne niż ręczna edycja pliku TOML-.

Aneks do tego rozdziału powtarza tę samą ścieżkę, od problemu do Pull Request, Sześć razy, już samodzielnie, przy sześciu małych projektach: Dodatkowa praktyka: sześć mini-projektów dla GitHub.

Czego nauczyliśmy się w tym rozdziale

  • Przed napisaniem kodu wymagania projektu opisują nie tylko to, co program robi, ale także to, czego świadomie nie robi.
  • Podział na read-only planowanie i dwie jawne operacje, bezpośrednią apply i odwrotną undo, chroni przed przypadkowymi zmianami plików użytkownika.
  • Wyszukiwanie duplikatów wykonuje kosztowną operację — haszowanie — tylko wtedy, gdy faktycznie może zmienić odpowiedź: po wybraniu plików według rozmiaru.
  • Testy automatyczne działają tylko na katalogach tymczasowych – żaden test nie powinien dotykać rzeczywistych plików użytkownika.
  • Git i GitHub — część developmentu od samego początku, a nie końcowy krok: Issue formułuje zadanie, gałąź izoluje pracę, Pull Request otwiera ją do weryfikacji, GitHub Actions sprawdza testy automatycznie.