Popravki 1. del (Sašo)
This commit is contained in:
parent
ae940094c1
commit
a455b4512e
2 changed files with 37 additions and 32 deletions
|
|
@ -34,8 +34,8 @@
|
|||
tudi pri pisanju besedil v \LaTeX-u. Poleg tega, da Git hrani
|
||||
zgodovino sprememb, tudi olajša združevanje sprememb, ko več ljudi hkrati
|
||||
ureja iste datoteke. Ogledali si bomo, kako Git deluje. Opisali bomo,
|
||||
kako Git uporabi \emph{zgoščevalne funkcije}, \emph{Merklejeva drevesa}
|
||||
in \emph{usmerjene aciklične grafe}, da shrani zgodovino različic in
|
||||
kako Git uporabi zgoščevalne funkcije, Merklejeva drevesa
|
||||
in usmerjene aciklične grafe, da shrani zgodovino različic in
|
||||
olajša hkratno urejanje vsebine. Matematični model, ki ga Git uporablja,
|
||||
je v resnici zelo preprost in njegovo razumevanje nas lahko reši
|
||||
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
|
||||
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
|
||||
how Git works. We will describe how Git uses \emph{hash functions}, \emph{Merkle trees},
|
||||
and \emph{directed acyclic graphs} to store version history and facilitate concurrent
|
||||
how Git works. We will describe how Git uses hash functions, Merkle trees,
|
||||
and directed acyclic graphs to store version history and facilitate concurrent
|
||||
content editing. The mathematical model used by Git is actually very simple, and
|
||||
understanding it can save us many headaches during its use.
|
||||
\end{abstract}
|
||||
|
|
@ -63,28 +63,28 @@
|
|||
|
||||
\section{Kaj je Git?}
|
||||
|
||||
\href{https://git-scm.com/}{Git} je kot \emph{časovni stroj} za
|
||||
datoteke. Uporabniku omogoča, da vidi \emph{pretekle različice}
|
||||
\href{https://git-scm.com/}{Git}\cite{git_software} je kot časovni stroj za
|
||||
datoteke. Uporabniku omogoča, da vidi pretekle različice
|
||||
datotek, spreminja datoteke, brez skrbi, da bi kaj pokvaril in
|
||||
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
|
||||
kasneje spremembe združi.
|
||||
|
||||
Git hrani vsebino mape z datotekami in celotno zgodovino različic
|
||||
datotek iz preteklosti. Za vsako različico hrani Git zapis o avtorju,
|
||||
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.
|
||||
|
||||
Sisteme, ki omogočajo hranjenje preteklih različic datotek, imenujemo
|
||||
\href{https://en.wikipedia.org/wiki/Version_control}{sistemi za nadzor
|
||||
različic} (angl. version control system (VCS)) ali \emph{sistemi za
|
||||
%\href{https://en.wikipedia.org/wiki/Version_control}
|
||||
\emph{sistemi za nadzor različic} (angl. version control system (VCS)) ali \emph{sistemi za
|
||||
upravljanje z izvorno kodo} (angl. Source Code Management (SCM)).
|
||||
Poleg nadzora različic Git omogoča hkratno spreminjanje datotek več
|
||||
uporabnikov na različnih računalnikih. Zato je Git
|
||||
\href{https://en.wikipedia.org/wiki/Distributed_version_control}{distribuiran
|
||||
sistem za nadzor različic} (angl. Distributed Version Control System
|
||||
%\href{https://en.wikipedia.org/wiki/Distributed_version_control}
|
||||
\emph{distribuiran sistem za nadzor različic} (angl. Distributed Version Control System
|
||||
(DVCS)).
|
||||
|
||||
\begin{opomba}
|
||||
|
|
@ -96,13 +96,14 @@ sistem za nadzor različic} (angl. Distributed Version Control System
|
|||
\end{opomba}
|
||||
|
||||
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
|
||||
\href{https://en.wikipedia.org/wiki/Merkle_tree}{Merklejevih dreves}
|
||||
za hranjenje posnetkov vsebine mape. Kako zgodovino sprememb predstavimo z
|
||||
\href{https://en.wikipedia.org/wiki/Directed_acyclic_graph}{usmerjenim
|
||||
acikličnim grafom}, v katerem so vozlišča različice, povezave pa
|
||||
povežejo različice z njihovimi neposrednimi predhodniki in
|
||||
%\href{https://en.wikipedia.org/wiki/Merkle_tree}
|
||||
\emph{Merklejevih dreves} za hranjenje posnetkov vsebine mape. Zgodovino sprememb bomo predstavili z
|
||||
%\href{https://en.wikipedia.org/wiki/Directed_acyclic_graph}
|
||||
\emph{usmerjenim grafom}, v katerem so vozlišča različice, povezave pa
|
||||
povežejo različice z njihovimi neposrednimi predhodniki. Spoznali bomo,
|
||||
kako preproste reference (kazalci) na vsebino
|
||||
omogočajo bliskovito preklaplanje med različicami in preprečijo
|
||||
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
|
||||
drevesna struktura korenske mape, ki jo hranimo v repozitoriju,
|
||||
\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,
|
||||
\item
|
||||
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
|
||||
bližje enakomerni porazdelitvi. To pomeni, da so vse vrednosti \(H(b)\)
|
||||
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
|
||||
določen z njegovo zgostitvijo \(H(b)\).
|
||||
Git uporablja \(160\) bitno zgoščevalno funkcijo \emph{SHA1}, ki se je
|
||||
uporabljala v kriptografiji\footnote{Leta 2017 so raziskovalci iz CWI
|
||||
Git uporablja \(160\) bitno zgoščevalno funkcijo \emph{SHA1}, ki se jo
|
||||
uporablja v kriptografiji\footnote{Leta 2017 so raziskovalci iz CWI
|
||||
Amsterdam in Google Research našli prvi praktični primer dveh
|
||||
različnih pdf datotek, ki imata isto SHA1
|
||||
zgostitev\cite{stevens_first_2017}. Opisan napad so poimenovali
|
||||
|
|
@ -481,8 +482,10 @@ Opremljeni z razumevanjem podatkovnega modela Gita, lažje razumemo
|
|||
posamezne operacije, ki jih Git omogoča. Ukazov ne bom
|
||||
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}
|
||||
git checkout referenca
|
||||
git checkout referenca
|
||||
\end{verbatim}
|
||||
spremeni datoteke v delovni kopiji tako, da se ujemajo z vnosom, na
|
||||
katerega kaže \texttt{referenca}. Poleg tega prestavi oznako \texttt{HEAD} na
|
||||
|
|
@ -491,25 +494,19 @@ referenca oznaka ali zgostitev vnosa, priedmo v stanje brez aktivne veje
|
|||
(angl. \emph{deteached HEAD}).
|
||||
|
||||
\begin{verbatim}
|
||||
git commit -m "Sporočilo za vnos"
|
||||
git commit -m "Sporočilo za vnos"
|
||||
\end{verbatim}
|
||||
ustvari nov vnos, ki kaže na stanje v čakalnici (angl. staging area ali
|
||||
index). V zgodovinskem grafu ustvari novo vozlišče, ki je povezano s
|
||||
prejšnjim vnosom. Poleg tega prestavi aktivno vejo in oznako
|
||||
\texttt{HEAD} na novo ustvarjeni vnos.
|
||||
|
||||
\begin{verbatim}
|
||||
git add bla.txt
|
||||
\end{verbatim}
|
||||
doda vsebino spremenjene datoteke \texttt{bla.txt} v čakalnico. Ukaz ne
|
||||
\texttt{git add bla.txt} - doda vsebino spremenjene datoteke \texttt{bla.txt} v čakalnico. Ukaz ne
|
||||
spreminja zgodovinskega grafa, pač pa doda novo vsebino in datotečna
|
||||
drevesa, ki vsebujejo spremembe v shrambo objektov. Vsebina čakalnice bo
|
||||
zabeležena v naslednjem vnosu.
|
||||
|
||||
\begin{verbatim}
|
||||
git pull
|
||||
\end{verbatim}
|
||||
pobere vsebino (objekte in reference) iz oddaljenega repozitorija in
|
||||
\texttt{git pull} - pobere vsebino (objekte in reference) iz oddaljenega repozitorija in
|
||||
uskladi lokalno vejo z oddaljeno. Shrambi objektov se preprosto doda
|
||||
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
|
||||
|
|
|
|||
|
|
@ -68,3 +68,11 @@
|
|||
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},
|
||||
}
|
||||
@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},
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue