-
1. Početak
- 1.1 O kontroli verzije
- 1.2 Kratka istorija Gita
- 1.3 Osnove Gita
- 1.4 Komandna linija
- 1.5 Instaliranje Gita
- 1.6 Podešavanja za prvi put
- 1.7 Traženje pomoći
- 1.8 Rezime
-
2. Osnove Gita
- 2.1 Pravljenje Git repozitorijuma
- 2.2 Snimanje promena na repozitorijumu
- 2.3 Pregled istorije komitova
- 2.4 Opovrgavanje
- 2.5 Rad sa udaljenim repozitorijumima
- 2.6 Tagovanje
- 2.7 Alijasi
- 2.8 Rezime
-
3. Grananje u Gitu
- 3.1 Grananje ukratko
- 3.2 Osnove grananja i spajanja
- 3.3 Upravljanje granama
- 3.4 Tokovi rada sa grananjem
- 3.5 Udaljene grane
- 3.6 Rebaziranje
- 3.7 Rezime
-
4. Git on the Server
- 4.1 Protokoli
- 4.2 Postavljanje Gita na server
- 4.3 Generisanje javnog SSH ključa
- 4.4 Podešavanje servera
- 4.5 Git Daemon
- 4.6 Pametan HTTP
- 4.7 GitWeb
- 4.8 Opcije za hostovanje koje nude treća lica
- 4.9 Rezime
-
5. Distribuirani Git
- 5.1 Distribuirani tokovi rada
- 5.2 Kako doprineti projektu
- 5.3 Održavanje projekta
- 5.4 Rezime
-
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 Debugging with Git
- 7.11 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Summary
-
8. Prilagođavanje Gita
- 8.1 Konfiguracija Gita
- 8.2 Git atributi
- 8.3 Git hukovi
- 8.4 Primer polise sprovedene od strane Gita
- 8.5 Rezime
-
9. Git i ostali sistemi
- 9.1 Git kao klijent
- 9.2 Migriranje na Git
- 9.3 Rezime
-
10. Git iznutra
- 10.1 Vodovod i porcelan
- 10.2 Git objekti
- 10.3 Git reference
- 10.4 Paketoteke
- 10.5 Refspek
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Summary
-
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 Summary
-
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 on the Server - Postavljanje Gita na server
Postavljanje Gita na server
Sada ćemo pokriti podešavaje Git servisa i pokretanje ovih servisa na vašem sopstvenom serveru.
Note
|
Ovde ćemo demonstrirati komande i korake neophodne radi osnovne, pojednostavljene instalacije na serveru baziranom na Linuksu, mada je moguće pokenuti ove servise i na Mekovim ili Vindouzovim serverima. Zapravo, postavljanje produkcionog servera u sa vašom vlastitom infrastrukturom će nesumnjivo imati razlike po pitanju sigurnosti i alataima koje pruža operativni sistem, ali nadamo se da će vam ovo dati opštu sliku o tome šta treba uraditi. |
Kako biste inicijalno postavili bilo koji Git server, morate prvo da eksportujete postojeći repozitoijum u go repozitorijum — repozitoijum koji ne sadrži radni direktorijum.
Ovo je obično jednostavno uraditi.
Da biste klonirali svoj repozitorijum i napravili novi go repozitorijum, možete da pokrenete komandu clone
uz opciju --bare
.
Po konvenciji, goli repozitorijumi se završavaju sa .git
, na primer:
$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.
Sada bi trebalo da imate kopiju podataka iz Git direktorijuma u direktorijumu my_project.git
.
Grubo rečeno, ovo je ekvivalentno sa sledećim.
$ cp -Rf my_project/.git my_project.git
Postoji nekoliko malih razlika u konfiguracionom fajlu; ali za ovu svrhu, u pitanju je dovoljno približna alternativa. Ova komanda uzima sâm Git repozitojum, bez radnom direktorijuma, i kreira direktorijum namenjn posebno njemu.
Postavljanje golog repozitorijuma na server
Sada kada imate golu kopiju repozitorijuma, sve što treba da uradite jeste da je okačite na server i postavite protokole.
ecimo da ste postavili server git.example.com
kome imate SSH pristup, i želite da uskladištite sve svoje Git repozitorijume pod direktorijum /srv/git
.
Pod pretpostavkom da /srv/git
postoji na tom serveru, možete da podesite novi repozitorijum tako što ćete tamo iskopirati svoj goli repozitorijum:
$ scp -r my_project.git user@git.example.com:/srv/git
Sada i drugi korisnici koji imaju SSH pristup istom serveru i pristup za čitanje direktorijuma /srv/git
mogu da kloniraju vaš repozitorijum pokretanjem
$ git clone user@git.example.com:/srv/git/my_project.git
Ako korisnik SSH-uje do servera i ima pristup pisanja direktorijumu /srv/git/my_project.git
, automatski će imati i privilegiju da guraju izmene.
Git će automatski dodati grupne dozvole za upis u repozitorijum ako pokrenete komandu git init
suz opciju --shared
.
$ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --shared
Vidite koliko je jednostavno uzeti Git repozitorijum, kreirati njegovu golu verziju, i postaviti je na server kome vi i vaši kolaboratori imaju SSH pristup. Sada ste spremni za kolaboraciju nad istim projektom.
Važno je da primetiti da je ovo buvkalno sve što treba da uradite da pokrenete koristan Git server kome nekoliko ljudi ima pristup — samo dodajte naloge koji podržavaju SSH na server i postavite goli repozitorijum negde gde svi ti korisnicima imaju pristup za čitanje i upis. Spremni ste da krenete — ništa više vam nije potrebno.
U sledećih nekoliko odeljaka, videćete kako da načinete neka sofisticiranija podešavanja. Ova diskusija će uključiti i to da ne morate da kreirate korisničke naloge za svakog korisnika, zatim dodavanje javnog pristupa za čitanje repozitorijumima, podešavanje veb korisničkih interfejsa i još toga. Ipak, imajte na umu da za kolaboraciju sa nekoliko ljudi na privatnom projektu, sve što vam je potrebno je SSH server i goli repozitorijum.
Mala podešavanja
Ako ste mala grupa ljudi ili jednostavno isprobavate Git za svoju organizaciju i imate samo nekoliko developera, stvari mogu biti dosta jednsotavne za vas. Jedan od najkomplikovanihih aspekata podešavanja Git servera je upravljanje korisnicima. Ako želite da neki repozitorijumi budu dostupni samo za čitanje, a drugima i za čitanje i za upis, pristup i permisije mogu biti nešto komplikovanije za podešavanje.
SSH pristup
Ako imate server kome svi developeri već imaju SSh pristup, u opštem slučaju je najjednostavnije tamo pdoesiti prvi repozitorijum, jer skoro ništa dodatno ne treba da uradite (kao što smo videli u prethodnom odeljku). Ako želite složeniju kontrolu pristupa nad repozitorijumima, možete pristupiti tom problemu koristeći uobičajene permisije za sistem datoteka koji ima oeprativni sistem koji je podignut na vašem serveru.
Ako želite da postavite svoje repozitorijume na server koji nema naloge za svaku osobuiz time kojoj želite da dodelite privilegije pisanja, morate podesiti SSH za svakog od njih. Pretpostavljamo da ako želite server kojim ovo možete ostvariti, već imate instaliran SSH i da tako pristupate serveru.
Ima nekoliko načina na koje možete svima iz tima dozvoliti pristup.
Prvi je da podesite naloge za svakoga, što je jednostavno ali može biti zamorno.
Možda ne želite da pokrećete adduser
i da podesite privremenu šifru za svakog korisnika.
Druga metoda je da kreirate jedistvenog korisnika "git" namašini i da pitate svakog korisnika ko ima pristup za upis na server da vam pošalje svoj javni SSH ključ, i da dodate taj ključ u fajl ~/.ssh/authorized_keys
novog korisnika "git".
Sada svi mogu da pristupe mašini kroz korisnika "git".
Ovo ni na koji način ne utiče na komitovane podatke — SSh korisnice koje povezujete ne utiču na komitove koje beležite.
Drugi način da uradite ovo jeste da podesite stvari tako da se vaš SSh server autentifikuje pomoću LDAP servera ili nekog drugog centralizovanog izvora autentifikacije kog ste već pokrenuli. Sve dok svaki korisnik ima pristup mašini preko šela, bilo koji mehanizam za autentifikaciju preko SSH-a treba da uspe.