From 6309801479da7145b22e2cccd0e31fd6bb28b6aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hauke=20Z=C3=BChl?= Date: Wed, 18 Apr 2018 18:07:51 +0200 Subject: [PATCH 1/4] Started with gogs, added NetBeans --- Git.tex | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 125 insertions(+), 3 deletions(-) diff --git a/Git.tex b/Git.tex index 8a0525a..54efd68 100644 --- a/Git.tex +++ b/Git.tex @@ -388,7 +388,85 @@ Als GIT-Serversoftware empfehle ich an dieser Stelle gogs\footnote{https://gogs. Wenn du dich damit besch"aftigen willst, solltest du aber "uber gute Linuxkenntnisse verf"ugen.\\ Mit gogs hast du eine Weboberfl"ache, "ahnlich wie bei GitHub, unter der du deine Projekte -recht einfach verwalten kannst. Du hast auch die M"oglichkeit, private Projekte dort anzulegen. +recht einfach verwalten kannst. Du hast auch die M"oglichkeit, private Projekte dort anzulegen +und mit Hilfe der Benutzerverwaltung kannst du auch Einfluss darauf nehmen, was deineTeammitgleider +alles so d"urfen. + +\subsection{gogs} +Gogs ist ein kleines, aber feines Projekt, das ein Webfrontend f"ur einen git-Server bereitstellt. +Es ist in der Programmiersprache go geschrieben und ben"otigt nur minimale Resourcen. + +\subsubsection{Installation} +Von https://gogs.io/docs/installation/install\_from\_binary l"adt man sich die passende Version +f"ur seinen Server runter und entpackt diese. Das entstandene Verzeichnis wird dann in das +Benutzerverzeichnis des Benutzers ``git'' verschoben und diesem zu eigen gemacht (chown).\\ +Im Verzeichnis gogs/scripts findest du Beispiele, um gogs auf deinem System bei Systemstart +automatisch zu starten. Das geht zum Beispiel via init oder systemd.\\ +Nat"urllich solltest du die Dateien entsprechend f"ur dein System anpassen, sonst stimmen +die Pfade unter Umst"anden nicht. + +\subsubsection{Konfiguration} +Im Verzeichnis gogs, wird nun ein ``mkdir -p custom/conf'' durchgef"uhrt, um das Verzeichnis +f"ur die Konfigurationsdatei ``app.ini'' zu erzeugen.\\ +Ein Beispiel f"ur eine app.ini: +\begin{verbatim} +APP_NAME = Gogs +RUN_USER = git +RUN_MODE = prod + +[repository] +ROOT = /home/git/repositories + +[database] +DB_TYPE = postgres +HOST = 127.0.0.1:5432 +NAME = gogs +USER = gogs +PASSWD = GEHEIM +SSL_MODE = disable +PATH = data/gogs.db + +[server] +DOMAIN = git.hauke-zuehl.de +HTTP_PORT = 3000 +ROOT_URL = https://git.hauke-zuehl.de/ +DISABLE_SSH = false +SSH_PORT = 22 +START_SSH_SERVER = false +OFFLINE_MODE = false + +[mailer] +ENABLED = false + +[service] +REGISTER_EMAIL_CONFIRM = true +ENABLE_NOTIFY_MAIL = true +DISABLE_REGISTRATION = true +ENABLE_CAPTCHA = true +REQUIRE_SIGNIN_VIEW = true + +[picture] +DISABLE_GRAVATAR = false +ENABLE_FEDERATED_AVATAR = true + +[session] +PROVIDER = file + +[log] +MODE = file +LEVEL = Info +ROOT_PATH = /home/git/gogs/log + +[security] +INSTALL_LOCK = true +\end{verbatim} +Bitte daran denken, dass diese Datei als Eigent"umer den Benutzer ``git'' haben muss!\\ +In diesem Beispiel habe ich "ubrigens PostgreSQL als Datenbanksystem verwendet, du +kannst aber gerne MariaDB oder MySQL verwenden. + +\subsubsection{Der erste Start} + +Und hier weiss ich nicht mehr, wie ich das gemacht habe! \section{GIT from scratch} Ich habe keine bessere "Uberschrift gefunden, aber wenn du keine Lust auf GitHub oder gogs oder @@ -397,6 +475,9 @@ Dann legst du als Benutzer ``root'' einen Benutzer ``git'' an. Hast du das erled du zum Benutzer ``git'' und legst ein Verzeichnis ``.ssh'' im Benutzerverzeichnis von ``git'' an. In das Verzeichnis ``.ssh'' kommen in die Datei ``authorized\_keys'' die "offentlichen SSH-Schl"ussel der Benutzer, die git benutzen d"urfen.\\ +Warum wird das mit den Schl"usseln gemacht?\\ +Ganz einfach: Ansonsten m"usstest du jedem Teammitglied das Passwort des Benutzers ``git'' +verraten und das willst du wirklich nicht!\\ Also: \begin{verbatim} sudo adduser git @@ -434,7 +515,8 @@ dicken Server, der irgendwo in einem Rechenzentrum in Deutschland steht. \chapter{Projekt ``Welt'' auf den Server bringen} Nachdem du also einen GIT-Server irgendwie ans Laufen gebracht hast, oder du dich bei GitHub -angemeldet hast, soll das ``Welt''-Projekt nun auf den entfernten Server gebracht werden. +angemeldet hast, deinen "offentlichen SSH-Schl"ussel auf den Server geladen hast, soll das +``Welt''-Projekt nun auf den entfernten Server gebracht werden. Ob dein GIT-Server nun auf deinem Raspberry oder auf deinem lokalen Server l"auft, der Unterschied liegt in der Benennung des Rechners. Ich erkl"are dir die folgenden Schritte unter der Annahme, @@ -502,7 +584,7 @@ unterworfen sind. Dies sind meistens \item testing \end{itemize} Um deine Arbeitskopie zu aktualisieren, wechselst du in den entsprechenden -Zwei (zum Beispiel ``develop'') und f"uhrst dort \textit{git pull} aus.\\ +Zweig (zum Beispiel ``develop'') und f"uhrst dort \textit{git pull} aus.\\ Damit werden die "Anderungen vom Server heruntergeladen und in deinen Zweig eingepflegt.\\ \\ @@ -593,6 +675,46 @@ ein sch"ones Log auf den Bildschirm. Und wenn du die Kurzform der Commits haben willst, dann bringt dich \textit{git log --abbrev-commit --graph} ans Ziel. +\chapter{GIT in IDEs} +Die meisten IDEs bringen inzwischen Unterst"utzung f"ur GIT mit.\\ + +\section{NetBeans} +NetBeans ist eine recht verbreitete IDE, die kostenlos f"ur diverse +Plattformen angeboten wird.\\ +Die Verbindung von NetBeans zu GIT kann "uber ein Plugin ggf. +nachinstalliert werden.\\ +Startet man NetBeans, hat man unter Team->Git die M"oglichkeit, +GIT-Repos zu verwenden.\\ +Als Beispiel verwende ich nun das Repository unter +https://github.com/hauke68/LibTgBotPP, das jedoch das C-/C++-Plugin +voraussetzt.\\ +Um dies anonym auszuchecken und in ein NetzBeans-Projekt zu packen, +geht man wie folgt vor:\\ +Unter Team->Git->Clone wird die obige URL eingetragen. Benutzer +und Passwort bleiben leer. Im n"achsten Schritt kann man die +Zweige ausw"ahlen, die ausgecheckt werden sollen. Ich empfehle, +erst einmal alle auszuchecken. Im dritten Schritt lassen wir alles +so, wie es ist.\\ +Ist alles ordnugsgem"a"s ausgecheckt, sollten wir im Git Repository +Browser bereits das GIT-Repo sehen. Nun fehlt noch das NetBeans-Projekt.\\ +Dazu auf File->New Project klicken und ein neues C-/C++-Projekt anlegen. +Dabei darauf achten, dass im Fenster ``Projects'' ``C/C++ Project with +existing sources'' ausgew"ahlt ist. Im zweiten Schritt w"ahlen wir +das Verzeichnis aus, in dem die Quellen des Repos sind. Das ist nat"urlich +das vorhin erzeugte Verzeichnis vom GIT-Repo.\\ +Da das hier nur ein Beispiel ist, w"ahlen wir als Configuration Mode +``custom'' aus. Jetzt nur noch auf ``Next'' klciken, bis nur noch +``Finish'' m"oglich ist. Voila, das NetBeans-Projekt existiert und +man kann auch GIT als Versionskontrollsystem verwenden.\\ +Wenn du nun eine Datei l"adst, "anderst und speicherst, kannst du +unter ``Team'' sehen, dass es mehr Auswahlm"oglichkeiten in Bezug +auf GIT gibt.\\ +Spiele hier einfach mal ein wenig rum. Da du das Repo anonym +ausgecheckt hast, kannst du nichts kaputt machen. Etwas anderes +w"are es nat"urlich, wenn du unser Einstiegsprojekt ``Welt'' mit +Hilfe von NetBeans bearbeiten willst. Ich wei"s aber nicht, in +welche Kategorie dieses ``Projekt'' f"allt. + \chapter{Zum Ende noch ein paar Ideen und Worte} Zum Ende hin noch ein paar Anregungen bzgl. der Einsatzzwecke von GIT.\\ From d2122a334338d876dca11692a3686dada7079070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hauke=20Z=C3=BChl?= Date: Fri, 20 Apr 2018 13:51:21 +0200 Subject: [PATCH 2/4] Added information about databases --- Git.tex | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/Git.tex b/Git.tex index 54efd68..24b56c8 100644 --- a/Git.tex +++ b/Git.tex @@ -15,6 +15,9 @@ \usepackage{times} % Times-Schriftart (pdf) \usepackage{calc} +\setcounter{secnumdepth}{4} +\setcounter{tocdepth}{4} + \begin{document} \title{GIT - Eine Einf"uhrung} @@ -396,18 +399,42 @@ alles so d"urfen. Gogs ist ein kleines, aber feines Projekt, das ein Webfrontend f"ur einen git-Server bereitstellt. Es ist in der Programmiersprache go geschrieben und ben"otigt nur minimale Resourcen. +\subsubsection{Vorbereiten der Datenbank} +Bevor du dir gogs herunterl"adst und installierst, solltest du das Datenbanksystem +ausw"ahlen, das gogs sp"ater benutzen soll. Du kannst zwischen MariaDB/MySQL und PostgreSQL +w"ahlen. Gut, es giobt noch SQLite, MSSQL oder TiDB nutrzen, aber die ersten beiden will man +nicht wirklich und TiDB ist wohl noch zu speziell. + +\paragraph{PostgreSQL} +Am einfachsten loggst du dich per ``sudo su - postgres'' als Benutzer postgres in deiner +Shell auf deinem GIT-Server ein, dann erzeugst du per ``createuser -P -d gogs'' einen Benutzer +f"ur die Datenbank ``gogs''.\\ +Im n"achsten Schritt loggst du dich auf der Shell per ``psql -h localhost template1 gogs'' +in das Datenbanksystem ein. Hier reicht nun ein ``CREATE DATABASE gogs;'', um die Datenbank +f"ur gogs anzulegen. + +\paragraph{MariaDB/MySQL} +Du loggst dich mit dem administrativen Benutzer in MariaDB/MySQL, den du bei der Installation +eingerichtet hast, in das Datenbanksystem ein. Das ist oft der Datenbankbenutzer ``root'' +(nicht zu verwechseln mit dem Systembenutzer ``root''). Also ``mysql -p -u root''. Nun +erfolgt ein ``GRANT ALL PRIVILEGES ON gogs.* to 'gogs'@'localhost' IDENTIFIED BY +'geheimes passwort';''. Dann loggst du dich aus, loggst dich per ``mysql -p -u gogs'' +wieder ein und f"uhrst ein ``CREATE DATABASE gogs CHARACTER SET utf8mb4;'' aus, +um die Datenbank f"ur gogs anzulegen. + \subsubsection{Installation} Von https://gogs.io/docs/installation/install\_from\_binary l"adt man sich die passende Version f"ur seinen Server runter und entpackt diese. Das entstandene Verzeichnis wird dann in das Benutzerverzeichnis des Benutzers ``git'' verschoben und diesem zu eigen gemacht (chown).\\ Im Verzeichnis gogs/scripts findest du Beispiele, um gogs auf deinem System bei Systemstart automatisch zu starten. Das geht zum Beispiel via init oder systemd.\\ -Nat"urllich solltest du die Dateien entsprechend f"ur dein System anpassen, sonst stimmen +Nat"urlich solltest du die Dateien entsprechend f"ur dein System anpassen, sonst stimmen die Pfade unter Umst"anden nicht. \subsubsection{Konfiguration} Im Verzeichnis gogs, wird nun ein ``mkdir -p custom/conf'' durchgef"uhrt, um das Verzeichnis -f"ur die Konfigurationsdatei ``app.ini'' zu erzeugen.\\ +f"ur die Konfigurationsdatei ``app.ini'', die beim ersten Start von gogs angelegt wird, +zu erzeugen.\\ Ein Beispiel f"ur eine app.ini: \begin{verbatim} APP_NAME = Gogs @@ -466,7 +493,17 @@ kannst aber gerne MariaDB oder MySQL verwenden. \subsubsection{Der erste Start} -Und hier weiss ich nicht mehr, wie ich das gemacht habe! +Du startest gogs zun"achst "uber die Kommandozeil per ``./gogs web'' und gibst dann in +deinem Webbrowser die URL ``http://localhost:3000'' ein.\\ +Du wirst nun durch die Konfiguration der Datenbank und von gogs gef"uhrt. Bei der Domain +solltest du den Server- oder einen ordentlichen Domainnamen eingeben. Hast du also zum +Beispiel einen kleinen RaspberryPi zu Hause, auf dem gogs laufen soll, und dieser heisst +``pi.deinzuhause.net'' dann gibst du eben diesen Namen bei der Domain und der Application +URL ein.\\ +Den Datenbankbenutzer f"ur gogs und die entsprechende Datenbank solltest du nun auch +anlegen, sonst kracht es bei der Einrichtung der Tabellen.\\ +Hast du soweit alles eingetragen, kannst du dich anmelden und deine Projekte mit gogs +verwalten. \section{GIT from scratch} Ich habe keine bessere "Uberschrift gefunden, aber wenn du keine Lust auf GitHub oder gogs oder From 0e1c4f21adc90aa556c0ec55a813ffeee078b9e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hauke=20Z=C3=BChl?= Date: Fri, 27 Apr 2018 18:46:17 +0200 Subject: [PATCH 3/4] Added some information about Maria and gogs' app.ini --- Git.tex | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/Git.tex b/Git.tex index 24b56c8..bb161d0 100644 --- a/Git.tex +++ b/Git.tex @@ -402,8 +402,9 @@ Es ist in der Programmiersprache go geschrieben und ben"otigt nur minimale Resou \subsubsection{Vorbereiten der Datenbank} Bevor du dir gogs herunterl"adst und installierst, solltest du das Datenbanksystem ausw"ahlen, das gogs sp"ater benutzen soll. Du kannst zwischen MariaDB/MySQL und PostgreSQL -w"ahlen. Gut, es giobt noch SQLite, MSSQL oder TiDB nutrzen, aber die ersten beiden will man -nicht wirklich und TiDB ist wohl noch zu speziell. +w"ahlen. Gut, es giobt noch SQLite, MSSQL oder TiDB nutzen, aber die ersten beiden will man +nicht wirklich und TiDB ist wohl noch zu speziell. Achte darauf, dass MySQL/MariaDB auch +tats"achlich auf dem Netzwerkinterface horcht, das du bei der Installation angibst!\\ \paragraph{PostgreSQL} Am einfachsten loggst du dich per ``sudo su - postgres'' als Benutzer postgres in deiner @@ -421,6 +422,14 @@ erfolgt ein ``GRANT ALL PRIVILEGES ON gogs.* to 'gogs'@'localhost' IDENTIFIED BY 'geheimes passwort';''. Dann loggst du dich aus, loggst dich per ``mysql -p -u gogs'' wieder ein und f"uhrst ein ``CREATE DATABASE gogs CHARACTER SET utf8mb4;'' aus, um die Datenbank f"ur gogs anzulegen. +\\ +\textbf{Hinweis:} Sollte bei Benutzung von MariaDB w"ahrend der Installation im +Webbrowser die Fehlermeldung ``Datenbankeinstellungen sind nicht korrekt: Error 1071: Specified key was too long; max key length is 767 bytes'', dann folgende Befehle in der +MariaDB-Kommandozeile ausf"uhren: +\begin{verbatim} +set global innodb_large_prefix=on; +set global innodb_file_format=Barracuda; +\end{verbatim} \subsubsection{Installation} Von https://gogs.io/docs/installation/install\_from\_binary l"adt man sich die passende Version @@ -431,10 +440,9 @@ automatisch zu starten. Das geht zum Beispiel via init oder systemd.\\ Nat"urlich solltest du die Dateien entsprechend f"ur dein System anpassen, sonst stimmen die Pfade unter Umst"anden nicht. -\subsubsection{Konfiguration} -Im Verzeichnis gogs, wird nun ein ``mkdir -p custom/conf'' durchgef"uhrt, um das Verzeichnis -f"ur die Konfigurationsdatei ``app.ini'', die beim ersten Start von gogs angelegt wird, -zu erzeugen.\\ +\subsubsection{Konfigurationsdatei} +Um sp"ater noch ein wenig Feintuning vorzunehmen, kann man im Verzeichnis ``custom/conf'' +die Datei ``app.ini'' "andern, die bei der Installation automatisch angelegt wird.\\ Ein Beispiel f"ur eine app.ini: \begin{verbatim} APP_NAME = Gogs @@ -487,7 +495,9 @@ ROOT_PATH = /home/git/gogs/log [security] INSTALL_LOCK = true \end{verbatim} -Bitte daran denken, dass diese Datei als Eigent"umer den Benutzer ``git'' haben muss!\\ +Bitte daran denken, dass diese Datei als Eigent"umer den Benutzer ``git'' haben muss! +Wenn du aber bei der Installation oben alles korrekt eingetragen hast, sollte +es keine Probleme geben.\\ In diesem Beispiel habe ich "ubrigens PostgreSQL als Datenbanksystem verwendet, du kannst aber gerne MariaDB oder MySQL verwenden. @@ -503,7 +513,10 @@ URL ein.\\ Den Datenbankbenutzer f"ur gogs und die entsprechende Datenbank solltest du nun auch anlegen, sonst kracht es bei der Einrichtung der Tabellen.\\ Hast du soweit alles eingetragen, kannst du dich anmelden und deine Projekte mit gogs -verwalten. +verwalten.\\ +Der erste Benutzer, der sich registriert bei gogs, wird "ubrigens als Administrator +angelegt, also Obacht! Von nun kannst du gogs in aller Ruhe erforschen und +eigene Repositores anlegen, Organiosationen und Teams erzeugen, usw.! \section{GIT from scratch} Ich habe keine bessere "Uberschrift gefunden, aber wenn du keine Lust auf GitHub oder gogs oder From 2e9302476e198628ff15163d0815c76f7e396803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hauke=20Z=C3=BChl?= Date: Sun, 29 Apr 2018 14:30:19 +0200 Subject: [PATCH 4/4] Added hint to create user 'git' --- Git.tex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Git.tex b/Git.tex index bb161d0..5875359 100644 --- a/Git.tex +++ b/Git.tex @@ -432,6 +432,8 @@ set global innodb_file_format=Barracuda; \end{verbatim} \subsubsection{Installation} +Bevor du dir gleich die Software runterl"adst, lege bitte einen Benutzer ``git'' auf deinem +Server an, sofern der Benutzer noch nicht existiert.\\ Von https://gogs.io/docs/installation/install\_from\_binary l"adt man sich die passende Version f"ur seinen Server runter und entpackt diese. Das entstandene Verzeichnis wird dann in das Benutzerverzeichnis des Benutzers ``git'' verschoben und diesem zu eigen gemacht (chown).\\