Slovník pojmů

Repozitář

Repozitář drží zdrojový kód, historii a související projektové soubory. Není totožný s projektem, Composer repozitářem ani Repository patternem v aplikační architektuře.

Stručná definice

Úložiště verzované historie projektu a jeho sdílené konfigurace.

Lokální Git repozitář obsahuje Git metadata a historii spolu s pracovní kopií souborů. Vzdálený repozitář umožňuje historii sdílet s týmem, řídit přístupy, pořádat pull requesty nebo spouštět CI. Veřejný a soukromý repozitář se liší dostupností, ne automaticky úrovní bezpečnosti.

Slovo repository se v softwaru používá i pro Repository pattern: objektový vzor abstrahující načítání a ukládání dat aplikace. Tento článek popisuje repozitář zdrojového kódu; vzor v aplikaci není souborová složka ani Git hosting.

Jaký problém řeší

Sdílí kód, historii a pravidla spolupráce

Repozitář je společný zdroj pro vývoj, review, sestavení a dohledání změn projektu.

  • zdrojový kód, testy, dokumentaci a konfiguraci projektu
  • historii commitů, větve a tagy release
  • pull requesty nebo merge requesty a řízení přístupů
  • CI workflow, Docker konfiguraci a databázové migrace
  • README, licenční informace a technický kontext pro další vývojáře

Praktický příklad

Co patří do repozitáře PHP aplikace

Repozitář e-shopové aplikace může obsahovat zdrojový kód, testy, composer.json, composer.lock, Docker konfiguraci, CI workflow, migrace a README. Tyto soubory dohromady umožňují sestavit, zkontrolovat a pochopit konkrétní verzi aplikace.

Produkční secrets, lokální cache, nahrané uživatelské soubory a odvoditelný adresář vendor sem obvykle nepatří. .gitignore může zabránit přidání dosud nesledovaných souborů, ale nenahradí odstranění již uniklého přístupu z historie.

shop/
├── .git/
├── src/
├── tests/
├── composer.json
├── composer.lock
├── docker-compose.yml
└── README.md

Jak funguje

Lokální a vzdálená historie spolupracují

Textový diagram popisuje běžný checkout: remote repozitář → clone → lokální .git a working tree → commit → push.

  1. Vzdálený zdroj Remote repozitář hostuje sdílené větve a pravidla přístupu. Může být bare, tedy bez pracovní kopie.
  2. Clone Vývojář vytvoří lokální kopii historie i working tree, ve které upravuje soubory.
  3. Lokální změna Commit zapíše vybrané změny do lokální Git historie; stále nemusí být viditelné pro tým.
  4. Sdílení a review Push odešle větev do remote, kde hostingová služba může nabídnout pull request, kontrolu a ochranu větve.
  5. Integrace a údržba Po sloučení se v repozitáři zachová historie, dokumentace a konfigurace potřebná pro další build či release.

Důležité pojmy

Historie, pracovní kopie a hosting jsou různé vrstvy.

Přesné rozlišení je důležité pro bezpečnost, přístupy i automatizaci.

Lokální a vzdálený repozitář

Lokální repozitář má každý klon. Vzdálený je cíl pro sdílení, ale není zvláštním druhem Gitu; origin je jen běžný místní název remote.

Working tree a .git

Working tree obsahuje soubory, které vývojář upravuje. Git metadata jsou obvykle v .git; worktrees mohou používat odkaz na sdílené metadata.

Větev, tag a výchozí větev

Větve podporují vývoj změn, tag označuje konkrétní historický bod a výchozí větev je týmová dohoda, ne technická autorita.

Dokumentace a přístupy

README, licence, CI a pravidla ochrany větví jsou důležitou součástí sdíleného produktu. Přístupy musí odpovídat rolím lidí i automatizace.

.gitignore

Pravidla ignorování se týkají dosud nesledovaných souborů. Neodstraní data, která už jsou v commitu nebo vzdálených klonech.

Vztah k podobným pojmům

Repozitář není automaticky projekt ani databázový vzor.

Stejné slovo v jiném kontextu neznamená stejnou technickou věc.

Repozitář a projekt
Projekt může používat více repozitářů a jeden monorepo může obsahovat více aplikací či balíčků.
Repozitář a GitHub
Repozitář je data a historie; GitHub je jedna služba, která může Git repozitář hostovat.
Repozitář a Composer repository
Composer repository je zdroj balíčků a metadat pro resolver závislostí, ne nutně pracovní Git historie týmu.
Repozitář a Repository pattern
Repository pattern je aplikační abstrakce pro data. Git repozitář ukládá soubory a historii změn.

Výhody a omezení

Jedno úložiště usnadňuje spolupráci, ale potřebuje správu.

Přínosy

  • sdílená historie kódu, dokumentace a konfigurace
  • opakovatelné sestavení aplikace z verzovaných souborů
  • review, CI a řízení přístupů v jednom workflow
  • dohledatelnost změn a release verzí

Časté chyby

  • uložit do veřejného repozitáře secret nebo osobní data
  • považovat soukromý repozitář za bezpečný bez správy přístupů
  • spoléhat, že .gitignore odstraní již publikovaná data
  • dělit systém do mnoha repozitářů bez jasného vlastnictví a životního cyklu

Kdy dává smysl

Pro kód a konfiguraci, které musí být reprodukovatelné a sdílené.

Repozitář je přirozeným základem pro téměř každý udržovaný software. Umožní předat projekt dalšímu vývojáři, napojit testy a znovu sestavit konkrétní verzi aplikace.

Rozdělení do monorepa nebo více repozitářů je architektonické a organizační rozhodnutí. Má zohlednit vlastnictví, sdílené změny, nezávislost release i náklady na koordinaci, ne jen počet služeb.

Na co myslet

Repozitář je i bezpečnostní a komunikační hranice.

Soubory v historii mohou přežít dlouho; dohodnutá pravidla jsou proto důležitější než samotné založení repozitáře.

  • necommitovat secrets, lokální cache ani uživatelské uploady
  • verzovat zdrojový kód, testy, migrace a reprodukovatelnou konfiguraci
  • udržovat README a základní návod pro lokální vývoj a kontrolu
  • chránit hlavní větev review a CI podle rizika projektu
  • při úniku hodnoty ihned rotovat přístup, ne pouze upravit soubor

Časté otázky

Repozitář bez záměn

Jaký je rozdíl mezi projektem a repozitářem?

Projekt je širší celek. Může mít jeden repozitář, více repozitářů nebo být součástí monorepa s více aplikacemi.

Co znamená lokální a vzdálený repozitář?

Lokální repozitář je historie v klonu vývojáře. Vzdálený repozitář slouží ke sdílení větví a společné historii.

Je GitHub repozitář totéž jako Git?

GitHub hostuje Git repozitář a přidává služby spolupráce. Git je samotný verzovací systém.

Co řeší .gitignore a co ne?

Pomáhá ignorovat dosud nesledované soubory. Neodstraní soubor ani secret, který už byl commitnutý a sdílený.

Jak držím kvalitu vývoje

Repozitář propojuji s testy, kontrolami a čitelnou historií.

V PHP projektech používám verzovaný kód, quality gates a automatizaci tak, aby byl vývoj dohledatelný a bezpečně opakovatelný.

Zavolejte mi

Zavolám vám následující pracovní den mezi 9:00 a 17:00.

Můžete mi také zavolat rovnou.

+420 605 181 728

Nechte mi telefonní číslo a pošlete žádost o zpětné zavolání.

Odesláním souhlasíte se zpracováním údajů pro vyřízení žádosti.