forked from tkrajina/uvod-u-git
-
Notifications
You must be signed in to change notification settings - Fork 0
/
uvod.tex
executable file
·95 lines (70 loc) · 6.39 KB
/
uvod.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
\chapter*{Uvod}
\addcontentsline{toc}{chapter}{Uvod}
Git je alat koji je razvio Linus Torvalds da bi mu olakšao vođenje jednog velikog i kompleksnog projekta -- Linux kernela.
U početku to \textbf{nije} bio program s današnjom namjenom; Linus je zamislio da git bude osnova \textbf{drugim sustavima za razvijanje koda}.
Drugi alati su trebali razvijati svoje sučelje na osnovu gita.
Tako je, barem, bilo zamišljeno.
Međutim, kao s mnogim drugim projektima otvorenog koda, ljudi su ga počeli koristiti takvog kakav jest, a on je organski rastao sa zahtjevima korisnika.
Rezultat je program koji ima drukčiju terminologiju u odnosu na druge slične, ali milijuni programera diljem svijeta su ga prihvatili.
Nastale su brojne platforme za \emph{hosting} projekata, kao što je Github\footnote{http://github.com}, a već postojeći su morali dodati git jednostavno zato što su to njihovi korisnici tražili (Google Code\footnote{http://code.google.com}, Bitbucket\footnote{http://bitbucket.com}, Sourceforge\footnote{http://sourceforge.net}, pa čak i Microsoftov CodePlex\footnote{http://www.codeplex.com}).
Nekoliko je razloga zašto je to tako:
\begin{itemize}
\item Postojeći sustavi za verzioniranje su zahtijevali da se točno zna tko sudjeluje u projektu (tj. tko je \emph{comitter}). %
To je demotiviralo ljude koji bi možda pokušali pomoći projektima kad bi imali priliku. %
S distribuiranim sustavima bilo tko može "\emph{fork}ati" repozitorij i raditi na njemu. %
Ukoliko misli da je napravio nešto korisno -- vlasniku originalnog repozitorija bi predložio da preuzme njegove izmjene. %
Broj ljudi koji se mogu okušati u radu na nekom projektu je tako puno veći, a vlasnik i dalje zadržava pravo odlučivanja čije će izmjene uzeti, a čije neće.
\item git je \textbf{brz},
\item vrlo je lako i brzo granati, isprobavati izmjene koje su radili drugi ljudi i preuzeti ih u svoj kod,
\item Linux kernel se razvijao na gitu, tako da je u svijetu otvorenog koda (\emph{open source}) git stekao nekakvu auru važnosti.
\end{itemize}
U nastavku ove knjige pozabavit ćemo se osnovnim pojmovima verzioniranja koda općenito i načinom kako je sve to implementirano u gitu.
\section*{O težini, teškoćama i problemima}
\addcontentsline{toc}{section}{O težini, teškoćama i problemima}
Ova knjiga nije zamišljena kao općeniti priručnik u kojem ćete tražiti rješenje svaki put kad negdje zapnete.
Osnovna ideja mi je bila da za svaku "radnju" s gitom opišem problem, ilustriram ga grafikonom, malo razradim teoriju, potkrijepim primjerima i onda opišem nekoliko osnovnih git naredbi.
Nakon što pročitate knjigu, trebali biste biti sposobni koristiti git u svakodnevnom radu.
Tekst koji slijedi zahtijeva koncentraciju i vježbanje, posebno ako niste nikad radili s nekim od distribuiranih sustava za verzioniranje.
Trebate naučiti terminologiju, naredbe i osnovne koncepte, ali -- isplati se.
Zapnete li, a odgovora ne nađete ovdje, pravac Stackoverflow\footnote{http://stackoverflow.com}, Google,
forumi, blogovi i, naravno, \verb+git help+.
Postoji i jednostavan način kako da postignete da čitanje ove knjige postane trivijalno jednostavno -- čitanje napreskokce.
Git, naime, \textbf{možete} koristiti analogno klasičnim sustavima za verzioniranje.
U tom slučaju vam ne trebaju detalji o tome kako se grana ili što je \emph{rebase}.
U principu -- svi smo git tako i koristili u početku.
Želite li takav "ekspresni" uvod u git -- dovoljno je da pročitate poglavlja o verzioniranju, \emph{commit}anju i prvi dio poglavlja o udaljenim repozitorijima.
Pojmovi koje biste trebali savladati su \emph{commit}, \emph{push}, \emph{fetch}, konflikt i \verb+origin+ repozitorij.
Izgubite li se u šumi novih pojmova -- na kraju knjige imate pregled svih git-specifičnih termina s kratkim objašnjenjem.
\section*{Pretpostavke}
\addcontentsline{toc}{section}{Pretpostavke}
Da biste uredno "probavili" ovaj knjižuljak, pretpostavljam da:
\begin{itemize}
\item znate programirati u nekom programskom jeziku ili barem imate dobru predodžbu o tome kako teče proces nastajanja i razvoja aplikacija,
\item ne bojite se komandne linije,
\item poznajete osnove rada s unixoidnim operacijskim sustavima.
\end{itemize}
Poznavanje rada s klasičnim sustavima za verzioniranje koda (CVS, SVN, TFS, \dots) nije nužno.
Nekoliko riječi o zadnje dvije stavke.
Iako git nije nužno ograničen na Unix/Linux operacijske sustave, njegovo komandnolinijsko sučelje je tamo nastalo i drži se istih principa.
Problem je što je mnoge složenije stvari teško uopće implementirati u nekom grafičkom sučelju.
Moj prijedlog je da git naučite koristiti u komandnoj liniji, a tek onda krenete s nekim grafičkim alatom -- tek tako ćete ga zaista savladati.
\section*{Našla/našao sam grešku}
\addcontentsline{toc}{section}{Našla/našao sam grešku}
Svjestan sam toga da ova knjižica vrvi greškama.
Ja nisam profesionalan pisac, a ova knjiga nije prošla kroz ruke profesionalnog lektora.
Grešaka ima i pomalo ih ispravljam.
Ako želite pomoći -- unaprijed sam zahvalan!
Evo nekoliko načina kako to možete učniti:
\begin{itemize}
\item Pošaljite email na \[email protected]+,
\item \emph{Twitt}nite mi na \verb+@puzz+,
\item \emph{Fork}ajte i pošaljite \emph{pull request} s ispravkom.
\end{itemize}
Ukoliko odaberete bilo koju varijantu osim zadnje (\emph{fork}) -- dovoljan je kratak opis s greškom (stranica, rečenica, redak) i šifra koja se nalazi na dnu naslovnice\footnote{Na primjer ono što piše \emph{Commit} b5af8ec79a7384a5a291d15d050fc932eb474e79. Ovaj nerazumljivi dugi string mi značajno olakšava traženje verzije za koju prijavljujete grešku.}.
Repozitorij s izvornim \LaTeX{} kodom knjige možete naći na adresi \\\url{http://github.com/tkrajina/uvod-u-git}
a na istoj adresi se nalazi i najnovija verzija PDF-a.
\section*{Naredbe i operacijski sustavi}
\addcontentsline{toc}{section}{Naredbe i operacijski sustavi}
Sve naredbe koje nisu specifične za git, kao na primjer "stvaranje novog direktorija", "ispis datoteka u direktoriju", i sl. će biti prema POSIX standardu\footnote{http://en.wikipedia.org/wiki/POSIX}.
Dakle, u primjerima ćemo koristiti naredbe koje se koriste na UNIX, OS X i Linux operacijskim sustavima.
Za korisnike Microsoft Windowsa to ne bi trebao biti problem jer se radi o relativno malom broju njih kao što su \verb+mkdir+ umjesto \verb+md+, \verb+ls+ umjesto \verb+dir+, i slično.