Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich nutze SVNtoroise als repository.
Bezüglich den user.lib und instr.lib würde ich gerne wissen wie ihr dies managed damit es für das jeweilige Projekt immer die passenden xx.libs zur Verfügung hat.
Kann user.lib und instr.lib dem repository hinzugelinkt werden? Wie löst ihr denn dies?
Grüsse
GT123
24.08.2018, 20:16 (Dieser Beitrag wurde zuletzt bearbeitet: 24.08.2018 20:16 von GerdW.)
Auf der C:-Partition liegt "nur" die Standard-Installation von LabVIEW (und einige Toolkits) - alles kann man erneut installieren, nichts davon wird editiert.
"Meine" Programme (inkl. Gerätetreiber-Bibliotheken) liegen auf D: in einem "LabVIEW"-Ordner. Ein Unterordner davon nennt sich "libs" und enthält alles, was sonst unter user.lib und instr.lib landen würde. Und (nahezu) der komplette "LabVIEW"-Ordner ist in SVN comitted…
Vorteil: nur ein Ordner mit dem Source-Code.
(scheinbarer) Nachteil: man kann nicht direkt über die Funktionspalette auf diese VIs zugreifen. Man kann die Paletten aber editieren (wenn man mag) und so auch Bibliotheken aus anderen Ordnern nach Wunsch in die Paletten einbinden.
Was du auch noch bedenken solltest:
LabVIEW speichert noch mehr Daten in leider diversen Ordnern. Deine Icon-Vorlagen landen z.B. unter "Meine Dokumente" unter "LabVIEW Data" - auch etwas, was ich regelmäßig in ein Backup einbeziehe…
Ich benutze Git. Für jeden Treiber und jede Bibliothek mit Potential auf Wiederverwendung in einem eigenen Repository. Die eigentlichen Projekte liegen in einem von NI unabhängigem Ordner, für jedes Projekt einen eigenen.
Ein Projekt bindet wiederverwendbar Treiber und Bibliotheken als Submodul ein. So kann jedes Projekt auf individuelle Commits in den Submodulen referenzieren und sie in eigenen Branches weiterentwickeln ohne die anderen Projekte zu stören.
@ GerdW,
ok auch eine Variante, wenn ich es richtig verstanden habe, dann hast du ein repository für alle Projekte.
Mein Ansatz ist der, das schon jedes Projekt (App) ein repository hat, aber wie die libs einbinden?
Habe dazu jetzt erfahren das über den Hauptordner -> svn properties svn externals dazugelinkt werden können.
Entweder jeweils jede library in user.lib und instr.lib --> bedeuted je ein repository für jede library (bedeuted wohl viel Arbeit beim dazu linken)
oder einfacher den ganzen user.lib und instr.lib Ordner als jeweils ein repository dazulinken.
Wie man auf einzelne Revisions referenziert muss ich noch schauen. Oder weiss das jemand?
@ BNT,
das "wie bindest du die Bibliotheken ein" wäre jetzt meine Frage, aber da du Git verwendest bringt es mir jetzt denke ich nicht viel.
Aber grundsätzlich wäre das auch meine bevorzugte Variante.
Nehme gerne weitere Diskussionen oder Ratschläge an :-)
Grüsse
GT123
27.08.2018, 07:26 (Dieser Beitrag wurde zuletzt bearbeitet: 27.08.2018 08:02 von GT123.)
wie handhabt ihr das mit den builds, gehören die bei Euch in das repository oder nicht?
Unschön ist, dass die builds nicht sehr gut komprimiert werden in der repository (sie sind ja schon "komprimiert"). Das repository ist nach dem commit durch das build (bei mir exe und installer) deutlich grösser.
Die Zunahme der repo Grösse durch die code Änderung sehr sehr gering.
Durch den exe Ordner (35MB) wurde das repo 13MB vergrössert.
Durch den installer (20MB) wurde das repo um 15MB vergrössert.
Es macht doch schon auch Sinn die builds im repo mit zu führen, falls sich durch die LV Version oder den libs irgendwas ändert und das kompilieren nicht auf Anhieb möglich ist... so hat man immer ein backup des builds.
Aber das repo wächst dann eben in der Grösse zu stark was bei häufigen releases zum Problem wird.
Gerne höre ich Eure Meinungen und Ratschläge hierzu.
Grüsse
GT123
27.08.2018, 07:28 (Dieser Beitrag wurde zuletzt bearbeitet: 27.08.2018 08:00 von GerdW.)
Zitat:wenn ich es richtig verstanden habe, dann hast du ein repository für alle Projekte.
Nein, jedes Projekt bekommt sein eigenes SVN-Repository. Und der libs-Ordner auch.
Und immer, wenn ein Projekt auf eine neue(re) LabVIEW-Version migriert, bekommt es auch ein neues Repository in SVN.
Und zwischendrin haben wir noch Branches, wenn ein Prüfstand mal (zwischenzeitlich) auf eine komplett andere Kampagne umgebaut wird…
Den Abgleich von "Prüfstand" und "libs"-Ordner mache ich über den Timestamp des Checkins (bzw. die Revisionsnummer).
Zitat:Wie man auf einzelne Revisions referenziert muss ich noch schauen.
Checkout -> Revision wählen (statt "head")…
Vorher einfach mal ins Log für das jeweilige Projekt gucken.
Und nie vergessen: bei jedem Commit einen (aussagekräftigen) Kommentar hinterlassen!
Zitat:Es macht doch schon auch Sinn die builds im repo mit zu führen, falls sich durch die LV Version oder den libs irgendwas ändert und das kombilieren nicht auf anhieb möglich ist...
Ich habe die Executables/Installer natürlich NICHT im SVN, die Build-Definition im Projekt ist da ausreichend!
Wie ich vorgehe, wenn sich die LabVIEW-Version ändert oder etwas im libs-Ordner, findest du in der vorigen Antwort.
(Bitte zusammengehörende Diskussionen nicht auf mehrere Threads aufteilen!)
Ich meinte es eigentlich wenn es via externals (Hauptordner -> svn properties svn externals) dazugelinkt wird. Dort kann ich Revision auswählen aber die Nr. ins "peg" Feld eintragen?
Zitat:Den Abgleich von "Prüfstand" und "libs"-Ordner mache ich über den Timestamp des Checkins (bzw. die Revisionsnummer).
Ok, du machst das manuell. Ich dachte es geht auch so, dass man ja bei den externals die Revision angeben kann (was gehen sollte) und dann sollte diese externals aber auf .../LabVIEW 2014/user.lib Pfad auschecken. Das weiss ich nicht ob es geht und es würde wiederum keinen Sinn mach weil dort ja schon der "working folder" der user.lib ist.
Bei dir ist es dann so, dass du auf D: ein user.lib Ordner hast (workingfolder) und in jedem Projekt hast du wieder ein subfolder mit user.lib welchen du dann für dieses Projekt verwendest ?!
Grüsse
GT123
27.08.2018, 13:34 (Dieser Beitrag wurde zuletzt bearbeitet: 27.08.2018 13:34 von GerdW.)
Zitat:Bei dir ist es dann so, dass du auf D: ein user.lib Ordner hast (workingfolder)
Ja.
(Für jede installierte LabVIEW-Version.)
Zitat:und in jedem Projekt hast du wieder ein subfolder mit user.lib welchen du dann für dieses Projekt verwendest ?!
Nein, die Projekte einer LabVIEW-Version verwenden alle die gleiche user.lib.
Ich musste bisher wirklich äußerst selten auf eine ältere Version der user.lib zurück. Und wenn ich ein Projekt auf einen älteren Stand zurücksetzen muss (auch selten), dann werden darin dann evtl. Neuerungen der user.lib eingearbeitet.
Ist halt etwas (Mehr-)Aufwand, aber die user.lib will ich immer auf dem aktuellsten Stand halten. Wenn ein Projekt erneut kompiliert wird, soll es auf die dann aktuellsten Gerätetreiber etc. zugreifen…
(Ich behaupte nicht, dass das eine "optimale" Nutzung von SVN ist, aber für mich ist es ok.)
gut, habe ich so verstanden. Ich denke das ist sicher eine gute Variante.
Noch einen Frage zu den Icon Templates Pfad, hast du hierfür ebenfalls ein repository oder wie handhabst du das?
Unschön ist das es quasi "versteckt" ist und bei einer SVNtortoise-Backup Variante die Gefahr besteht, dass man vergisst es zu commiten.
Wer sieht schon in diesem Pfad nach und bemerkt das es nicht uptodate ist