Eagle Makerconnect Library

Dirk

Administrator
Teammitglied
28. Jan. 2007
4.328
166
63
Mittelhessen, Giessen
Sprachen
  1. ANSI C
  2. C++
  3. C#
  4. Java
  5. Kotlin
  6. Pascal
  7. Assembler
  8. PHP
Bibliothek für den Eagle Layout Editor

makerconnect_lib.png


Hier findet ihr die Eagle-Lib unseres Forums.
(eventuell erstelle ich für Eagle auch noch ein eigenes Unterforum)

Devices:

Mikrocontroller Module

MEGA128-USB Mikrocontroller Modul (@Dirk) 20.11.2016
XMEGA-A1-USB Mikrocontroller Modul (@Dirk) 20.11.2016


Frames
FRAMEA5 (@Janiiix3) 01.12.2016
FRAMEA4 (@Janiiix3) 01.12.2016
FRAMEA3 (@Janiiix3) 01.12.2016



Version (Eagle 6 Format):



Wie fügt ihr eure eigenen Devices zu unserer Eagle-Lib hinzu?

Am besten sendet ihr mir eine Email mit eurer Lib im Anhang. Falls ihr nur bestimmte Devices hinzufügen möchtet, gebt bitte die Device-Bezeichnungen in der Email an. Bitte sendet mir nur Libs mit Devices, die ihr selber erstellt habt oder die als public domain frei zur Verwendung veröffentlicht werden dürfen.
Ich werde die Devices daraufhin zu unserer Library hinzufügen und diesen Themenbeitrag aktualisieren.

Nutzungsbedingungen
Die makerconnect.lib ist eine gemeinschaftliche Eagle Library von User für User und ist public domain. Wir können nicht garantieren, dass Devices, Packages und Symbols fehlerfrei erstellt wurden. Die Library verspricht somit keinen Anspruch auf Eignung für Produktion oder Prototyping oder einen sonstigen Zweck. Die Library dient nur zur informativen Zwecken und du kannst sie nach eigenem Ermessen verwenden.
Wenn du einen Fehler findest, kontaktiere uns. So können wir die Library entsprechend verbessern und aktualisieren.
 

Anhänge

  • makerconnect_lib.zip
    93,6 KB · Aufrufe: 7
Zuletzt bearbeitet:
Hi Dirk,

falls Interesse besteht, schau ich mir mal die Tinies an (hab davon bereits einige erstellt).
Du könntest noch ein paar Design-Richtlinien festlegen (Schriftgröße und dese prozentuale Strichdicke beim Text im Schematic, Strichdicke, Abstand der Pins, Schriftgröße usw im Layout, Dicke der Bestückungslinien usw...) damit das einheitlich wird...
(Darstellung von Pins und/oder Pads im Device, ob und welcher Symbolname generiert werden soll, irgendwas war noch mit dem value...)
Oder vereinheitlichst Du das?

Ich habe mir einige Packages aus irgendso'ner Musterbibliothek bei Eagle kopiert - geht das in Ordnung?

Ich kann auf den Tablet nicht einsehen, was Du bisher hochgeladen hast - wie stellst Du Dir das letztendlich vor?
Mehrere Libs, oder alles in einer, sauber hierarchisch sortiert (einzelne Ordner(?) innerhalb der lib)?
Packages werden in einer lib (ein Ordner(?)) ja nur einmalig erstellt, dann wäre es ja sinnig, wenn wir vorher Zugriff auf Die bereits in der lib vorhandenen Packages hätten - sonst werden vielleicht zich Bauteile im SO8 erstellt, und wenn Du die zusammenführst hast Du hinterher zich unnötige Packages.
Läßt sich das überhaupt irgendwie sinnig zusammenmischen? (also ich lade Deine Lib runter, male 'n schematic, erstelle diverse devices unter Verwendung bereits vorhandener Packages (erstelle ggf zusätzliche), und schicke Dir das ganze zurück. Wenn das mehrere User quasi-gleichzeitig machen, hast Du mehrere Versionen mit unterschiedlichen Bauteilen, die möglichst weitgehend dieselben Packages nutzen - bekommst Du die nun mit vertretbarem Aufwand überhaupt wieder in eine gepflegt?)

Ok, da ließe sich vielleicht was scripten - eagle hat ja da so'ne eigene Sprache für, aber ich hab damit noch nie wirklich was gemacht...

P.S.: irgendwo müßte hier auch noch 'ne libvon mir mit häufig verwendeten Steckern isw rumschwirren, vielleicht läßt sich davon auch was verwerten?
 
Hallo LotadaC,

:D das sind jetzt viele Fragen.

Ab und zu gab es ja mal Fragen nach einer gemeinschaftlichen Lib oder einer Lib-Sammlung im Forum. Ich hatte vor langer Zeit eine Library mit Mikrocontrollermodulen erstellt (avr-praxis.lib ;)). Da @Janiiix3 letztens wieder nach einer Lib gefragt hatte, habe ich nun erst mal einen Bereich für eine neue gemeinschaftliche Library erstellt.

