GIT und GitHub
Wer Software entwickelt, behebt Fehler und sollte über Versionierung und Dokumentation dies nachvollziehbar machen. Wenn dann noch mehrere Personen an dem gleichen Projekt kooperativ arbeiten, ist eine Softwareverwaltung unersetzbar. Das gilt erst recht auch für Consultants, Administratoren, die kleine Skripte und Codes in PowerShell, VBA Makros, CMD-Files oder VBScript schreiben.
Beachten Sie dazu auch die Seite Git für Administratoren und Consultants
In der kommerziellen Microsoft Welt wird meist mit Visual Studio entwickelt und der Team Foundation Server entwickelt, in der Linux-Welt gab es schon früh Systeme wie Subversion u.a. Aber mittlerweile scheint GIT der Platzhirsch zu sein.
GIT gäbe es in der Form wohl nicht, wenn sich Linus Torvald und seine Mitentwickler nicht über die ein oder andere Unzulänglichkeit ihres bisherigen Versionskontrollsystems geärgert hätten und 2005 die Firma BitKeeper nicht noch die kostenloste Lizenz dem Team entzogen hätte. Also macht man es selbst und so entstand GIT. GitHub hingegen ist ein Anbieter, der das Hosting von Repositories anbietet.
Wer keinen eigenen "Versionsserver" betreiben will, findet im Internet mit GitHub, Office 365 oder Sourceforge und anderen entsprechende Anbieter, die über Open Source Projekte den Platz oft kostenfrei hosten. Nutze müssen natürlich die Werbung ertragen und wer "closed Source" dort verwalten will, muss auch zahlen.
Seit Anfang 2019 kann jeder kostenfrei auch private GIT Repositories starten. Es gibt nur eine Beschränkung auf 3 Mitglieder. Wer mehr Helfer einbinden will, braucht ein Abonnement. Ich bin mal gespannt, ab wann das in Office 365 als Option auftaucht.
Sie können aber ebenso ein Quellcodeverwaltung in Azure DevOps für bis zu 5 Benutzer kostenfrei hosten.
- Microsoft completes GitHub acquisition
https://blogs.microsoft.com/blog/2018/10/26/microsoft-completes-GitHub-acquisition/ - GitHub Free users now get unlimited
private repositories
https://techcrunch.com/2019/01/07/GitHub-free-users-now-get-unlimited-private-repositories/?guccounter=1 - GitHub is now free for teams
https://GitHub.blog/2020-04-14-GitHub-is-now-free-for-teams/
Brauche ich das?
Ja, sie werden GIT brauchen und vielleicht auch GitHub nutzen, weil immer mehr Dienste, z.B. docs.microsoft.com letztlich auf GitHub gehostet sind. Zudem werden auch Consultants und Administratoren immer mehr Code schreiben und eine geordnete Ablage benötigen.
Sie arbeiten erst einmal weiter mit ihren Dateien auf ihrem Dateisystem. Aber mi GIT können Sie die Änderungen nachhalten und einen Stand auf ein GIT-Ziel legen. Dabei erstellt GIT aber keine komplette Kopie sondern ermittelt die Dateiunterschiede. Die aktuelle Datei wird immer komplett abgelegt und zusätzlich werden in einem Change-Journal die Änderungen zur vorherigen Version dokumentiert. Quasi eine Speicherung der Rückwärtsänderung. Sie können also auch wieder zurück. Auf einer öffentlichen Folie von Microsoft wurde ein "Microsoft loves Open Source" verkündet.
Interessant finde ich dabei, dass Microsoft angeblich schon 2017 den Windows Sourcecode mit Git verwaltet.
Vereinfachte Funktionsweise
Ich habe mehrfach versucht die Funktionsweise zu verstehen und auch wen Sie recht einfach erscheint, ist es für einen Consultant vielleicht nicht auf Anhieb immer klar, wie die Versionierung funktioniert. Ich bin nämlich davon ausgegangen, dass ein zentraler Server die Daten vorhält und ich per "Checkout" eine Kopie auf meinen Computer hole und diese andere. Wenn ich dann einen "Commit" mache, dann war das für mich ein "Upload" meiner lokalen Änderungen wieder auf den zentralen Punkt. GIT funktioniert aber anders. Jeder Client ist seine eigene lokale Verwaltung von Versionen.
Jedes Repository ist dabei einfach nur ein Verzeichnis, indem es eine versteckte Unterstruktur gibt.
Ich habe ein leeres Verzeichnis "C:\Mein Projekt" angelegt und mit "git init" darin die GIT-Verzeichnisse anlegen lassen. Diese sind verborgen und sollten mich daher eigentlich nicht stören. Ich kann nun unter "C:\Mein Projekt" mit den Hilfsmittel meiner Wahl (Notepad, Word, Excel, Visual Studio, Visual Code u.a.) Dateien jeglicher Art in selbst vorgegebenen Ordnerstrukturen anlegen. und verwalten. Noch passiert hier nichts. Erst wenn ich den aktuellen Stand dann "sichern" will, dann mach ich einen "Commit", mit dem die Änderungen dann in mein Repository übertragen werden. Das ist natürlich irgendwo unter ".git".
Interessant wird GIT aber nun, wenn ein entferntes Repository dazu kommt. Ich kann über einen "CLONE" quasi alles aus dem entfernten Repository in ein neues "leeres" Verzeichnis klonen. Das können schon einige Gigabyte werden, wenn das Projekt größer ist. Es sind auch alle Versionen und Kommentare etc. enthalten. Daher ist es wichtig, dass der Owner z.B. über IGNORE-Vorgaben die Dateien aus dem Repository ausschließt, die nicht relevant sind, d.h. Logfile, temporäre Dateien etc. Es bietet sich an auch über Verzeichnisstrukturen z.B. solche Dateien separat zu speichern. Sie können aber auch einfach nur den "master" synchronisieren um etwas Platz zu sparen.
Wenn ich lokal Daten verändert habe und diese per COMMIT bei mir lokal schon mal samt Beschreibung gesichert habt, dann kann ich diese auch über ein "PUSH" zu einem anderen Repository übertragen. Größere Umgebungen trennen hier noch ein "PUSH REQUEST" ab, bei dem meine Änderungen nicht sofort im Ziel aktiv geschaltet werden sondern erst durch einen Maintainer zugelassen werden.
Aktion | Quelle | Ziel | Beschreibung |
---|---|---|---|
init |
kein |
Lokales Repository |
Neues leeres GIT Repository anlegen C:\>md gitdemo C:\>cd gitdemo C:\gitdemo>git init Initialized empty Git repository in C:/gitdemo/.git/ |
clone |
Remote Repository |
Lokales Repository |
Initialer Full Download des Repositories auf mein System (mit allen Versionen) Rem Entferntes Repository in den aktuellen Pfad kopieren git clone Username@host:/path/to/repository Sie können natürlich auch einfach ein "lokales Repository" clonen. Sie haben dann die Dateien quasi "doppelt" REM Aktuelles Repository git clone /path/to/repository REM Beispiel mit Quelle und Ziel git clone --v 'C:\Mein Projekt\.git' C:\git2\ |
Pull |
Remote Repository |
Lokales Repository |
Differenzieller Download auf mein System |
Commit |
Dateisystem |
Lokales Repository |
Übernehmen lokaler Änderungen in das lokale Repository. Kommentare sind erwünscht |
Push oder Push Request |
Lokales Repository |
Remote Repository |
Einchecken der Änderungen in ein entferntes GIT-Repository |
Das sind erst mal die Basis-Befehle. Ich selbst nutze eigentlich nur die "blaue" Pfeile". Ein "Pull", um eine Kopie des Masters eines Repository auf meinen PC zu übertragen und damit zu arbeiten. Wenn ich was geändert habe, dann muss ich die Änderungen in meinen Stage-Bereich übernehmen und beim Commit einen Kommentar hinterlegen. So habe ich eine neue Version bei mir. Wenn ich mit mehreren Personen zusammenarbeite, dann sollte ich meine Änderungen über einen "Push" auch zentral bereitstellen.
Bei Konflikten muss ich eventuell die Änderungen der anderen Kollegen per Pull aus dem Repository übertragen, beim Merge die Konflikte lösen und erst dann wieder ein Push machen.
Oft dürften Sie gar nicht in ein zentrales Repository schreiben und damit den Master-Code kaputt machen. Bei größeren Projekten legen Sie ich einen "Fork" des Hauptprojekts an und können dann bei sich als Teil-Team weiter arbeiten. Wenn Sie dann ein Feature fertig gestellt haben, dann könne Sie einen "Pull Request" des Maintainers anfragen, der dann ihre Änderungen aus ihrem Fork nach einer Prüfung in das Hauptprojekt übernimmt.
Es gibt noch viel mehr Befehle und Optionen, z.B.: um Änderungen im Log nachzuschauen (LOG), eine irrtümliche lokale Änderung wieder durch die Version auf dem Server zu ersetzen (FETCH) u.a. Das Bild und die Beschreibung sind auf einen Client mit einem Server abgestimmt. Zum spielen und testen brauchen Sie aber erst mal GIT auf ihrem PC
git windows download
https://git-scm.com/download/win
- git - the simple guide
http://rogerdudler.GitHub.io/git-guide/ - Git Community Book
https://book.git-scm.com/ -
Developer: How to use GitHub for Windows Users?
https://blogs.msdn.microsoft.com/deva/2018/01/09/developer-how-to-use-GitHub-for-windows-Users/ -
Was ist Versionskontrolle?
https://de.atlassian.com/git/tutorials/what-is-version-control
Fork statt Mirror
Nicht alle Repositories erlauben ihnen auch ein direktes Rückschreiben. Dazu zählt auch docs.microsoft.com. Hier müssen Sie sich erst quasi eine "Kopie" in Form eines Fork anlegen. Ein Fork ist natürlich eine komplette 1:1 Kopie, auch wenn es erst mal so aussieht. Technisch ist es zwar ihre Instanz aber Sie bleibt mit der Quelle verbunden.
Mit dem Fork können Sie nun arbeiten, als wenn es ihr komplett persönliches System ist. Sie können sich über ein Update auch immer wieder neuere Versionen der eigentlichen Quelle holen. Wenn Sie dann aber eine größere Änderung umgesetzt und in ihrem Repository abgelegt haben, dann können Sie den Owner des originalen Repository bitten, diese Änderungen aus ihrem Repository per "PULL" zu holen. Microsoft hat das ganz nett beschrieben.
- Lokales Einrichten von Git für die
Dokumentation
https://docs.microsoft.com/de-de/contribute/get-started-setup-local
Kleinere Änderungen können Sie aber auch direkt umsetzen:
- Schnelle Änderungen an vorhandenen
Dokumentationen
https://docs.microsoft.com/de-de/contribute/index#quick-edits-to-existing-documents
Synchronisation
Aber es braucht nicht viel Phantasie um das Potential zu erkennen, wenn mehrere Personen miteinander am gleichen Projekt arbeiten und sich alle gegenseitig abgleichen. Synchronisiert wird immer zwischen zwei GIT-Repositories. Da aber jeder Client zugleich auch Repository ist, sind unterschiedliche Ansätze denkbar.
- Abgleich zweier Repositories
Das ist durchaus denkbar, wenn zwei Personen miteinander komplett "dezentral" Dateien gemeinsam nutzen wollen, von denen jeder eine komplette Kopie ist. GIT ist hier einfach ein leistungsfähiges "Versionsverwaltungswerkzeug" und "Synchronisations-Engine". - Abgleich über zentrales Repository
Dieser Weg ist eher in Firmen oder größeren Teams zu sehen, die einen zentralen Austauschpunkt betreiben oder per Hosting betreiben lassen, der idealerweise überall und 24x7h erreichbar ist. Es gibt mehrere solcher Provider und GitHub (2018 von Microsoft gekauft) ist sicher einer der größeren Anbieter. Sie können aber auch lokal ihren eigenen GIT-Server (z.B: GitLab) installieren. - kleines Team per N:M
Diese Konstellation ist zwar eher ungewöhnlich aber kommt ohne zentrale Instanz aus, wenn alle System sich irgendwie abgleichen. Ein Sync kann auch über mehrere Stationen als Relay gehen, d.h. der linke und rechte Client müssen gar nicht direkt miteinander kommunizieren, wenn beide mit dem mittleren System sprechen. - Abgleich über mobile Anwender
Gerade bei Consultants ist es oft so, dass ich für einen Kunden arbeite, der sein eigenes GIT hat aber ich natürlich die Arbeit beim Kunden auch bei mir in der Firma "sichern" will. Auch das ist möglich, weil jedes Repository mit jedem anderen repliziert werden kann. Ich kann also die beiden Repositories, beim Kunden und meinem Notebook synchron halten. Wenn ich dann wieder im Office bin, kann ich mein lokales Repository auch mit dem GIT bei mir abgleichen. Mein Notebook ist quasi "Transporter" für den Abgleicht von zwei Repositories, die sich nicht direkt erreichen können.
Es gibt also eine ganze Menge von Replikationsmöglichkeiten, mit denen ich jedes in sich eigenständige Repository mit einem anderen Repository abgleichen kann. Das ganze ist auch per Kommandozeile möglich und kann damit als Task automatisiert werden.
Datenmenge
Alle Versionen auf Vorrat und auf vielen PCs und alles synchron? Da muss die Frage nach dem Datenwachstum erlaubt sein. Ich habe daher mal eine kleine Testserie gemacht.
Achtung: GIT ist bei den Parametern "casesensibel". Zur besseren Lesbarkeit habe ich die Zeilen umgebrochen.
Aktion | Beschreibung | Datenmenge | |
---|---|---|---|
git --version |
Zeigt die aktuell installierte Version von GIT an |
keine |
|
md "c:\Mein Projekt" git init |
Anlegen eines leeren Repository auf meinem Notebook |
8 Ordner |
|
40Kb-File.txt anlegen |
Ich habe in dem Verzeichnis eine Datei "C:\Mein Projekt\40kbfile.txt" angelegt |
9 Ordner |
|
git add . |
Datei im GIT zur Überwachung registrieren. beachten sie den "." als Referenz auf das aktuelle Verzeichnis. |
10 Ordner |
|
git commit -m "Kommentar1" |
Die aktuelle Datei als "Version" einstellen. Achtung: Wenn Sie keinen Kommentar öffnet, dann startet GIT den Editor VI, mit dem Sie den Kommentar eingeben müssen. |
15 Ordner |
|
git remote add origin "c:\Mein Git" git` remote add origin https://gitserver:443/MeineProjects |
Das entfernte Repository als mögliches Synchronisationsziel addieren. Ich habe hier einfach ein anderes Verzeichnis als Gegenstelle genutzt. Das zweite Beispiel zeigt die Nutzung eines GIT per HTTPS |
15 Ordner |
|
git push --set-upstream origin master git push -u origin --all |
Das lokale Repository in das Ziel übertragen. |
15 Ordner |
Das Repository wächst zwar mit der neuen Datei aber der ADD, um die Datei auch zu überwachen und der COMMIT zur "Speicherung" einer Version addiert nur noch Metainformationen. Das bedeutet aber auch, dass ich die Datei nun nicht einfach "löschen" darf. Sie wäre dann nicht aus dem GIT wiederherstellbar. Erst der "PUSH" in ein anderes Repository überträgt die Daten letztlich in das Ziel.
Sie können GIT auch anweisen, dass er nur die aktuellste "Last Version" synchronisiert, indem Sie "GIT clone git clone --depth=1 ......" verwenden
Mit den gleichen Schritten können Sie ein lokales Verzeichnis oder eine Verzeichnisstruktur zu einem Git-Repository "aufwerten und dann auf einen Server kopieren. Genauso gut können Sie aber auf einem Server auch ein neues Repository einrichten, dieses dann lokal replizieren und ihre Bestandsdateien dort einführen. Einige Server erlauben auch den Import von Dateien z.B. per Browser.
- Notepad++ mit git verwenden
https://alexanderzeitler.com/articles/Notepad++-mit-git-verwenden/
Ignore-Dateien
Wenn ich mit PowerShell arbeiten, dann sammeln sich in meinem Projektverzeichnis nicht nur die PowerShell-Skripte, Konfigurationsdateien u.a. Dateien. Ich schreibe natürlich auch Ausgabedateien (z.B. CSV-Dateien) und Traces (Transcript) etc. Diese Dateien ändern sich mit jedem Durchlauf aber sind für die Source-Verwaltung natürlich nicht relevant. Sie stören sogar eher, da GIT jede Änderung erkennt und ich beim Commit die Änderungen begründen muss. Daher ist es sinnvoll all die Dateien oder Verzeichnisse aus der Überwachung auszuschließen, die gar nicht erst durch GIT überwacht und später auch noch eingecheckt und repliziert werden.
Die Konfiguration kann sowohl global für den Host als auch pro Repository oder Verzeichnis erfolgen. Dazu werden Dateien mit den Namen ".gitignore" auf dem Basisverzeichnis oder auch Unterverzeichnissen angelegt, in denen dann die Ausschlüsse definiert werden. So könne eine solche Datei aussehen, um das Verzeichnis "\log", "\trace" und einige Dateientypen auszuschließen:
# .gitignore-Datei im Repository Root # ignore some temporary file types *.tmp *.bak *.log *.zip # certain subdirectories project1/log project1/trace #ignore special files project1/passwords.txt
So kann die Datenmenge dann reduziert werden.
- Shared .gitignore files in your
repository
https://www.atlassian.com/git/tutorials/saving-changes/gitignore - A collection of useful .gitignore
templates
https://GitHub.com/GitHub/gitignore
Arbeiten mit Visual Studio Code
Sie könne natürlich mit Notepad++ auf einem lokalen Dateisystem arbeiten und per Kommandozeile sich mit dem zentralen Repository verbinden. Viel interessanter ist es aber einen Editor zu nutzen, der direkt mit GIT kommunizieren kann. Ein kostenfreier und leistungsfähiger Editor ist Visual Studio Code.
Ich habe also einfach das Verzeichnis "C:\Mein Projekt" geöffnet und im Dokumentexplorer sehe ich sofort die Datei.
Ich kann die Datei öffnen und ändern, was direkt sichtbar wird
Wenn ich die Datei speichere, dann ist sie nur noch geöffnet aber wird weiter als "modifiziert" angezeigt:
Wenn ich dann auf die GIT-Seite gehe, sehe ich direkt die beiden Versionen nebeneinander und über das Context-Menü kann ich entsprechende Aktionen auslösen.
Über ein weiteres Menü können Sie auch den COMMIT ausführen u.a.
- How to disable telemetry reporting
https://code.visualstudio.com/docs/supporting/faq#_how-to-disable-telemetry-reporting
GIT bei Microsoft
Am 4 Juni 2018 wurde bekannt gegeben, dass Microsoft bei GitHub groß einsteigt bzw. den ganzen Laden aufkauft.
- A bright future for GitHub
https://blog.GitHub.com/2018-06-04-GitHub-microsoft/ - Microsoft + GitHub = Empowering
Developers
https://blogs.microsoft.com/blog/2018/06/04/microsoft-GitHub-empowering-developers/ - Microsoft to acquire GitHub for $7.5
billion
https://news.microsoft.com/2018/06/04/microsoft-to-acquire-GitHub-for-7-5-billion/
Ich habe mir schon länger überlegt, wie Microsoft zukünftig damit umgehen wollte, wenn komplette Dokumentationen von Microsoft auf GitHub liegen. Wenn Sie sich mal die Webseite https://docs.microsoft.com anschauen, dann finden Sie auf den einzelnen Artikeln direkt den Link zum Bearbeiten auf GitHub. Wenn Sie z.B. auf https://docs.microsoft.com/en-us/dotnet/framework/wpf/index gehen, dann verweist der EDIT-Link auf https://GitHub.com/dotnet/docs/blob/master/docs/framework/wpf/index.md
Das ist nicht nur bei der Dokumentation sondern auch in Code-Teilen der Fall. Selbst der Team Foundation Server, einer der ureigenen Sourcecode-Verwaltungstools spricht "GIT" als zusätzliches Protokoll.
Und ein eigener Teil in docs.microsoft.com widmet sich dem Umgang mit GIT selbst
- Microsoft Docs contributor guide
overview
https://docs.microsoft.com/en-us/contribute/ - docs.microsoft.com: Additional resources
https://docs.microsoft.com/en-us/contribute/additional-resources
Hier eine Auswahl weitere Links, die jedem Entwickler schon früh angezeigt haben, dass Code am besten in GIT verwaltet wird.
-
Git basics
https://go.microsoft.com/fwlink/?linkid=853939
This has a basic overview of how git works. -
Pro Git e-book (web)
HTML https://go.microsoft.com/fwlink/?linkid=853940
PDF https://progit2.s3.amazonaws.com/en/2016-03-22-f3531/progit-en.1084.pdf -
Learn Git course from Codecademy: Git
tutorial from Codeacademy.
https://www.codecademy.com/learn/learn-git -
Try Git course from Code School: Git
tutorial from Code School
https://www.codeschool.com/courses/try-git -
15-minute interactive primer: This is an
online git tutorial. It exposes you to the
basics of git.
https://try.GitHub.io/ -
Cheat sheets: A quick reference to
common GitHub commands and workflows.
https://go.microsoft.com/fwlink/?linkid=853941 -
GitHub Guides: The home of GitHub
documentation.
https://guides.GitHub.com/ -
GitHub learning resources: Other useful
GitHub resources.
https://help.GitHub.com/articles/git-and-GitHub-learning-resources/ -
GitHub training services: A listing of
tutorials and training offerings from GitHub.
https://services.GitHub.com/training/ -
Glossary: A handy glossary of git and
GitHub terms.
https://help.GitHub.com/articles/GitHub-glossary
GIT und PowerShell
Eigentlich braucht man keine weiteren Module zur Steuerung von GIT. Entweder ist die Funktion im Editor wie Visual Studio Code schon enthalten oder Sie nutzen direkt die Kommandozeile von GIT. Dennoch gibt es auch ein Modul für Powershell, welches quasi die Befehle kapselt.
POSH Kit für Git
https://GitHub.com/dahlbyk/posh-git
GIT auf NAS (Synology u.a.)
Oben habe ich als Beispiel ein lokales auf ein weiteres lokales Repository kopiert. Das macht natürlich keinen Sinn und dupliziert nur Dateien. Sie brauchen also einen GIT-Server und wenn Sie nicht gleich bei GitHub einen kostenfreien Account für Open Source für ihre Daten nutzen oder einen eigenen Server aufsetzen wollen, dann schauen Sie doch einfach mal auf ihr NAS-System. GIT als Repository kann auch auf dem ein oder anderen NAS-System sehr schnell installiert werden. Hier habe ich mal meine billige Synology DS216j (unter 200€ ohne Festplatten) genutzt. Sie brauchen im Paketzentrum einfach nur nach "GIT" zu suchen.
Eine weitere Beschreibung spare ich mir. Es gibt massenhaft Blogs dazu wie z.B.
- DiskStation Manager: Git Server
https://www.synology.com/de-de/knowledgebase/DSM/help/Git/git - Synology: Git-Server
https://www.synology-wiki.de/index.php/Git_Server - Synology Git-Server einrichten
https://yellowshoes.de/2014/12/26/synology-git-server-einrichten/ - Synology Diskstation als Git-Server
http://matthias-strolz.de/git-auf-der-synology-diskstation/ - Git-Server auf Synology Discstation
installieren und einrichten
https://asciich.ch/wordpress/git-server-auf-synology-discstation-installieren-und-einrichten/ - GIT Server on Synology NAW: Installation
and Configuration
http://blog.netgloo.com/2015/04/20/git-server-on-synology-ds115j-installation-and-configurations/ - How To Use Your Network Drive as a Git
Server
https://cutecoder.org/software/git-server-network-drive/
Nutzt ein WD NAS mit SSH - Git on Windows: Creating a network
shared central repository
https://staxmanade.com/2011/06/git-on-windows-creating-network-shared/
Nutzt einen SMB-Share als GIT - Git unter openmediavault installieren
http://kabasumo.de/wordpress/blog/2015/04/19/git-unter-openmediavault-installieren/
Scope und Rechte
GIT ist relativ einfach. Es gibt einfach nur Repositories in denen Dateien und Verzeichnisse liefen. Es ist meines Wissens nach nicht vorgesehen, dass man nur Teile eines Repository repliziert oder über Berechtigungen Anwendern nur Zugriff auf einen Teil der Dateien in einem Repository gibt. Für mich entspricht dies dem alten Prinzip der SMB-Freigaben mit FAT-Dateisystem. Die Rechte auf dem "Share" sind die einzige Steuerung. Übrigens ist das auch für SharePoint Team Sites, Microsoft Teams-Teams und viele andere Systeme so. Genau genommen reicht es ja auch und es würde die Zusammenarbeit ja auch nur erschweren, wenn auch noch Rechte den Zugriff blockieren.
Das bedeutet aber auch, dass eben jeder mit Zugriff auf das Repository auch alles sehen und ändern kann. Ändern ist so erst mal kein Problem, denn Dank der Versionierung und dem Change Logging kann der Manager auch Änderungen wieder rückgängig machen und den Benutzer identifizieren. Über die Steuerung von "Requests" kann man ein Einchecken auch noch mal vorab sichten. Nur die Funktion, dass jemand den Code quasi "kopieren" könnte, dürfte für die ein oder andere Sorge führen.
Bei diesem Thema bin ich mir nicht sicher, ob das noch stimmt. Ich bin nun mal ein Repository Admin oder Maintainer sondern nutze einfach die Funktion in meiner kleinen überschaubaren Umgebung ohne allzu viele Berechtigungen
Auf GIT-Hub können Sie daher problemlos mehrere Repositories anlegen, um unterschiedliche Projekte auch Administrativ zu trennen
- Creating a new repository
https://help.GitHub.com/articles/creating-a-new-repository/ - Access permissions on GitHub
https://help.GitHub.com/articles/access-permissions-on-GitHub/ - Permission levels for a User account
repository
https://help.GitHub.com/articles/permission-levels-for-a-User-account-repository/
So nutze ich GIT/GitHub
Wenn Sie schon länger mit der MSXFAQ arbeiten, dann wissen Sie, dass ich als Webseite den Sharepoint Designer 2007 verwende, der im Hintergrund auf einem Dateisystem arbeitet. Das kann ich per GIT einfach auf ein Server-Repository ablegen, so dass ich ein Backup und Versionen habe. Allerdings muss ich etwas aufpassen, das einige Änderungen gleich sehr viele Seite anpassen und damit die Version etwas überladen ist. Aber vielleicht migriere ich die MSXFAQ irgendwann ja mal auf ein andere System basierend auf Markdown und Offline-Generatoren.
Zudem erstelle ich immer wieder PowerShell-Skripte für meine Kunden und mich. Sind Sie es nicht auch langsam satt, die "Versionierung" von Hand zu machen, indem Sie die Datei umbenennen und mit einer Versionsnummer oder einem Datum versehen? Dann ist es Zeit ihre Skripte über GIT zu verwalten.
Sie müssen nun nur noch überlegen, ob sie ein großes Repository machen, in dem es für jedes Skript ein Unterverzeichnis gibt oder ob sie wirklich für jedes Skript ein eigenes Repository starten wollen. Die Frage ist durchaus interessant, denn wie bedienen Sie einen Kunden, der auch ein GIT betreibt und bei dem sie das ein oder andere Skript einsetzen? dann wäre es doch nett, wenn Sie die Skripte zwischen dem Kunden GIT, dem Job-Server beim Kunden, der Entwicklungsumgebung auf ihrem Notebook und dem GIT in ihrer eigenen Firma abgleichen könnten. Hier wäre ein eigenes Repository wohl einfacher.
Aber wie lösen Sie dann den Konflikt, wenn Sie das gleiche Skript bei mehreren Kunden einsetzen und jeder Kunde seine eigene Version weiter entwickelt. Das käme dann einem Branch gleich. Dann wird es schon kniffliger, denn vielleicht wollen Sie die unterschiedlichen Zweige nie zusammenführen. vielleicht nutzen Sie aber auch Codeteile gemeinsam, bei denen ein Bugfix bei einem Kunden auch beim anderen Kunden vielleicht sinnvoll einzusetzen wäre. Oder wird auch diese gemeinsam genutzte Komponente gleich zu einem eigenen Repository?
Hier müssen Sie wirklich überlegen, wie Sie sich mit den Repositories und dem Abgleich organisieren.
Ich bin aber zu wenig "Entwickler", um diese Detailfragen hier klären zu können.
Aktuell bin ich "Maintainer" meiner Skripte und aus dem alten "/Skripte"-Verzeichnis auf einem Dateiserver wird einfach ein Repository. Kopien, die dann für einen Kunden ausgekoppelt werden, finden Sie beim Kunden und als Art "Snapshot" bei mir. Aber die Skripte beim Kunden landen als "letzter Stand" einfach dort, wo auch die anderen Kundendokumentationen sind.
Ich versuche aber immer mehr die Skripte "unabhängig" zu schreiben und speziell Konfiguration von Kunden einfach als eine Art "CONFIG-Datei (Siehe PowerShell Parameter) abzulegen.
Weitere Links
- Subversion
- Azure DevOps
- GIT
https://de.wikipedia.org/wiki/Git - HPI Open: Let’s Git -
Versionsverwaltung und OpenSource
https://open.hpi.de/courses/git2020 - git - the simple guide
http://rogerdudler.GitHub.io/git-guide/ - Git Community Book
https://book.git-scm.com/ -
Developer: How to use GitHub for Windows Users?
https://blogs.msdn.microsoft.com/deva/2018/01/09/developer-how-to-use-GitHub-for-windows-Users/ - Open source releases from Microsoft
https://opensource.microsoft.com - Microsoft and Open Source: An unofficial
timeline
https://boxofcables.dev/microsoft-and-open-source-an-unofficial-timeline/ -
GitHub is now free for teams
https://GitHub.blog/2020-04-14-GitHub-is-now-free-for-teams/ -
Git cheatsheet for beginners
https://dev.to/duomly/git-cheatsheet-for-beginners-5apl - git - Der einfache Einstieg
http://rogerdudler.GitHub.io/git-guide/index.de.html - Git Repositories - 5-Minute Quickstarts
https://docs.microsoft.com/de-de/vsts/git/?view=vsts - Get started with Git from the command
line
https://docs.microsoft.com/de-de/vsts/git/share-your-code-in-git-cmdline?view=vsts - Klonen eines Repositorys in Python-Code
in Visual Studio
https://docs.microsoft.com/de-de/visualstudio/ai/create-project-repo - Get your code hosted for free in VSTS
https://blogs.msdn.microsoft.com/devops/2016/02/10/get-your-code-hosted-for-free-in-vsts/ - How To Run Your Own Git Server
https://www.linux.com/training-tutorials/how-run-your-own-git-server/ - Git-Tutorial: Die ersten Schritte mit
dem Versionskontrollsystem
https://www.ionos.de/digitalguide/websites/web-entwicklung/git-tutorial/
Angeblich ist GIT auch in einigen Webhosting-Paketen enthalten
GitHub Tutorial without using the
Command Line
https://www.youtube.com/watch?v=tCuPbW31vAw&ab_channel=AndreasSpiess