-
1. Úvod
- 1.1 Správa verzí
- 1.2 Stručná historie systému Git
- 1.3 Základy systému Git
- 1.4 Příkazový řádek
- 1.5 Instalace systému Git
- 1.6 První nastavení systému Git
- 1.7 Získání nápovědy
- 1.8 Shrnutí
-
2. Základy práce se systémem Git
-
3. Větve v systému Git
- 3.1 Větve v kostce
- 3.2 Základy větvení a slučování
- 3.3 Správa větví
- 3.4 Postupy při práci s větvemi
- 3.5 Vzdálené větve
- 3.6 Přeskládání
- 3.7 Shrnutí
-
4. Git na serveru
- 4.1 Protokoly
- 4.2 Zprovoznění Gitu na serveru
- 4.3 Generování veřejného klíče SSH
- 4.4 Nastavení serveru
- 4.5 Démon Git
- 4.6 Chytrý HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Možnosti hostování u třetí strany
- 4.10 Shrnutí
-
5. Distribuovaný Git
- 5.1 Distribuované pracovní postupy
- 5.2 Přispívání do projektu
- 5.3 Správa projektu
- 5.4 Shrnutí
-
6. GitHub
-
7. Git Tools
- 7.1 Revision Selection
- 7.2 Interactive Staging
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Advanced Merging
- 7.9 Rerere
- 7.10 Ladění v systému Git
- 7.11 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Shrnutí
-
8. Customizing Git
- 8.1 Git Configuration
- 8.2 Atributy Git
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Shrnutí
-
9. Git a ostatní systémy
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Shrnutí
-
10. Git Internals
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Balíčkové soubory
- 10.5 The Refspec
- 10.6 Přenosové protokoly
- 10.7 Správa a obnova dat
- 10.8 Environment Variables
- 10.9 Shrnutí
-
A1. Appendix A: Git in Other Environments
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git in Powershell
- A1.7 Shrnutí
-
A2. Appendix B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
-
A3. Appendix C: Git Commands
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
4.2 Git na serveru - Zprovoznění Gitu na serveru
Zprovoznění Gitu na serveru
Teď se budeme věnovat nastavení gitové služby, která dříve zmíněné protokoly provozuje na vašem vlastním serveru.
Note
|
Ukážeme si příkazy a kroky pro základní, zjednodušenou instalaci na linuxovém serveru, ale tyto služby lze provozovat i na Mac nebo na windowsovských serverech. Při zprovozňování produkčního serveru uvnitř vaší infrastruktury ve skutečnosti určitě narazíte na rozdíly při nastavování zabezpečení nebo v použití nástrojů operačního systému, ale snad zde získáte obecný přehled, čeho všeho se to týká. |
Pro úvodní nastavení jakéhokoliv gitového serveru musíte vyexportovat existující repozitář do nového, holého repozitáře (bare repository), tj. do repozitáře, který neobsahuje pracovní adresář.
S tím obvykle nebývá problém.
Chcete-li naklonovat stávající repozitář a vytvořit tím nový, holý repozitář, přidejte do příkazu pro klonování volbu --bare
:
$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.
V adresáři my_project.git
byste teď měli mít kopii dat z původního gitového adresáře.
Je to přibližně stejné, jako byste provedli něco takového:
$ cp -Rf my_project/.git my_project.git
Bude tu sice pár menších rozdílů v konfiguračním souboru, ale pro náš účel můžeme příkazy považovat za téměř shodné. Vezme se samotný gitový repozitář (bez pracovního adresáře) a vytvoří pro něj samostatný adresář.
Umístění holého repozitáře na server
Nyní, když máte vytvořenu holou kopii repozitáře, zbývá ji už jen umístit na server a nastavit protokoly.
Řekněme, že jste zřídili server nazvaný git.example.com
, k němuž máte přístup přes SSH, a že chcete všechny své gitové repozitáře umístit pod adresář /srv/git
.
Za předpokladu, že /srv/git
na serveru už existuje, můžete nový repozitář vytvořit tím, že dovnitř nakopírujete váš holý repozitář:
$ scp -r my_project.git user@git.example.com:/srv/git
Od tohoto okamžiku mohou ostatní uživatelé, kteří mají SSH přístup k stejnému serveru s oprávněním pro čtení k adresáři /srv/git
, naklonovat váš repozitář spuštěním
$ git clone user@git.example.com:/srv/git/my_project.git
Pokud se uživatel dostane přes SSH na server a má oprávnění k zápisu do adresáře /srv/git/my_project.git
, má automaticky také oprávnění k odesílání dat.
Zadáte-li příkaz git init
s volbou --shared
, Git automaticky nastaví příslušná oprávnění skupiny k zápisu.
$ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --shared
Vidíte, jak jednoduché je vzít gitový repozitář, vytvořit jeho holou verzi a umístit ji na server, k němuž máte vy i vaši spolupracovníci SSH přístup. Teď už vám nic nebrání v zahájení spolupráce na stejném projektu.
Důležité je, že je to opravdu vše, co musíte udělat pro spuštění gitového serveru, ke kterému má přístup víc lidí. Prostě na server přidáte účty s SSH přístupem a umístíte holý repozitář někam, kam budou mít všichni zúčastnění nastaveno oprávnění pro čtení i zápis. Můžete začít — nic dalšího nepotřebujete.
V několika dalších podkapitolách si ukážeme pokročilejší možnosti nastavení. Probereme si, jak se vyhnout nutnosti vytváření uživatelských účtů pro každého uživatele, jak k repozitářům přiřadit veřejné oprávnění pro čtení, jak nastavit webová uživatelská rozhraní a další. Ale zapamatujte si, že pro spolupráci skupiny lidí na soukromém projektu je vše, co opravdu potřebujete, jen libovolný server podporující SSH a holý repozitář.
Nastavení pro malou skupinu
Pokud je váš tým malý nebo pokud chcete Git jen vyzkoušet ve své organizaci a máte jen pár vývojářů, může se vám to zjednodušit. Jednou z nejsložitějších stránek nastavení gitového serveru je správa uživatelů. Pokud chcete, aby byly určité repozitáře pro některé uživatele přístupné pouze ke čtení a pro jiné i k zápisu, může být nastavení přístupu a oprávnění trochu obtížnější.
SSH přístup
Jestliže už máte k dispozici nějaký server, k němuž mají všichni vaši vývojáři SSH přístup, bude většinou nejjednodušší nachystat repozitář na něm, protože celé nastavení už tím máte v podstatě hotové (jak jsme ukázali v předchozí podkapitole). Pokud pro své repozitáře požadujete komplexnější správu oprávnění, můžete to zvládnout běžnými oprávněními k systému souborů, které vám nabízí operační systém daného serveru.
Pokud chcete své repozitáře umístit na server, na kterém nejsou zřízeny účty pro všechny členy vašeho týmu, kteří by měli mít oprávnění k zápisu, musíte pro ně nastavit SSH přístup. Předpokládáme, že pokud máte server, na němž to lze provést, máte už nainstalován server SSH a jeho prostřednictvím k serveru přistupujete.
Existuje několik způsobů, jak umožnit přístup všem členům vašeho týmu.
Prvním způsobem je nastavit účty pro každého zvlášť, což je sice přímočaré, ale může to být těžkopádné.
Asi nebudete mít chuť spouštět příkaz adduser
(přidat uživatele) a nastavovat pro každého uživatele dočasná hesla.
Druhá metoda spočívá v tom, že na daném počítači vytvoříte jediného uživatele git, požádáte všechny uživatele, kteří mají mít oprávnění k zápisu, aby vám poslali svůj veřejný SSH klíč, a přidáte tento klíč do souboru ~/.ssh/authorized_keys
vašeho nového uživatele git.
Od toho okamžiku budou mít všichni přístup k tomuto počítači prostřednictvím uživatele git.
Tento postup nemá žádný vliv na data vašich revizí — SSH uživatel, jehož účtem se přihlašujete, neovlivní revize, které jste nahráli.
Dalším možným způsobem je nechat ověřovat SSH přístupy LDAP serveru nebo jinému centralizovanému zdroji ověření, který už možná máte nastavený. Dokud má každý uživatel shellový přístup k danému počítači, měly by fungovat všechny autentizační mechanismy SSH, které vás jen napadnou.