Allgemein ist das alles sicher nicht so einfach in den Griff zu bekommen. Ich hatte mir es so vorgestellt:
Alles in eine makerconnect.lib, die ich verwalte, also immer aktualisiere. Wenn jemand ein neues Device erstellt hat, welches aufgenommen werden soll, kann er mit die Lib in der das Device vorhanden ist zukommen lassen. Das kann auch eine Kopie der makerconnect.lib sein. Ich kopiere mir dann das Device (plus Package und Symbol) in die aktuelle makerconnect.lib. Stelle diese wieder in den oberen Beitrag in das Forum und aktualisiere auch die Liste der Devices im Beitrag.
Inwieweit das alles so funktioniert, kann ich nicht sagen. Was passiert zum Beispiel wenn Packages hinzugefügt werden sollen, die bereits mit selbem Namen vorhanden sind?! Wenn man ein neues Device erstellt, hat es sicher Vorteile, wenn dies mit einer Kopie der makerconnect.lib gemacht wird.

Eigene Designregeln erstellen wäre natürlich vorteilhaft, aber
  • da müssten sich User auch dran halten und
  • es ist auch schwierig bei bereits bestehenden Devices und
  • User haben eventuell andere Vorstellungen von Designvorgaben und
  • Erstellen der Designvorgaben ist sicher auch aufwändig.
Das was mir im Moment als "Designvorgabe" einfällt: Wenn jemand ein Device erstellt, könnte er bei Device Description seinen Usernamen oder Emailadresse hinterlassen, so können andere User direkt Kontakt aufnehmen, wenn Fragen zum Device bestehen oder wenn jemand einen Fehler bemerkt hat. Dies wäre vorteilhaft, muss aber nicht sein. Ich aktualisiere immer die Device-Liste im oberen Beitrag.

Wenn ich Devices in die Lib übernehme, würde ich nichts an Device, Package oder Symbol ändern, das wäre mir ehrlichgesagt zu viel Aufwand. Wie es sich mit bereits bestehenden Device-, Package- und Symbolnamen ist, weiß ich noch nicht, das habe ich noch nicht probiert.


Man könnte auch Themenbereiche in verschiedene Libs unterteilen, aber ich denke mal, wir sollten erst mal schauen, was da eigentlich alles zusammen kommt, wieviele User sich überhaupt daran beteiligen. Eventuell könnte den Bereich makerconnect.lib später auch ein User machen, der sich mit Eagle auskennt.
 
Hmm...
hab mir das mit den Bibliotheken in Eagle jetzt mal etwas genauer angesehen, in einer Bibliothek können:
  • mehrere Symbole definiert werden (klar)
  • mehrere Packages (auch klar)
  • devices, die Symbole und Packages verknüpfen
    • in einem device können mehrere Packagevarianten erstellt werden
    • taucht im Devicenamen ein "?" auf, wird dieser Platzhalter bei der konkreten Platzierung eines Devices im Schaltplan durch das korrespondierende Kürzel der Packagevariante ersetzt. Taucht kein Platzhalter auf, wird das Kürzel einfach angehängt.
  • Technologies, hier wird der Platzhalter "*" durch ein entsprechendes Kürzel ersetzt. Ist kein Platzhalter vorhanden, wird das Kürzel an den Namen (und vor dem Package-Kürzel) angehängt. Jeder Packagevariante eines devices (einer Bibliothek) können beliebige Technologievarianten der Bibliothek zugewiesen werden
Also am Beispiel meiner Tinies könnte ich für 'nen 8Beiner halt 'ne DIP, SOIC, MLF als Package erstellen, für 'nen konkreten Tiny dann das Symbol. als Device dann zB den Tiny85?* erstellen. Und im Device dann mehrere Packagevarianten, für DIP, SOIC usw. Außerdem erstelle ich (für die ganze lib) die Technologien "", "L", "V" usw. Jetzt kann ich für jede Packagevariante festlegen, welche Technologien da verfügbar sein sollen. Beim Einfügen Bauteils sollte es dann den Tiny85* ähnlich einem Ordner geben darin dann alle verfügbaren Varianten zur Auswahl (wobei man die dann in Schematic und Layout später mit Change->Package und Change->Technology jederzeit ändern könnte).

L- und V-Varianten gibt's bei neueren Tinies eigentlich nicht mehr, hier wäre es sinniger, die Speicherausstattung als Technology reinzunehmen, also zB beim Tiny441/841 eben Tiny*41? zu definieren, mit den Technologies "4" und "8".
Dummerweise gibt's aber Tinies, die einerseits diese Selektionskriterien haben (L,V,A usw), andererseits in unterschiedlichen Speicherausstattungen existieren - Technology kann ich nur für eins von beiden vorsehen...

Also...
Meiner Meinung nach wäre es sinniger, mehrere Bibliotheken zu erstellen, und die in Ressourcen bereitzustellen - können mehrere unterschiedliche Dateien in eine Ressource geladen werden (abgesehen von zips etc)?
Also ähnliche Bauteile in entsprechenden Bibliotheken bündeln/ergänzen, klar - aber eben nicht alles in einer.
 
können mehrere unterschiedliche Dateien in eine Ressource geladen werden (abgesehen von zips etc)?
Nein, das geht leider nicht. Da muss man zippen. Wenn ich es verwalte, könnte ich Dateien direkt auf dem Server ablegen und mit Link downloadbar machen ... aber dies würde nur Sinn machen, wenn man viele Libs hat und viele User etwas beitragen.

