Skip to content

Commit 8de1c56

Browse files
committed
update improved git instructions, added more ssh key help
1 parent 7be9aaa commit 8de1c56

File tree

3 files changed

+86
-60
lines changed

3 files changed

+86
-60
lines changed

lab-instructions/dodlabs.tex

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ \subsection*{Riktlinjer för inlämningsuppgifter och laborationsuppgifter}
178178

179179
\newpage
180180
\section{Tips}
181+
\label{sec:tips}
181182

182183
Här samlas kort information och hjälp som kan vara användbar under laborationerna. Vid problem och frågor under laborationerna, kolla gärna om din fråga finns besvarad här.
183184

@@ -197,6 +198,31 @@ \subsection{Lab 2 --- Versionshantering med Git}
197198
Om du råkat öppna texteditorn \code{vim} (t.ex. genom att göra en git commit utan att ha ställt in en annan editor) kan du stänga den genom att trycka \code{:q} (kolon följt av \code{q}), sedan \code{Retur}. Om du redan provat annat kan du ha kommit in i något annat av Vim's editeringslägen. Tryck då först \code{Esc} för att gå tillbaka till det ``normala läget''.
198199
\item \texttt{Hur arbetar man med texteditorn nano?} \\
199200
nano är en terminalbaserat texteditor. Den körs alltså direkt i terminalen utan att öppna några nya fönster, vilket kan vara fördelaktigt ibland. I editorn kan du flytta markören med piltangenterna och skriva text som förväntat. I botten av terminalen visas också operationer som kan utföras och vilken knappkombination som ska tryckas. Där används tecknet \texttt{\^{}} (den lilla ``hatten'' vid sidan om \commandchar{return}) för att betyda Ctrl-knappen. Använd t.ex. \commandchar{control-o} för att spara (Write Out), \commandchar{control-x} för att avsluta eller \commandchar{control-g} för mer hjälp.
201+
\item \texttt{Hur ändrar jag min standardeditor för git?}\\
202+
Du kan ändra din standardeditor för git med kommandot:
203+
\begin{Code}
204+
git config --global core.editor nano
205+
\end{Code}
206+
där du kan byta ut \code{nano} mot valfri editor som är installerad på systemet, t.ex. \code{code --wait} (för Visual Studio Code). Notera att vissa editors, t.ex. \code{code}, kräver extra flaggor för att fungera bra med git.
207+
\item \texttt{Hur konfigurerar jag separata SSH-nycklar för olika tjänster?}\\
208+
Ur säkerhetssynpunkt är det bra att använda olika SSH-nycklar för olika tjänster, t.ex. en nyckel för GitHub och en annan för GitLab. Detta kan göras genom att skapa flera nyckelpar med \code{ssh-keygen} (använd default-namn, och döp sedan om filerna) och sedan konfigurera SSH-klienten att använda rätt nyckel för varje tjänst genom att redigera filen \file{\textasciitilde/.ssh/config}. Om \file{config}-filen inte finns kan du själv skapa den. Nedan är ett exempel på hur en sådan konfigurationsfil kan se ut, med olika nycklar för GitHub, GitLab och LTHs studentdatorer:
209+
\begin{lstlisting}{}
210+
Host github.com
211+
User git
212+
HostName github.com
213+
IdentityFile ~/.ssh/id_ed25519_github
214+
Host gitlab.com
215+
User git
216+
HostName gitlab.com
217+
IdentityFile ~/.ssh/id_ed25519_gitlab
218+
Host student.login.lth.se
219+
User xy1234zz-s
220+
HostName student.login.lth.se
221+
IdentityFile ~/.ssh/id_ed25519_student
222+
\end{lstlisting}
223+
Där \code{IdentityFile} anger sökvägen till den privata nyckeln som ska användas för respektive tjänst. Notera att filen \file{config} inte har någon filändelse och att den måste ha rätt behörigheter --- läs- och skrivbehörighet endast för användaren. Ändra t.ex. med \code{chmod 600 ~/.ssh/config}.
224+
225+
\textbf{Notera} att du också behöver logga in på respektive tjänst och lägga till den publika nyckeln i deras system.
200226
\end{itemize}
201227

202228
\subsection{Lab 3 --- \LaTeX}

lab-instructions/modules/git/git.tex

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ \subsection*{Datorarbete}
8181
\item Skriv följande i terminalen:\\
8282
\code{ssh-keygen -t ed25519 -C \textquotedblleft valfri kommentar\textquotedblright}
8383

