diff --git a/merowinger.csv b/merowinger.csv new file mode 100644 index 0000000..c50da4a --- /dev/null +++ b/merowinger.csv @@ -0,0 +1,98 @@ +Childerich I.,Basina,Chlodwig I.,466 +Childerich I.,Basina,Alboflede,466 +Childerich I.,Basina,Lantechilde,466 +Childerich I.,Basina,Audoflede,481 +Chlodwig I.,Unbekannt 1,Theuderich I.,484 +Chlodwig I.,Chrodelchilde,Ingomer,494 +Chlodwig I.,Chrodelchilde,Chlodomer 1,495 +Theuderich I.,Unbekannt 2,Theudebert I.,495 +Chlodwig I.,Chrodelchilde,Childebert I.,497 +Chlodwig I.,Chrodelchilde,Chlothilde,499 +Theuderich I.,Unbekannt 2,Theudechilde,500 +Chlodwig I.,Chrodelchilde,Chlothar I.,501 +Audoflede,Theoderich,Amalasuntha,502 +Childebert I.,Ultrogotha,Chrodoswintha,511 +Childebert I.,Ultrogotha,Chrodoberga,511 +Chlodomer,Guntheuca,Theudoald,514 +Chlodomer,Guntheuca,Gunthar 1,517 +Amalasuntha,Eutharich,Athalarich,518 +Chlothar I.,Chunsina,Chramn,518 +Chlothar I.,Ingunde,Gunthar 2,518 +Chlodomer,Guntheuca,Chlodoald,520 +Chlothar I.,Ingunde,Childerich,520 +Chlothar I.,Ingunde,Charibert,523 +Amalasuntha,Eutharich,Matasuntha,524 +Chlothar I.,Ingunde,Gunthram,532 +Theudebert I.,Deoteria,Theudowald,533 +Chlothar I.,Arnegunde,Chilperich I.,534 +Chlothar I.,Ingunde,Sigibert I.,535 +Chlothar I.,Ingunde,Chlodosinda 1,535 +Chlothar I.,Unbekannt 4,Gundowald,535 +Chramn,Chalda,Unbekannt 6,535 +Chramn,Chalda,Unbekannt 7,535 +Theudebert I.,Unbekannt 3,Berthoara,538 +Gunthram,Veneranda,Gundobad,550 +Gunthram,Marcatrude,Unbekannt 8,550 +Gunthram,Austrechilde-Bobila,Chlothar 1,550 +Gunthram,Austrechilde-Bobila,Chlodomer 2,550 +Gunthram,Austrechilde-Bobila,Chlodoberga,550 +Gunthram,Austrechilde-Bobila,Chlodehilde,550 +Chlodosinda,Alboin,Albswintha,550 +Gundowald,Unbekannt 9,Unbekannt 10,550 +Gundowald,Unbekannt 9,Unbekannt 11,550 +Chilperich I.,Audovera,Theudebert,555 +Chilperich I.,Audovera,Merowech 3,558 +Chilperich I.,Audovera,Chlodowech,558 +Charibert,Ingoberga,Bertha,561 +Charibert,Meroflede,Bertheflede,561 +Charibert,Meroflede,Chrodechilde,561 +Charibert,Theudochilde,Unbekannt 5,561 +Chilperich I.,Audovera,Basina,566 +Chilperich I.,Audovera,Unbekannt 17,566 +Sigibert I.,Brunichilde,Ingunde,569 +Sigibert I.,Brunichilde,Childebert II.,570 +Chilperich I.,Fredegunde,Rigunthe,574 +Sigibert I.,Brunichilde,Chlodosinda 2,575 +Chilperich I.,Fredegunde,Samson,575 +Chilperich I.,Fredegunde,Chlodobert,575 +Chilperich I.,Fredegunde,Dagobert 1,580 +Chilperich I.,Fredegunde,Theuderich 1,582 +Ingunde,Hermenegild,Athanagild,584 +Chilperich I.,Fredegunde,Chlothar II.,584 +Childebert II.,Faileuba,Theudebert II.,586 +Childebert II.,Faileuba,Theuderich II.,587 +Childebert II.,Faileuba,Unbekannt 12,589 +Childebert II.,Faileuba,Theudila,590 +Chlothar II.,Haldetrude,Aemma,600 +Theudebert II.,Bilichilde,Sigichilde,601 +Theuderich II.,Unbekannt 13,Sigibert II.,602 +Chlothar II.,Haldetrude,Merowech 4,602 +Chlothar II.,Haldetrude,Unbekannt 18,602 +Theuderich II.,Unbekannt 14,Childebert,603 +Theuderich II.,Unbekannt 15,Corbus,604 +Theuderich II.,Unbekannt 16,Merowech 2,607 +Chlothar II.,Bertetrude,Dagobert I.,608 +Theudebert II.,Bilichilde,Chlothar 2,610 +Theudebert II.,Theudechilde,Merowech 1,612 +Chlothar II.,Sigichilde,Charibert II.,614 +Chlothar II.,Sigichilde,Oda,614 +Charibert II.,Unbekannt 19,Chilperich,628 +Dagobert I.,Regnetrud,Sigibert III.,629 +Charibert II.,Unbekannt 19,Chimnechilde,630 +Dagobert I.,Nanthilde,Chlodwig II.,633 +Chlodwig II.,Balthilde,Chlothar III.,650 +Sigibert III.,Chimnechilde,Bilichilde,650 +Sigibert III.,Chimnechilde,Dagobert II.,650 +Chlodwig II.,Balthilde,Theuderich III.,652 +Chlodwig II.,Balthilde,Childerich II.,654 +Childerich II.,Bilichilde,Dagobert 2,671 +Childerich II.,Bilichilde,Chilperich II.,673 +Theuderich III.,Chrodechilde,Unbekannt 20,676 +Theuderich III.,Chrodechilde,Unbekannt 21,677 +Theuderich III.,Chrodechilde,Chlodwig III.,679 +Theuderich III.,Chrodechilde,Childebert III.,680 +Childebert III.,Unbekannt 22,Dagobert III.,699 +Childebert III.,Unbekannt 22,Chlothar IV.,700 +Dagobert III.,Unbekannt 23,Theuderich IV.,715 +Theuderich IV.,Unbekannt 24,Childerich III.,730 +Childerich III.,Unbekannt 25,Theuderich 2,745 diff --git a/script.sh b/script.sh new file mode 100755 index 0000000..af50e74 --- /dev/null +++ b/script.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +#set -x +#PS4='$LINENO: ' + +namefile="name.txt" + +sleeptime="0.2s" + +function valid() { + name="$1" + + echo "$name" | tr ' ' '_' | tr '.' '-' +} + +function node() { + name="$1" + echo "$name" > "$namefile" + git add "$namefile" > /dev/null 2>&1 + git commit -m "$name" > /dev/null 2>&1 +} + +function orphan() { + name="$1" + echo "Creating orphan $name..." + git checkout --orphan "$(valid "$name")" > /dev/null 2>&1 + node "$name" + sleep "$sleeptime" +} + +function child() { + parent1="$1" + parent2="$2" + child="$3" + + git checkout "$(valid "$parent1")" > /dev/null 2>&1 + echo "Love is in the air..." + git branch "$(valid "$child")" > /dev/null 2>&1 + git checkout "$(valid "$child")" > /dev/null 2>&1 + sleep "$sleeptime" + echo "Creating child $child of $parent1 and $parent2..." + git merge --allow-unrelated-histories --no-commit --no-ff --no-edit "$(valid "$parent2")" > /dev/null 2>&1 + node "$child" + sleep "$sleeptime" +} + +function notExists() { + name="$1" + if test -z "$(git branch | tr '*' ' ' | awk '{print $1}' | grep "$(valid "$name")")"; then + return 0 + else + return 1 + fi +} + +mkdir -p ./repo +pushd ./repo || exit 1 + +treefile="../$1" + +rm -rf ".git" +rm * +git init > /dev/null 2>&1 + +while read -r line; do + parent1="$(echo "$line" | awk -F, '{print $1}')" + parent2="$(echo "$line" | awk -F, '{print $2}')" + child="$(echo "$line" | awk -F, '{print $3}')" + + if notExists "$parent1"; then + orphan "$parent1" + fi + if notExists "$parent2"; then + orphan "$parent2" + fi + + child "$parent1" "$parent2" "$child" +done < "$treefile" + +popd || exit 1 +