Also ähnliche Bauteile in entsprechenden Bibliotheken bündeln/ergänzen, klar - aber eben nicht alles in einer.
Ja, das ist schon gut, wenn man entsprechend viele Bauelemente aufnimmt. Das ist ja auch bei den Cadsoft Eagle Libs so.
Nur ich habe im Moment noch keine Ahnung wer hier und da mal ein Device "liefert", ich weiß nicht was da zusammen kommt.

Ich würde erst mal schauen, was und ob etwas zusammen kommt und dann entscheiden ob man bei einer Lib bleibt oder mehrere erstellt und ob man im Forumbereich bleibt oder alles in den Ressourcenbereich verschiebt. Falls du planst eine Lib für einige tinyAVR zu erstellen, wäre das super. Diese würde ich dann separat lassen ... passt auch gut zur ATtiny-Übersicht.
 
Es wäre auch gut, wenn Bauelemente bereits sowohl im Schaltplan wie auch auf Leiterkarte verwendet wurden. So sind die wenigstens überprüft. Also einfach auf Masse Devices definieren, finde ich nicht so gut.
Interessant sind vor allem Bauelemente, die es nicht bereits schon in den Eagle-Libs gibt.

Dirk :ciao:
 
Hallo @Dirk,

Vielen dank für deine Mühe.
Ich hatte vor kurzem mal ein Tool geschrieben, dass es mir ermöglicht meine "Description" für die ganzen einzelnen Bauteile gleich zu halten.
Nur als kleines Beispiel. Damit die ganzen Lib´s nicht großartig anders aussehen.

Damit kann sich dann auch der User eintragen, der diese LIB erstellt hat, somit ist alles einheitlich.

Wenn dir das zu viel wird, würde ich mich versuchen, diese LIB zu verwalten. Erfahrungen mit EAGLE habe ich.

Achja...

Eine Idee -> Wenn ein User eine neue LIB hat, kann er diese ja hier "Hochladen" so wie die Bilder. Da braucht man keine Email schreiben, sondern das geht dann direkt an den User, der die LIB später bearbeitet.

*Anbei ein Foto*
 

Anhänge

  • Eagle_Des.jpg
    Eagle_Des.jpg
    26,3 KB · Aufrufe: 18
  • tool.jpg
    tool.jpg
    19,1 KB · Aufrufe: 18
Zuletzt bearbeitet:
Wenn dir das zu viel wird, würde ich mich versuchen, diese LIB zu verwalten. Erfahrungen mit EAGLE habe ich.

Ja, es würde mich schon unterstützen, wenn du es übernehmen würdest. :)

Ich mache mir da nochmal Gedanken darüber, wie wir das am besten im Forum realisieren, auch bezüglich der User-Rechte.

Eventuell wäre ja auch hier ein Unterforum extra für Eagle vorteilhaft.

Eine Idee -> Wenn ein User eine neue LIB hat, kann er diese ja hier "Hochladen" so wie die Bilder. Da braucht man keine Email schreiben, sondern das geht dann direkt an den User, der die LIB später bearbeitet.

Ja, das würde natürlich so auch gehen.
 
Halte mich auf dem laufenden @Dirk
 
Eines vorweg: Ich pflege mein privates Versionskontrollsystem (Subversion), in dem ich neben den Libs auch all meine Quellcode-Files verwalte. Und mit Eagle Libs / Sheets / Boards klappt das erstklassig.
Eagle Libs/Schematics und Boards sind seit Eagle V6 XML Dateien, daher kann man die prima auf Veränderungen vergleichen.

Auch wenn meine Idee aus makerconnect wegführe, was haltet Ihr daher von der Idee die Bibliothek in einem öffentlichen Repository zu halten? Mir schwebt da github vor.

Übrigens gibt es bei github schon einige Eagle-Bibliotheken -> https://github.com/search?utf8=✓&q=eagle (nicht alle dort gefilterten Projekte decken eagle libs ab, aber viele davon)

Die Vorteile wären:
  1. Da die Bibliothek "offen" sein soll, wäre das dann dort kostenfrei und eine Mitarbeit wäre für alle - auch User ausserhalb von makerconnect - möglich.
  2. Die Bibliothek ist versioniert und man kann jederzeit auf einen bestimmten Stand aufsetzen, wenn man denn möchte.
  3. Man kann von einem Versions-Stand abzweigen um z.B. isoliert ein neues Bauteil, oder seinen Teil der Bauteile einzupflegen. (Featurebranches anlegen, Releasebranches wenn mal "Meilensteine" angedacht sind)
  4. Durch die Versionshistorie sieht man ganz genau wann wer was geändert hat und man kann Änderungen auch rückgängig machen, falls jemand Schindluder treibt. ;-)
  5. Durch die Versionierung hat man auch ein Backup der Bibliothek, denn auch wenn die aus dem repo gelöscht wird, dann ist sie als alte Version immer noch da.
  6. Wir müssen das nicht immer händisch ineinanderfügen, denn das Versionkontrollsystem macht das selbst.
Alles was man bei githung braucht, ist einen Account zu beantragen (kostenlos) und dann kann man sich noch den Versionsbrowser mit schöner Benutzeroberfläche für Windows und macOS runterladen (freilich auch kostenlos) -> https://desktop.github.com

