lehrkraefte:blc:informatik:efi-2023:git:primes-example

Aufgabe

Legen Sie ein neues Verzeichnis ein und speichern Sie folgende Datei unter dem Namen primes.js darin:

primes.js
function* primes() {
	let p=2;
	while (true) {
		let d=1;
		while (d<p) {
			d++;
			if (p%2!=0) {
				yield p;
				d=1;
				p++;
			}
		}
		yield p;
		d=2;
		p++;
	}
}
let i=0;
for (let prime of primes()) {
	console.log(`[${i}] ${prime}`);
	i++;
	if (i>=10) break;
}

Legen Sie ein neues git-Repo an (alle Kommandos im neu angelegten Ordner):

git init
git add primes.js
git commit -m 'version 1'

Korrigieren Sie erst Zeile 8, es sollte p%d!=0 heissen (nicht nur mod 2). Da nur gerade eine Datei vorhanden ist, kann add und commit kombiniert werden:

git commit -am 'mod d anstatt mod 2'

Primazahlen sehen anders aus. Das soll in einem separaten branch dev gefixt werden:

git checkout -b dev

Bauen Sie debug-messages ein, korrigieren Sie den Code, commiten Sie mit debug messages:

git commit -am 'working primes'

Aber eigentlich wollen wir gar keine dubg-messages. Entfernen Sie diese und ändern Sie den letzten Commit:

git commit --amend -m 'code now working'
git log

Commits können nachträglich noch verändert werden, aber das sollte nur auf lokalen, unplublizierten branches gemacht werden. Sonst ist Chaos inbegriffen.

Notfallmässig muss auf dem main-branch ein Sicherheitsupdate eingespielt werden. Es sollen jetzt 20 Primzahlen ausgegeben werden.

git checkout main
# edit primes.js accordingly
git add primes.js
git commit -m 'wichtiges sicherheitsupdate'

Um die Branches wieder zusammenzuführen, kann gemerget werden. Das sollte in diesem Fall ohne Konflikte funktionieren. Der dev-Branch kann danach gelöscht werden.

git checkout main
git merge dev
git branch -d dev
git checkout -v bla
# Ersetze in der Ausgabe die eckigen durch runde Klammern
git commit -am 'rund statt eckig'
git checkout main
# Entfern in der Ausgabe die eckigen Klammern.
<code bash>
git commit -am 'ohne Klammern'
git merge bla

Editieren Sie die Datei und entfernen Sie die Markierungen und die unerwünschte Zeile.

git add primes.js
git commit -m 'variante aus bla'
git reflog

Wenn man bereits weiss, welche Version im Falle von Konflikten massgeben ist, kann das auch direkt vermerkt werden.

Erst aber mal den merge rückgängig machen:

git checkout main
git reset --hard HEAD^

Und dann mergen (das checkout main ist unnötig, wenn man bereits auf dem branch main ist).

git checkout main
git merge -s ort -X ours bla

Lektüre

  • lehrkraefte/blc/informatik/efi-2023/git/primes-example.txt
  • Last modified: 2024/01/09 08:22
  • by Ivo Blöchliger