Popravki 1. del (Sašo)

This commit is contained in:
Martin Vuk 2026-02-14 23:06:46 +01:00
parent ae940094c1
commit a455b4512e
2 changed files with 37 additions and 32 deletions

View file

@ -34,8 +34,8 @@
tudi pri pisanju besedil v \LaTeX-u. Poleg tega, da Git hrani tudi pri pisanju besedil v \LaTeX-u. Poleg tega, da Git hrani
zgodovino sprememb, tudi olajša združevanje sprememb, ko več ljudi hkrati zgodovino sprememb, tudi olajša združevanje sprememb, ko več ljudi hkrati
ureja iste datoteke. Ogledali si bomo, kako Git deluje. Opisali bomo, ureja iste datoteke. Ogledali si bomo, kako Git deluje. Opisali bomo,
kako Git uporabi \emph{zgoščevalne funkcije}, \emph{Merklejeva drevesa} kako Git uporabi zgoščevalne funkcije, Merklejeva drevesa
in \emph{usmerjene aciklične grafe}, da shrani zgodovino različic in in usmerjene aciklične grafe, da shrani zgodovino različic in
olajša hkratno urejanje vsebine. Matematični model, ki ga Git uporablja, olajša hkratno urejanje vsebine. Matematični model, ki ga Git uporablja,
je v resnici zelo preprost in njegovo razumevanje nas lahko reši je v resnici zelo preprost in njegovo razumevanje nas lahko reši
marsikatere zagate, ki nastane med njegovo uporabo. marsikatere zagate, ki nastane med njegovo uporabo.
@ -47,8 +47,8 @@
It is mainly used for source code management in software development. However, many of us It is mainly used for source code management in software development. However, many of us
also use it for writing texts in \LaTeX. Besides tracking history, Git facilitates also use it for writing texts in \LaTeX. Besides tracking history, Git facilitates
merging changes when multiple people edit the same files simultaneously. We will look at merging changes when multiple people edit the same files simultaneously. We will look at
how Git works. We will describe how Git uses \emph{hash functions}, \emph{Merkle trees}, how Git works. We will describe how Git uses hash functions, Merkle trees,
and \emph{directed acyclic graphs} to store version history and facilitate concurrent and directed acyclic graphs to store version history and facilitate concurrent
content editing. The mathematical model used by Git is actually very simple, and content editing. The mathematical model used by Git is actually very simple, and
understanding it can save us many headaches during its use. understanding it can save us many headaches during its use.
\end{abstract} \end{abstract}
@ -63,28 +63,28 @@
\section{Kaj je Git?} \section{Kaj je Git?}
\href{https://git-scm.com/}{Git} je kot \emph{časovni stroj} za \href{https://git-scm.com/}{Git}\cite{git_software} je kot časovni stroj za
datoteke. Uporabniku omogoča, da vidi \emph{pretekle različice} datoteke. Uporabniku omogoča, da vidi pretekle različice
datotek, spreminja datoteke, brez skrbi, da bi kaj pokvaril in datotek, spreminja datoteke, brez skrbi, da bi kaj pokvaril in
jih deli z drugimi. Poleg časovnega stroja je Git jih deli z drugimi. Poleg časovnega stroja je Git
tudi \emph{razpršeno skladišče datotek}. Omogoča, da datoteke tudi razpršeno skladišče datotek. Omogoča, da datoteke
hkrati ureja več uporabnikov na različnih računalnikih in hkrati ureja več uporabnikov na različnih računalnikih in
kasneje spremembe združi. kasneje spremembe združi.
Git hrani vsebino mape z datotekami in celotno zgodovino različic Git hrani vsebino mape z datotekami in celotno zgodovino različic
datotek iz preteklosti. Za vsako različico hrani Git zapis o avtorju, datotek iz preteklosti. Za vsako različico hrani Git zapis o avtorju,
datumu in opis sprememb, ki so nastale v primerjavi s predhodno datumu in opis sprememb, ki so nastale v primerjavi s predhodno
različico. Vse te imformacije dajejo podroben pregled nad zgodovino različico. Vse te informacije dajejo podroben pregled nad zgodovino
sprememb. sprememb.
Sisteme, ki omogočajo hranjenje preteklih različic datotek, imenujemo Sisteme, ki omogočajo hranjenje preteklih različic datotek, imenujemo
\href{https://en.wikipedia.org/wiki/Version_control}{sistemi za nadzor %\href{https://en.wikipedia.org/wiki/Version_control}
različic} (angl. version control system (VCS)) ali \emph{sistemi za \emph{sistemi za nadzor različic} (angl. version control system (VCS)) ali \emph{sistemi za
upravljanje z izvorno kodo} (angl. Source Code Management (SCM)). upravljanje z izvorno kodo} (angl. Source Code Management (SCM)).
Poleg nadzora različic Git omogoča hkratno spreminjanje datotek več Poleg nadzora različic Git omogoča hkratno spreminjanje datotek več
uporabnikov na različnih računalnikih. Zato je Git uporabnikov na različnih računalnikih. Zato je Git
\href{https://en.wikipedia.org/wiki/Distributed_version_control}{distribuiran %\href{https://en.wikipedia.org/wiki/Distributed_version_control}
sistem za nadzor različic} (angl. Distributed Version Control System \emph{distribuiran sistem za nadzor različic} (angl. Distributed Version Control System
(DVCS)). (DVCS)).
\begin{opomba} \begin{opomba}
@ -96,13 +96,14 @@ sistem za nadzor različic} (angl. Distributed Version Control System
\end{opomba} \end{opomba}
V nadaljevanju si bomo ogledali, kako Git uporablja V nadaljevanju si bomo ogledali, kako Git uporablja
\href{https://sl.wikipedia.org/wiki/Zgo\%C5\%A1\%C4\%8Devalna_funkcija}{zgoščevalno funkcijo} %\href{https://sl.wikipedia.org/wiki/Zgo\%C5\%A1\%C4\%8Devalna_funkcija}
\emph{zgoščevalno funkcijo}
(angl. hash function) in posplošitev (angl. hash function) in posplošitev
\href{https://en.wikipedia.org/wiki/Merkle_tree}{Merklejevih dreves} %\href{https://en.wikipedia.org/wiki/Merkle_tree}
za hranjenje posnetkov vsebine mape. Kako zgodovino sprememb predstavimo z \emph{Merklejevih dreves} za hranjenje posnetkov vsebine mape. Zgodovino sprememb bomo predstavili z
\href{https://en.wikipedia.org/wiki/Directed_acyclic_graph}{usmerjenim %\href{https://en.wikipedia.org/wiki/Directed_acyclic_graph}
acikličnim grafom}, v katerem so vozlišča različice, povezave pa \emph{usmerjenim grafom}, v katerem so vozlišča različice, povezave pa
povežejo različice z njihovimi neposrednimi predhodniki in povežejo različice z njihovimi neposrednimi predhodniki. Spoznali bomo,
kako preproste reference (kazalci) na vsebino kako preproste reference (kazalci) na vsebino
omogočajo bliskovito preklaplanje med različicami in preprečijo omogočajo bliskovito preklaplanje med različicami in preprečijo
popolno zmešnjavo, ko več ljudi hkrati spreminja iste datoteke? popolno zmešnjavo, ko več ljudi hkrati spreminja iste datoteke?
@ -119,7 +120,7 @@ Ko ustvarimo nov Git repozitorij, Git ustvari podmapo z imenom
\item \item
drevesna struktura korenske mape, ki jo hranimo v repozitoriju, drevesna struktura korenske mape, ki jo hranimo v repozitoriju,
\item \item
posnetki stanja v različnih trenutkih s podatki o avtoju, datumu in posnetki stanja v različnih trenutkih s podatki o avtorju, datumu in
opisu sprememb, opisu sprememb,
\item \item
kazalci na posamezne posnetke stanja. kazalci na posamezne posnetke stanja.
@ -152,11 +153,11 @@ izbrana tako, da sprememba enega samega bita v besedilu \(b \in B\)
spremeni vrednost \(H(b)\) in je porazdelitev vrednosti \(H(b)\) čim spremeni vrednost \(H(b)\) in je porazdelitev vrednosti \(H(b)\) čim
bližje enakomerni porazdelitvi. To pomeni, da so vse vrednosti \(H(b)\) bližje enakomerni porazdelitvi. To pomeni, da so vse vrednosti \(H(b)\)
približno enako verjetne. Na ta način zmanjšamo verjetnost trka približno enako verjetne. Na ta način zmanjšamo verjetnost trka
(glej poglavje \ref{sec_trk}). Verjetnost trka (glej razdelek \ref{sec_trk}). Verjetnost trka
je izjemno majhna, zato Git lahko predpostavi, da je niz \(b\) enolično je izjemno majhna, zato Git lahko predpostavi, da je niz \(b\) enolično
določen z njegovo zgostitvijo \(H(b)\). določen z njegovo zgostitvijo \(H(b)\).
Git uporablja \(160\) bitno zgoščevalno funkcijo \emph{SHA1}, ki se je Git uporablja \(160\) bitno zgoščevalno funkcijo \emph{SHA1}, ki se jo
uporabljala v kriptografiji\footnote{Leta 2017 so raziskovalci iz CWI uporablja v kriptografiji\footnote{Leta 2017 so raziskovalci iz CWI
Amsterdam in Google Research našli prvi praktični primer dveh Amsterdam in Google Research našli prvi praktični primer dveh
različnih pdf datotek, ki imata isto SHA1 različnih pdf datotek, ki imata isto SHA1
zgostitev\cite{stevens_first_2017}. Opisan napad so poimenovali zgostitev\cite{stevens_first_2017}. Opisan napad so poimenovali
@ -481,6 +482,8 @@ Opremljeni z razumevanjem podatkovnega modela Gita, lažje razumemo
posamezne operacije, ki jih Git omogoča. Ukazov ne bom posamezne operacije, ki jih Git omogoča. Ukazov ne bom
prevajal, ampak jih bom navedel kot jih pozna program \texttt{git}. prevajal, ampak jih bom navedel kot jih pozna program \texttt{git}.
\texttt{git status} - preveri, če je prišlo do kakšne spremembe od zadnjeag vnosa in prikaže datoteke, ki so se spremenile.
\begin{verbatim} \begin{verbatim}
git checkout referenca git checkout referenca
\end{verbatim} \end{verbatim}
@ -498,18 +501,12 @@ index). V zgodovinskem grafu ustvari novo vozlišče, ki je povezano s
prejšnjim vnosom. Poleg tega prestavi aktivno vejo in oznako prejšnjim vnosom. Poleg tega prestavi aktivno vejo in oznako
\texttt{HEAD} na novo ustvarjeni vnos. \texttt{HEAD} na novo ustvarjeni vnos.
\begin{verbatim} \texttt{git add bla.txt} - doda vsebino spremenjene datoteke \texttt{bla.txt} v čakalnico. Ukaz ne
git add bla.txt
\end{verbatim}
doda vsebino spremenjene datoteke \texttt{bla.txt} v čakalnico. Ukaz ne
spreminja zgodovinskega grafa, pač pa doda novo vsebino in datotečna spreminja zgodovinskega grafa, pač pa doda novo vsebino in datotečna
drevesa, ki vsebujejo spremembe v shrambo objektov. Vsebina čakalnice bo drevesa, ki vsebujejo spremembe v shrambo objektov. Vsebina čakalnice bo
zabeležena v naslednjem vnosu. zabeležena v naslednjem vnosu.
\begin{verbatim} \texttt{git pull} - pobere vsebino (objekte in reference) iz oddaljenega repozitorija in
git pull
\end{verbatim}
pobere vsebino (objekte in reference) iz oddaljenega repozitorija in
uskladi lokalno vejo z oddaljeno. Shrambi objektov se preprosto doda uskladi lokalno vejo z oddaljeno. Shrambi objektov se preprosto doda
nove objekte, ki so v oddaljeni veji. Če je lokalna veja prednik nove objekte, ki so v oddaljeni veji. Če je lokalna veja prednik
oddaljene, se lokalna veja enostavno prestavi, da kaže na isti vnos, kot oddaljene, se lokalna veja enostavno prestavi, da kaže na isti vnos, kot

View file

@ -68,3 +68,11 @@
pages = {369--378}, pages = {369--378},
file = {Full Text PDF:C\:\\Users\\marti\\Zotero\\storage\\9CPCST7H\\Merkle - 1988 - A Digital Signature Based on a Conventional Encryption Function.pdf:application/pdf}, file = {Full Text PDF:C\:\\Users\\marti\\Zotero\\storage\\9CPCST7H\\Merkle - 1988 - A Digital Signature Based on a Conventional Encryption Function.pdf:application/pdf},
} }
@software{git_software,
author = {Linus Torvalds and Junio C Hamano and others},
title = {Git},
url = {https://git-scm.com/},
urldate = {2026-02-14},
version = {2.48.1},
year = {2026},
}