Alternativ kann man im Webbrowser auch all die o.g. Aktionen durchführen. Und wer mag kann das Ganze auch per Kommandozeile (GIT) updaten / seine Änderungen reintegrieren...

Wie gesagt - ich mache das bereits seit Jahren mit meinen Dateien / Projekten und es ist eine feine Sache.

Was haltet ihr davon?

Alternativ könnte man dort auch Codesnippets / Projekte verwalten, die dann für jedermann nutz- und erweiterbar wären... Vorausgesetzt man stimmt damit überein, dass die Quellcodes dann "Open Source" sind ;-)


VG - Peter -
 
Zuletzt bearbeitet:
Guten morgen hdusel.

Die Idee finde ich sehr gut. Das mit den Projekten und den Ständen ist ja immer so eine Sache, die Verwaltung ist ziemlich aufwändig und Zeitraubend.
Mit github oder ähnlichen Anbietern für OpenSource Geschichten, wird einem ziemlich viel Aufwand genommen und man kann von überall und jederzeit (ausßer bei Server Ausfall :p) auf seine Daten zugreifen.

Meine Persönliche Meinung dazu ist jedoch, dass wir das allein hier in diesem Forum machen sollten.
Nicht nur das einer die Kontrolle über diese Bibliothek hat, sondern das ganze Forum hat was davon (neue Member, wenn wir es im Reg. Bereich machen würden)
Damit können wir wachsen!

Also meine Persönliche Meinung ist damit kund gegeben.

Angenehmen Freitag euch allen ;)
 
Hallo Janiiix3,

Danke für Deinen guten Kommentar!
Ja, ich stimme mit Dir überein, dass ich es auch nicht wirklich toll fände wenn das Repo extern - also nicht bei makerconnect - wäre! Das hat mir an meiner Idee bislang auch nicht so gefallen... :-/

Hmmmmm..... ...aber wenn wir ein einen svn- oder git server hier bei Makerconnect laufen ließen? ;-)

@Dirk: Meinst Du, man könnte auf dem Server, auf dem makerconnect läuft ein subversion, oder git Server einrichten?

Bzgl. Subversion habe ich das schon mal auf meinem Server, der unter Linux läuft, gemacht.

Läuft der Server unter Linux geht das Einrichten rel. schnell: Man braucht eigentlich nur das subversion Paket und eine MySQL Datenbank (package mysql). Im Internet finden sich auch Tutorials en masse...

Wenn Der Webserver unter Apache läuft, gibt es noch ein Apache plugin welches dann über einen svn-daemon den svn Dienst sogar als WebSVN anbietet - sprich man kann damit sogar per Webpage in dem Rep browsen oder sich über RSS Feed über Neuigkeiten informieren lassen...

Zum reinen Ein-Auschecken - also der Basisfunktionalität - ist das das aber nicht erforderlich.

Das Reizvolle wäre, dass wir dann auch neben den HW-Geschichten, die dieser Thread diskutiert auch zus. einen Bereich für Programmcode / Snippets (Die "Makerconnect-SW-Bibliothek") verwalten könnten...

Ich fände so eine lebende "Snippet-Sammlung" bei der alle User mitarbeiten / Partizipieren könnten schon interessant... ;-)

Falls das mit dem Einrichten eines CMS (Content Management Systems (SVN, GIT, ...)) eine Option wäre würde ich gerne unterstützend zur Verfügung stehen.

Was meint Ihr, was meinst Du Dirk? Bin auf Euer Feedback gespannt! :)

VG - Peter -
 
Zuletzt bearbeitet:
Die Idee ist klasse. Wirklich!
Nur bin ich der Meinung, dass wir die Bibliothek nur eine Anzahl von "x" Leuten verwalten lassen sollten.
Es könnte einfach zu viel passieren (Was nicht immer gleich mit böser Absicht sein muss)...

Mit den Feeds und so, dass kann man trdz. mit einbauen!
 
Hallo Peter, hallo Janiiix.

Die Idee eine Versionskontrolle mit github zu lösen finde ich ebenfalls gut.

Allerdings würde ich gerne - wie Janiiix ebenfalls - die Bilbliothek(en) mehr an das Forum binden. Janiiix hatte sich ja bereit erklärt, das ganze zu verwalten, das wäre super, ich müsste da nur schauen, wie ich am besten die Benutzerrechte konfiguriere.

Ich kann noch nicht so abschätzen, wieviele Forenmitglieder etwas zu der Lib beitragen würden. Ich vermute aber, es wird zunächst nicht so viel Aufwand sein, alles manuell zu verwalten.

Aber die Idee mit dem git Server auf dem eigenen Server finde ich sehr interessant. Man müsste es irgendwie ein bisschen mit dem Forum "verbinden" bzw. integrieren können.

Ich habe selber mit github noch nicht gearbeitet (Account habe ich seit Jahren, aber noch nicht genutzt :)), mir fehlt im Moment leider etwas KnowHow und auch leider die Zeit, mich hier einzuarbeiten, um es selber bei uns auf dem Server zu installieren und auszutesten.