84-
\item SSH ber dig att döpa filen, default-namnet går bra att använda, tryck Enter.
84+
\item SSH ber dig att döpa filen, default-namnet går bra att använda, tryck Enter.\\
85+
\emph{\textbf{Varning}: Om du väljer att döpa filen till något annat än default-namnet, så måste du inkludera sökvägen i namnet, för att den ska hamna på rätt plats, t.ex. \code{\textasciitilde/.ssh/min-nyckel}. Om du inte använder default-namnet måste du också konfigurera git att använda rätt nyckel. Se sidan med \emph{Tips} i början av dokumentet.}
8586
\item Ingen passphrase behövs i detta läge, tryck Enter två gånger
8687
\end{enumerate}
8788

@@ -132,11 +133,10 @@ \subsection*{Datorarbete}
132133
}
133134
\end{lstlisting}
134135

135-
Prova att kompilera och testköra programmet för att verifiera att det fungerar (\emph{OBS! Nedan instruktioner kan vara fel, gör så som du lärt dig i pgk-kursen!}):
136+
Prova att kompilera och testköra programmet för att verifiera att det fungerar (\emph{OBS! Nedan instruktioner kan vara fel, gör så som du lärt dig i prog-delen av kursen!}):
136137

137138
\begin{Code}
138-
scalac HelloWorld.scala
139-
scala HelloWorld
139+
scala HelloWorld.scala
140140
\end{Code}
141141

142142
Kontrollera innehållet i katalogen och statusen för projektet:

lectures/git/git.tex

Lines changed: 56 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
\begin{frame}
44
\frametitle{Vad är versionshantering?}
5-
5+
66
\begin{itemize}
77
\ii{Har du någonsin... }
88
\begin{itemize}
@@ -11,7 +11,7 @@
1111
\ii{Skrivit över en fil av misstag?}
1212
\ii{Behövt hålla koll på olika versioner av samma dokument?}
1313
\end{itemize}
14-
\ii{Versionshantering hjälper dig att lösa dessa problem!}
14+
\ii{Versionshantering hjälper dig att hantera dessa problem!}
1515
\end{itemize}
1616
\end{frame}
1717

@@ -34,12 +34,12 @@
3434
\ii{Möjlighet att återgå till äldre versioner av filer vid behov.}
3535
\ii{Möjliggör parallellt arbete och konflikthantering.}
3636
\end{itemize}
37-
37+
3838
\end{frame}
3939

4040
\begin{frame}
4141
\frametitle{Typer av versionshanteringssystem (1/2)}
42-
42+
4343
\begin{block}{Centraliserade system}
4444
\begin{itemize}
4545
\ii{En central server lagrar alla filer och versioner. (\emph{repository})}
@@ -48,7 +48,7 @@
4848
\ii{Exempel: Subversion (SVN), Perforce}
4949
\end{itemize}
5050
\end{block}
51-
51+
5252
\end{frame}
5353

5454
\begin{frame}
@@ -94,7 +94,7 @@
9494

9595
\blankline
9696
\ti{Testa: \code{git rev-list --max-parents=0 HEAD}}
97-
97+
9898
\end{frame}
9999

100100
\begin{frame}
@@ -113,7 +113,7 @@
113113
\ii{Använder Git internt för att hantera repositories, precis som lokala installationer av Git.}
114114
\end{itemize}
115115
\end{block}
116-
116+
117117
\end{frame}
118118

119119
\begin{frame}
@@ -127,23 +127,23 @@
127127
\di{git push}{Laddar upp dina lokala ändringar till ett fjärrrepository (t.ex. GitHub).}
128128
\di{git pull}{Hämtar och integrerar ändringar från ett fjärrrepository.}
129129
\end{description}
130-
130+
131131
\end{frame}
132132

133133

134134
\begin{frame}
135135
\frametitle{Git-modellen}
136-
136+
137137
\begin{itemize}
138138
\ii{\emph{Workspace}: En vanlig mapp på datorn där du jobbar med filer.}
139139
\ii{\emph{Staging Area}: En "kopia" av workspace där du förbereder ändringar inför nästa sparning.}
140140
\ii{\emph{Repository}: Ett arkiv som lagrar alla tidigare versioner av projektet.}
141141
\end{itemize}
142142

143143
\begin{center}
144-
\includegraphics[height=.5\textheight]{figs/model-add-commit.png}
144+
\includegraphics[height=.5\textheight]{figs/model-add-commit.png}
145145
\end{center}
146-
146+
147147
\end{frame}
148148