Falls das mit dem Einrichten eines CMS (Content Management Systems (SVN, GIT, ...)) eine Option wäre würde ich gerne unterstützend zur Verfügung stehen.

Ja, deine Unterstützung würde ich hier gerne annehmen, Peter. Ich weiß nicht wie aufwändig es für dich wäre das System auf dem Server zu installieren, so dass man damit mal testen kann. Falls du dies übernehmen möchtest, könnte ich einen extra Bereich auf dem Server anlegen, eigener FTP Zugang und mit Subdomain über http erreichbar.

Grüße,
Dirk :ciao:
 
Hallo Dirk, hey, das klingt doch schon ganz gut! :)

Ich will für die Leser mal kurz einige Begrifflichkeiten erklären:

(Es mag im Folgenden vieles kompliziert klingen, aber es ist WIRKLICH leicher als gedacht ;-))
  • Was ist ein "Repository"?
    Ein Repository ist quasi der Datenbestand - die Datenbank, die zwangsläufig an der Versionskontrolle hängt. Ein Repository verwaltet Projekte / Module. Das Repository liegt auf einem Server und in der regel nicht zu Hause auf dem heimischen PC, obschon man das auch machen kann um seine projekte lokal zu versionieren - das ist übrigens ganz interessant für lokale "Spielwiesen" und zum testen um mal das Arbeiten in einem Versionskontrollsystem zu üben, ohne etwas kaputt zu machen... ;-)
  • Was ist das "Working Directory"?
    Das Working Directory ist der Bereich, lokal auf Deinem PC - Quasi das Verzeichnis auf dem Du arbeitest (Deswegen auch der Namenszusatze "Working"). In diesem "Working Directory" checkt man sein Projekt / Modul aus dem Repository aus und comitted (checkt ein) seine Änderungen wieder und führt damit seine Änderungen zurück in die Versionskontrolle. Dabei wird den Änderungen eine neue Version gegeben.
  • Hinzufügen und löschen von Modulen: Generell weiss das Repo erst mal gar nicht, welche Dateien es denn zu verwalten hat. Dazu muss man neue Files erst einmal per "Add" hinzufügen und diese dann committen. Ab dann sind sie teil der Versionierung! Soll eine Date / Dateien aus der version entfernt werden, dann muss man die "deleten" und danach auch diese Transaction comitten (Wichtig!).

    Wichtig in dem Zusammenhang ist zu verstehen, dass ein Delete das File eigentlich physikalisch nie aus dem repository löscht! Es wird nur ab dieser version nicht mehr da sein. im Repo-Browswer kann man deshalb, wenn man in den versionen zurückgeht sehen, dass das File wieder da ist! Daher ist die Angst "Oh Gott, ich habe ein File aus dem Repository gelöscht" nicht zutreffend, denn man löscht da File zwar ab dieser Version, kann es aber in der Version zuvor wieder herstellen! Passiert einem das also (ist mir auch schon für ganze Verzeichnisse passiert ;-)) dann kann man einfach wieder eine Verion zurücgehen (auschecken einer bestimmten Version) und schon sind die Datein wieder da! Danach neu eincheken und schon hat man den fehelrhaften Delete wieder aufgehoben.
  • Einchecken / Auscheken / Updaten. Alle Änderungen die man an einem Modul vornimmt finden ja erst mal nur lokal im Working Directory statt. Sprich davon merken zuerst die Anderen, die auch mit dem Modul(en) auf ihren Working Directories parallel arbeiten nichts! Man ist also ungestört in seiner "Sandbox" unterwegs und kann lustig vor sich hin werkeln ohne bei den Anderen was "kaputt zu machen" ;-)

    Will man nun aber diese Änderungen für Alle verfügbar machen, dann muss man diese wieder in das Repository "comitten" (Zurückführen / Einchecken). Dies ist auch der Moment in dem man einen "Logging-Kommentar" eingeben sollte, der möglichst kurz beschreibt, was denn geändert wurde. Diese Änderung wird dann vom Versionskontrollsystem als eine neue Version gespeichert und fortan werden Andere User, wenn sie auschecken auch diese Änderungen bekommen. (Siehe auch "Mergen" / "Konflikte", wenn das Modul schon da war.)

    Im Gegenzug bekommt man lokal erst mal nichts davon mit, wenn jemand schon Änderungen eingecheckt hat. Die muss man erst synchronisieren indem man ein "update" macht. Dann wird im repo geschaut, ob es schon von Anderen Usern / Commits Änderungen gibt und wenn dem so ist, werden die mit dem aktuellen Stand zusammengeführt. Dabei kann wieder die Problematik des "Mergen" ins Spiel kommen. Solange aber keine Kollisinen auftreten wird das Versionskontrollsystem alle Änderungen automatisch zusammenführen und man hat lokal dann die Vereinigte Menge der loakeln Änderungen + die der Anderen. Bedenke aber, dass diese Schnittmenge erst eingecheckt werden muss, wenn man will, dass die Eigenen Änderungen auch die Anderen bekommen.
  • "Reverten" bedeutet, dass man die lokalen Änderungen absichtlich verwerfen will, indem sie durch die aktuelle Version aus dem Versionskontrollsystem überschrieben wird. Achtung! Dabei gehen wirklich alle lokalen Änderungen, die man noch nicht eingechekt hat VERLOREN. Also vorher gut nachdenken! ;-)
  • Der "Repository Browser" ermöglicht wie der Name schon sagt das Navigieren im Repository. Hier sieht man alle Module, kann sich in den Versionen - also quasi in der Zeit zurück bewegen, kann auch von einer Version einen "Branch" erzeugen, welcher dann eigenständig versioniert wird etc. Hier sieht man auch wer wann welche Änderungen vorgenommen hat. Man kann so auch Änderungen aus einer bestimmten Version zurückholen. oder auch sagen - Ich möchte von einem Modul eine bestimmte Version in meinem Working Directory haben.
  • Branches sind Abzweigungen vom Hauptentwicklungsszweig. Der Hauptentwicklungszweig heisst übrigens "Trunk" (Stamm). Ein Branch ermöglicht - wie bei einem Baum - das Abzweigen von einem anderen Branch - also mindestens vom Trunk. Wenn ich von "abzweigen" rede, dann meint das, dass man bei einer bestimmten Version (Stand des Modules) abknickt und basierend auf dieser Änderung einen neuen Versionszweig aufmacht. Das macht z.B. Sinn, wenn man z.B. Ein neues Feature implementieren möchte, welches man aber noch nicht wirklich in den Hauptzweig zurückführen will, weil dies u.U. noch nicht stabil ist. Dann entwickelt man (oder das Team) eben an diesem Branch weiter und stört nicht die Entwicklumg im Trunk. Man sagt dazu auch, dass man einen "Featurebranch" aufmacht, auf dem ein gewisses Feature quasi isoliert implementiert wird.
  • Tags: Man kann Branches auch als sog. "Tags" markieren, nämlich. Das sind dann Versionsstände die man vorzugsweise als "Markierungen" für stabile / releaste Versionen / Meilensteine verwendet. Wenn man einen Branch als "Tag" markiert wird diese Version in diesem Ast aber sozusagen "festgenagelt", das heisst, einen Tag kann man nur auschecken, aber keineÄnderungen mehr vornehmen!
  • "Mergen": Wenn dann das o.g. Feature auf einem Branch oder Tag fertig ist, möchte man die Änderungen wieder in den "Trunk" (oder auch anderen Branch) zurückführen. Diesen Vorgang nennt man Mergen.
  • "Konflikte" Bei einem "Update" / "Merge" kann es passieren, dass es Konflikte gibt, nämlich dann, wenn in einem geänderten Modul auch schon Änderungen im Trunk erfolgten. Welche gelten nun? Diese Konflikte müssen dann händisch aufgelöst werden, sprich da muss man sich dann schon genau ansehen, was denn nun endgültig zurückfließen soll.