149149
\begin{frame}
@@ -163,22 +163,22 @@
163163
\begin{tikzpicture}
164164
% Draw the vertical line
165165
\draw[thick] (0, 0) -- (0, 3);
166-
166+
167167
% Draw the commit nodes
168168
\foreach \y in {0, 1, 2, 3} {
169-
\filldraw (0, \y) circle (3pt);
170-
}
171-
169+
\filldraw (0, \y) circle (3pt);
170+
}
171+
172172
% Label the commits
173173
\node[right, xshift=5pt] at (0, 3) {Commit 1};
174174
\node[right, xshift=5pt] at (0, 2) {Commit 2};
175175
\node[right, xshift=5pt] at (0, 1) {Commit 3};
176176
\node[right, xshift=5pt] at (0, 0) {Commit 4};
177177
\end{tikzpicture}
178-
178+
179179
\end{center}
180180
\end{minipage}
181-
181+
182182
\end{frame}
183183

184184
\begin{frame}
@@ -187,7 +187,7 @@
187187
\begin{minipage}{0.7\textwidth}
188188

189189
\ti{Man kan skapa parallella utvecklingsgrenar, som sedan kan slås samman (\emph{merge}) med huvudgrenen igen.}
190-
190+
191191
\begin{itemize}
192192
\ii{Varför vill man göra det?}
193193
\ii{Vilka problem kan uppstå?}
@@ -199,19 +199,19 @@
199199
% Rita huvudgrenen (main)
200200
\draw[thick] (0, 0) -- (0, 5);
201201
\foreach \y in {0, 1, 3, 4, 5} {
202-
\filldraw (0, \y) circle (3pt);
203-
}
202+
\filldraw (0, \y) circle (3pt);
203+
}
204204
\node[above, yshift=2pt] at (0, 5) {\emph{main}};
205-
205+
206206
% Rita parallellgrenen (branch)
207207
\draw[thick] (0, 4) -- (1, 3) -- (1, 2) -- (0, 1);
208208
\foreach \y in {2, 3} {
209-
\filldraw (1, \y) circle (3pt);
210-
}
209+
\filldraw (1, \y) circle (3pt);
210+
}
211211
\node[above, yshift=2pt, xshift=15pt] at (1, 3) {\emph{branch}};
212212
\end{tikzpicture}
213213
\end{minipage}
214-
214+
215215
\end{frame}
216216

217217
\begin{frame}
@@ -224,7 +224,7 @@
224224
\ii{Skapa snabb fix för fel utan att stoppa ny utveckling.}
225225
\ii{Branches i Git är lätta att skapa och använda!}
226226
\end{itemize}
227-
227+
228228
\end{frame}
229229

230230
\begin{frame}
@@ -237,7 +237,7 @@
237237
\ii{Exempel: Flera redigerar samma rad, eller ändrar/byter namn på samma filer.}
238238
\ii{Konflikter måste lösas manuellt för att slutföra en \emph{merge}.}
239239
\end{itemize}
240-
240+
241241
\end{frame}
242242

243243
\begin{frame}[fragile]
@@ -246,7 +246,7 @@
246246
\begin{block}{\small Kod före merge}
247247
\begin{GobbleCode}[0pt]{10}
248248
def greet(): String = {
249-
"Hello, world!"
249+
"Hello, world!"
250250
}
251251
\end{GobbleCode}
252252
\end{block}
@@ -255,9 +255,9 @@
255255
\begin{GobbleCode}[0pt]{10}
256256
def greet(): String = {
257257
<<<<<<< HEAD
258-
"Hello, world!"
258+
"Hello, world!"
259259
=======
260-
"Hi, everyone!"
260+
"Hi, everyone!"
261261
>>>>>>> branch
262262
}
263263
\end{GobbleCode}
@@ -267,7 +267,7 @@
267267
\ii{Konflikten visas med \texttt{<<<<<<<}, \texttt{=======}, och \texttt{>>>>>>>}.}
268268
\ii{Utvecklaren måste välja vilken version som ska behållas eller kombinera dem manuellt.}
269269
\end{itemize}
270-
270+
271271
\end{frame}
272272

273273

@@ -276,26 +276,26 @@
276276