Was ich oben geschrieben habe sind so die "Basics", die eigentlich alle Versionskontrollsysteme kennen. Manche benutzen etwas andere Begrifflichkeiten, aber rein semantisch ist das eigentlich jeweils direkt abbildbar.

Unterschied zwischen den gängisten Versionskontrollsystemen "Subversion" (aka SVN) und GIT
  • SVN: Bei SVN ist der Workflow bei einem bestehenden Modul wie folgt:
  1. Man checkt ein projekt aus dem repository aus. Dadurch landet es lokal auf der Harddisk (Kommandozeile "svn checkout <modul>" bzw. "svn update <file>")
  2. Man nimmt Änderungen vor und checkt diese wieder ein (Kommandozeile "svn commit -m "changed: Dies ist eine ganz tolle Aenderung" <file>")
  • GIT: Bei GIT ist das ähnlich, nur dass man bei git quasi auch ein lokales Repo hat!

    Bei GIT wird zunächst ein Repository "gecloned" - sprich lokal eine Kopie des REPOSITORIES angelegt. Auf dieser Kopie kann man dann auch lustig comitten ABER diese Commits werden die Anderen nicht sehen, solange man die nicht wie oben comitted. bei GIT heisst das Comitten dann aber PUSHEN. Also GIT arbeitet eigntlich. zweistufig!
  1. Zunächst "cloned" man das Modul und holt es sich vom EXTERNEN repository, auf das alle Zugreifen. Dadurch wird ein lokales Repo erstellt! (Wichtiger Unterschied zu SVN!)
  2. Dann nimmt Änderungen vor und checkt diese wieder ein. (git commit <file>) Aber Achtung, dieser Commit checkt nur in das LOKALE Repository ein. Alle Leute die auf das Zentrale repo (hier bei Makerconnect) zugreifen sehen diese Änderungen da noch nicht!
  3. Ist man dann mit allen lokalen Änderungen fertig, dann muss man die auf das EXTERNE Repository übertragen. Das erfolgt indem man das bei GIT "pushed" (git push). Erst dann werden alle lokalen Änderungen auch in das Externe repository - auf das alle User zugreifen - überführt und auch von den Anderen Usern Nutzbar!
  4. Ein bereits bestehendes lokales Repository soll ja auch mal wieder mit den Änderungen vom Externen aktualisiert werden,. Das erfolgt eben dann dadurch dass man diese Änderungen "reinzieht" (git pull)
Puh, so viel zur Theorie ;-) Wie sieht das nun in der Praxis aus?

Für Windows existiert ein sehr geniales Projekt namens "Tortoise", welches sowohl SVN (https://tortoisesvn.net), als auch GIT unterstützt (https://tortoisegit.org/). Ist das installiert erhält man im Exploreer zus. Funktionen, die u.A. gleich anzeigen, in welchem Stand eine bereits ausgecheckte Datei ist (Wurde verändert, ist Aktuell, ist nicht Teil des Repos etc.)

Außerdem reichert es den Explorer mit einem Eintrag im Kontextmenü an, über den man einen RepoBrowser erreicht, Files (in einer Version) hinzufügt, oder aus dieser löscht oder aber man kann sich die Änderungen zu anderen Versionen bequem anzeigen lassen (Diff), etc.

SVN oder GIT?

Für Dirk (und mich?) stellt sich nun die Frage welche Art von Server wir denn nun installieren? Ich habe auf meinem Linux Server derzeit lediglich einen Subversion Server installiert, könnte aber mal testen, wie man einen GIT Server einrichtet.

GitHub verwendet - wie der Name schon sagt - GIT und ich hätte nichts dagegen, wenn wir das mal versuchen.

@Dirk: Sag mal - unter welchem OS läuft denn der makerconnect? Ist das Linux oder Windows?

Ich werde mal die Tage versuchen einen GIT-Testserver auf meinem lokalen Server (oder meinem Beaglebone) aufzusetzen. Den könnte ich dann mal per dyndns ins Netz bringen und dann verwenden wir den mal zum "Spielen". Wenn das dann klappt, dann versuchen wir das auf Deinem Server. Was hältst Du von dem Vorschlag?

Währenddessen könnten wir uns ja mal überlegen, wie wir das Ganze "filetechnisch" strukturieren. Also was / wie da eiegntlich alles versioniert werden soll. Es war ja zunächst die Rede von Eagle Libs. Wie schaut's mit Eagle Projekten aus, Code-Snippets? Sollen wir die nach Architekturen trennen? Atmel / AVR / ARM etc. ?

Ist der Server erst mal Aufgesetzt ist das aber keine große Sache mehr, man sollte sich aber schon mal Gedanken drüber machen... ;-)

Bin auf Eure Ideen gespannt! :)

Viele Grüße aus München,

- Peter -
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Dirk
Hi Peter,

zunächst einmal vielen Dank für die ausführlichen und vielen Erklärungen!

Das muss ich jetzt erst mal alles durcharbeiten, wahrscheinlich am Wochenende :)

@Dirk: Sag mal - unter welchem OS läuft denn der makerconnect? Ist das Linux oder Windows?

Unser makerconnect Server läuft unter Linux.

Ich werde mal die Tage versuchen einen GIT-Testserver auf meinem lokalen Server (oder meinem Beaglebone) aufzusetzen. Den könnte ich dann mal per dyndns ins Netz bringen und dann verwenden wir den mal zum "Spielen". Wenn das dann klappt, dann versuchen wir das auf Deinem Server. Was hältst Du von dem Vorschlag?

Ja das kannst du machen, finde ich eine gute Idee. Falls es sinnvoll oder hilfreich ist und du gleich direkt mit dem Server testen möchtest, könnte ich einen Bereich für den Git-Server einrichten. Ich denke du bräuchstest hier Domain bzw. Subdomain, FTP Zugang und MySQL Datenbank.

Währenddessen könnten wir uns ja mal überlegen, wie wir das Ganze "filetechnisch" strukturieren. Also was / wie da eiegntlich alles versioniert werden soll. Es war ja zunächst die Rede von Eagle Libs. Wie schaut's mit Eagle Projekten aus, Code-Snippets? Sollen wir die nach Architekturen trennen? Atmel / AVR / ARM etc. ?

Ja, dies finde ich gut. Ich würde es im Prinzip auch so einteilen ...
  • Eagle Libs
  • Eagle Projekte
  • Code-Snippets oder auch Projekte (?), eventuell getrennt nach Sprache und Architektur.
Vielleicht hat ja noch jemand weitere Ideen hierzu :)

Dirk :ciao:
 
Man kann doch auch einen anderen Port nutzen, mache ich bei mir so. Ich selbst nutze SVN. Oder einfach eine Subdomain, wie https : / / svn . makerconnect . de
Subdomains kosten ja idR nichts.
 
Hmm...

das wird erhebliche Überschneidungen mit dem Ressourcen-Bereich geben, meiner Meinung nach...
Lädt man etwas nun als Ressource oder ins Repository hoch?

Zwiegespalten bin ich auch bei der Ermächtigung, wer da was ändern darf (oder kann man das Einschränken? )

Code-Schnipsel sind mMn trotzdem weiterhin im Forum selbst am besten aufgehoben - ich sehe uns ja eigentlich eher als Selbstlern-Motivatoren - mit den Repositories scheint das ja eher auf komplett lauffähige Lösungen bzw Module hinauszulaufen, also fertigen Code.
 
Sicher gibt es "Überschneidungen" zu den Ressourcen.

Bei den Ressourcen arbeitet ja eher eine Person an der Ressource, im aktuellen Beispiel könnte das eine Eagle Lib sein. In der Ressouce kann ganz normal diskutiert werden, wie im Forum selbst. Bisher hat dies aber noch niemand genutzt, auch werden Ressourcen eher selten erstellt, die User bleiben eher im Forum, es verhält sich ähnlich wie damals beim Blog. Bei den Ressourcen haben wir hier aber viel mehr Möglichkeiten, das ist für Projekte oder Tutorials eigentlich ideal für uns.