277277
\begin{GobbleCode}[2pt]{6}
278278
object Main {
279-
def main(args: Array[String]): Unit = {
280-
println("Starting calculation...")
281-
println("Result: " + calculateSum(5, 10))
282-
}
279+
def main(args: Array[String]): Unit = {
280+
println("Starting calculation...")
281+
println("Result: " + calculateSum(5, 10))
282+
}
283283

284-
def calculateSum(a: Int, b: Int): Int = {
284+
def calculateSum(a: Int, b: Int): Int = {
285285
<<<<<<< HEAD
286-
val sum = a + b
287-
println("Sum calculated: " + sum)
288-
sum
286+
val sum = a + b
287+
println("Sum calculated: " + sum)
288+
sum
289289
=======
290-
val sum = a + b
291-
println("Calculating sum for: " + a + " and " + b)
292-
println("Sum is: " + sum)
293-
sum * 2 // Doubles the result
290+
val sum = a + b
291+
println("Calculating sum for: " + a + " and " + b)
292+
println("Sum is: " + sum)
293+
sum * 2 // Doubles the result
294294
>>>>>>> branch
295-
}
295+
}
296296
}
297297
\end{GobbleCode}
298-
298+
299299
\end{frame}
300300

301301
\begin{frame}
@@ -311,7 +311,7 @@
311311
\ii{Kallas ibland \emph{merge request}.}
312312
\end{itemize}
313313
\end{itemize}
314-
314+
315315
\end{frame}
316316

317317
\begin{frame}
@@ -323,23 +323,23 @@
323323
\ii{Möjligt att ha flera remotes för olika kopior av projektet.}
324324
\ii{Kolla med \texttt{git remote [-a, -v, -vv]}}
325325
\end{itemize}
326-
326+
327327
\end{frame}
328328

329329
\begin{frame}
330330
\frametitle{Påminnelse - Context}
331331

332332
\begin{center}
333-
\includegraphics[height=.5\textheight]{figs/model-rm-reset.png}
333+
\includegraphics[height=.5\textheight]{figs/model-rm-reset.png}
334334
\end{center}
335-
335+
336336
\end{frame}
337337

338338
\begin{frame}
339339
\frametitle{Local vs remote: commit och push}
340340

341341
\begin{center}
342-
\includegraphics[width=.9\textwidth]{figs/local_remote_commit_push.png}
342+
\includegraphics[width=.9\textwidth]{figs/local_remote_commit_push.png}
343343
\end{center}
344344

345345
\end{frame}
@@ -348,7 +348,7 @@
348348
\frametitle{Local vs remote: fetch och merge}
349349

350350
\begin{center}
351-
\includegraphics[width=.9\textwidth]{figs/local_remote_fetch_merge.png}
351+
\includegraphics[width=.9\textwidth]{figs/local_remote_fetch_merge.png}
352352
\end{center}
353353

354354
\end{frame}
@@ -357,7 +357,7 @@
357357
\frametitle{Båda samtidigt!? -- push}
358358

359359
\begin{center}
360-
\includegraphics[width=\textwidth]{figs/local_remote_push_conflict.png}
360+
\includegraphics[width=\textwidth]{figs/local_remote_push_conflict.png}
361361
\end{center}
362362

363363
\end{frame}
@@ -366,7 +366,7 @@
366366
\frametitle{Båda samtidigt!? -- fetch}
367367

368368
\begin{center}
369-
\includegraphics[width=\textwidth]{figs/local_remote_fetch_conflict.png}
369+
\includegraphics[width=\textwidth]{figs/local_remote_fetch_conflict.png}
370370
\end{center}
371371

372372
\end{frame}
@@ -375,7 +375,7 @@
375375
\frametitle{Båda samtidigt!? -- merge efter fetch}
376376

377377
\begin{center}
378-
\includegraphics[width=\textwidth]{figs/local_remote_fetch_merge_conflict.png}
378+
\includegraphics[width=\textwidth]{figs/local_remote_fetch_merge_conflict.png}
379379
\end{center}
380380

381381
\end{frame}
@@ -525,9 +525,9 @@
525525
\ii{Se avsnitt 1.1, 1.2, 1.3, 1.6 samt 1.7 av youtube-serien ``Git and GitHub for Poets''.}
526526
\ii{Läs kapitel 1, 2 och 3.1--3.2 i Pro Git-boken (Chacon \& Straub).}
527527
\ii{Länkar till materialet finns på kurshemsidan:
528-
529-
\halfblankline
530-
\url{https://cs.lth.se/dod/datorlaborationer/}}
528+
529+
\halfblankline
530+
\url{https://cs.lth.se/dod/datorlaborationer/}}
531531
\end{itemize}
532532

533533
\end{frame}

0 commit comments

Comments
 (0)