Ob sich die Eagle Lib nun im Forumbereich oder im Ressourcen-Bereich befindet, ist Geschmacksache und das kann man jederzeit ändern bzw. verschieben. Eventuell wäre es auch möglich beides (Ressouce und git) zu "verbinden". Ich habe die Eagle Lib erst einmal in den Forenbereich gestellt, eigentlich aus den oben genannten Gründen ... eine Diskussion in einer Ressource kommt nicht zu Stande, da muss ich die Lib auch nicht "starten" und online stellen.

Wie man das beim git mit Userrechten realisieren könnte, weiß ich auch noch nicht. Das ist die eine Sache. Die zweite Sache, es müsste sich irgendwie ein bisschen in das Forum vom Design und der Bedienung integrieren lassen (zb. Logo, Menüpunkte). Ich muss mich damit auch erst mal befassen. Leider finde ich aktuell sehr wenig Zeit, mich mit der Theorie zu befassen. Ich kann mich also nicht in das ganze reinarbeiten und Dokumentationen durcharbeiten. Wenn es nicht so viel Aufwand ist, könnte man ggf. eine Testinstallation machen und schauen, inwieweit man es für uns verwenden kann. Auf keinen Fall möchte ich etwas übers Knie brechen! Wenn ich mehr Zeit hätte, würde ich es mal selber installieren, erst mal unabhängig vom Forum ... aber das ist leider nicht der Fall.

Dirk :ciao:
 
Hallo Dirk,
Hi Peter,

zunächst einmal vielen Dank für die ausführlichen und vielen Erklärungen!

Das muss ich jetzt erst mal alles durcharbeiten, wahrscheinlich am Wochenende :)
Gerne! :)
Unser makerconnect Server läuft unter Linux.


Ja das kannst du machen, finde ich eine gute Idee. Falls es sinnvoll oder hilfreich ist und du gleich direkt mit dem Server testen möchtest, könnte ich einen Bereich für den Git-Server einrichten. Ich denke du bräuchstest hier Domain bzw. Subdomain, FTP Zugang und MySQL Datenbank.

Linux ist schon mal sehr fein... :)

Ich habe am Wochenende mich mal mit der Installation eines GIT-Servers beschäftigt und auch mal einen Solchen unter meinem Server (x86 Maschine unter Linux), als auch auf meinem kleinen BeagleboneBlack eingerichtet.

Was mich überraschte ist, dass man um an diesen via ssh ranzukommen erstaunlich wenig an zus. Ressourcen / Pakete braucht. Nicht mal eine Datenbank! Eine Solche bringt git nämlich schon selbst mit. ;-)

Was benötigt man?
  • Das git-Paket (sudo apt-get install git)
  • Eine neue Gruppe (habe sie git genannt)
  • Einen laufenden ssh daemon
  • Einen "Git-User" und Gruppe als "Besitzer des Repos"
Installation eines GIT-Servers "Schrift für Schritt":
(ich nehme hier mal an, dass das GIT-Repository auf "/srv/git" liegt)
  1. Neuen user 'git' und ebendieser Gruppe 'git' einrichten (sudo adduser --disabled-password --shell /usr/bin/git-shell gituser) Der user git ist u.A. der Besitzer des Repositories
  2. Password für user git einrichten (sudo passwd git)
  3. Ort des Repos festlegen (habe hier mal /srv/git gewählt) (sudo mkdir -p /srv/git)
  4. Dort hin wechseln (cd /srv/git)
  5. Ein leeres GIT-Repo an dieser Stelle initialisieren (sudo git init --bare)
  6. Eigentümer und Gruppe 'git' auf dieses Repo setzen (sudo chown -R git:git ./)
  7. Zugriff 'rwx' für Eigentümer und Gruppe, 'rx' für alle Anderen (chmod 775 git). D.h Alle dürfen lesen, aber nur Mitglieder der Gruppe git darf schreiben - und freilich auch der Eigentümer 'git' selbst.
Danach hat man auch schon einen Server eingerichtet.

Wie gesagt habe ich das schon auf meinen beagleboard gemacht. Dort habe ich auch schon ein Projekt (meine private Eagle Bauteilbibliothek) eingecheckt.

Wer mag, möge mir eine PM an hdusel[at]tangerine-soft.de schicken. Dann bekommt er die Zugangsdaten.

Ich versuche dann als Nächstes mal eine Beschreibung zu erstellen, was man unter Windows einrichten muss, um mit diesem Repository zu arbeiten.

Als kleiner Tipp vorweg:

  • Für Windows empfehle ich das kostenlos erhältliche "TortoiseGIT". Das fügt sich direkt in den Windows Explorer ein.
  • Unter Linux gibt es sicher auch Lösungen, die sich in den Desktop einfügen.
    Dort kann man aber auch mit dem Kommandozeilentool 'git' arbeiten.
  • Für User, die einen Mac verwenden, existiert das kostenpflichtige "Tower" (was es übrigens auch für Windows gibt).
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)