Scripte unter Versionskontrolle

  • Module oder Skins, die nicht unter Git-Kontrolle stehen, werden als Zip-Archiv gesichert.
  • Code überarbeitet/reduziert

noch offen:

  • Objekte unter Ihrem Namen speichern mit Darstellung der Verzeichnis-Struktur
  • optionale Sicherung der DB

demel

@paresy: macht es Sinn auch das media-Verzeichnis zu berücksichtigen?

Meines ist ziemlich leer


pi@ips-dev:/var/lib/symcon/media$ ll
insgesamt 24
-rw-rw-rw- 1 root root     0 Apr 13 20:56 10901.bin
-rw-rw-rw- 1 root root   110 Aug 22 20:20 11060.ipsViewMeta
-rw-rw-rw- 1 root root     0 Feb 22  2018 18691.bin
-rw-rw-rw- 1 root root     0 Apr 13 20:57 40720.bin
-rw-rw-rw- 1 root root  3464 Sep 13 09:12 Astronomy_Twilight_DayUnlimited.gif
-rw-rw-rw- 1 root root 12304 Sep 13 09:12 Astronomy_Twilight_YearUnlimited.gif

Wie groß ist das Verzeichnis „typischerweise“?

gruß
demel

Das macht definitiv sinn. Normalerweise sind dort die Multicharts drin. Und bei IPSStudio Nutzern die IPSView Dateien, welche schon sehr groß sein könnten.

paresy

eine Nachfrage:

gibt es eine Idee über die Größe? Wie Dynamisch sind die Daten?

Hintergrund der Frage: kann man eine Zip-Datei erstellen oder lieber Dateien einzeln? Ein Archiv ist natürlich erstmal handlicher - weil es binäre Daten sind, kann ich die ja auch kaum per diff Änderungen darstellen.
Aber wenn einzelne Dateien sich häufiger ändern und dann immer wieder ein großes Archiv erstellt werden muss ist das nicht so prickelnd.

Ich denke da immer besonders an die „schmaleren“ Systeme (Raspberry & co), bei die Resource (Memory & i/o) durchaus limitierend sein kann.

demel

bei mir gewachsen seit der 1.0 ca. 100 MB, weitgehend Bilder und Charts.

IPSView bei mir ca. 10 Views, Größen zwischen 1 und 10 MB, das ist jeweils eine Textdatei.

Ich würde kein ZIP erstellen bei den Media Dateien da dort keinerlei direkter Zusammenhang besteht wie bei den Modulen.

paresy

Ich bekomme das Modul nicht zum Laufen bzw. schießt es mir die IPS Console ab.

gitlab-ce auf einer VM im LAN mit http, Account angelegt, Rechte sollten passen, gleichen Account auf dem PI angelegt.

Das „lokale“ Verzeichnis ist: /mnt/backup/gitlab-ce auf einem NFS share. Dort wird etwas angelegt, was auch gut aussieht.

Im git scheint noch nichts anzukommen, scheinbar passen irgendwelche Rechte oder Pfade bei meinem git-Server noch nicht.

ips_version-control_2.jpg

ips_version-control_1.jpg

Nachdem die „lokalen“ Daten scheinbar komplett sind führt „Abgleich durchführen“ nach einer Weile mit hängender Console zweimal zum 2. Fehler.
Keine zusätzlichen Einträge im Debug des Moduls.

Wie würde ich den Abgleich stündlich automatisch machen, wenn er denn läuft?

bin gerade unterwegs.
aber

  1. der eine fehler könnte eine datei sein, die 0 bytes gross ist. hatte ich gestern gesehen ubd mache einen fix

  2. das hängen könnte auch der git-abgleich sein. das kann schon dauern
    da sieht man im ‚top‘ ein git

3.im Debug stehen alle git kommandos. könntest mir den debug per mail schicken (demel42@web.de)

  1. wenn du im FS zu dem git-repository gehst, was passiert bei git -Kommandos (git status , pull , push)?

wenn die git-url ssh-basiert ist, sind die ssh-keys ein relevanter ToDo. bei http kann man sowohl user & pw in der konfiguration angeben

der absturz des ips sagt mir erstmal nix

  • optional Verzeichnis db sichern
  • Verzeichnis media sichern
  • Fix für den Umgang mit leeren Dateien

noch offen:

  • Objekte unter Ihrem Namen speichern mit Darstellung der Verzeichnis-Struktur

fix in v1.3

Gruß
demel

hallo,

den Satz habe ich jetzt erst gelesen, sorry.

In dem README.md steht ein Beispiel-Script, das mit einem (stündlichen) Time-Event aufzurufen wären und dann den zyklischen Abgleich macht.

Bist Du mit der Einrichtung weitergekommen?

demel

Was ist der Hintergrund, dass du Datenbank in einer ZIP speicherst? Da die Daten nur fortlaufend und lesbar hinzugefügt werden, sollte das Changelog schöner sein, wenn man es nicht zippt, oder?

paresy

Sorry, ich habe gestern und heute keine Chance zum Testen. Hoffentlich kann ich das morgen fertigstellen.

hmm, keinen wirklichen Grund, Größe der Sicherung? Ist natürlich kein Problem, das umzubauen,

demel

bin deinem Vorschlag gefolgt, die DB wird nicht mehr als Monats-Archiv sondern als plain files gesichert.

demel

Blöde Frage : Funktioniert das auch wenn mein IPS unter WIndows läuft ? Die Installation für den IPS Server sieht mir doch sehr nach Linux aus

sollte eigentlich funktionieren, solang auf dem Windows-Rechner auch die git-Client-Kommandos (also git clone, pull, push …) verfügbar sind; da ich Windows nur sehr wenig benutze kann ich das nicht sagen.
Wo der Git-Server läuft ist auch egal nur habe ich definitiv keine Erfahrung mit dem Einrichten von git-Servern unter Windows.

In den Skripten verwende ich immer die php-Variable DIRECTORY_SEPARATOR, damit wird bei Linux als Trenne der / und unter WIndows \ verwendet.

Ich würde mal unter Git - GUI Clients schauen.

Wenn Du das versuchst würde ich mich über ein Feedback freuen und Information, die ich im README.md unterbringen kann

demel

Version 1.5 @ 17.09.2018 10:17

[ul]
[li]nun 2 Schaltflächen für den Abgleich (Vollständig und Schnell)
[/li][li]Vergleich von Dateien nun per sha1_file() statt Vergleich der kompletten Datei im Speicher (Problem bei großen Dateien)
[/li][li]Vergleich des Dateiinhalts nur noch optional (Performance)
[/li][/ul]

Version 1.4 @ 15.09.2018 18:50

[ul]
[li]Unterstützung von http für lokale Repositories
[/li][li]Angabe von user.name und user.email zum korrekten git config
[/li][li]nach Betätigung der Schaltflächen wird ein Popup angezeigt mit Angabe von Erfolg oder Fehlschlag
[/li][li]
[/li][/ul]

Also ich wollte nur kurz ein Lob für Demel hinterlassen - ich hab gestern das Modul mit einem Github Git-Server in Betrieb genommen - und es läuft wunderbar. Super Arbeit - weiter so!

Als Idee: Vielleicht wäre es ne coole Idee wenn man selber Ordner / Filetypen definieren könnte, welche ebenfalls vollständig (ohne Zip) versioniert werden. Ich denke hierbei insbesondere an Markdown-Files für die Dokumentation von IP-Symcon…

Gruß,
Markus

hi,

zip-Files gibt es nur
a) in webfront/user
b) in modules oder webfront/skins, wenn dort ausnahmsweise ein Modul/Skin ohne git-Kontrolle vorhanden wäre.

Einzelne Datei auszuschliessen halte ich für problematisch, denn das Verzeichnis, in dem die Dateien liegen muss ja trotzdem gepackt werden.

Was ich mir vorstellen kann ist folgendes: in webfront/user wird ja für jedes Verzeichnis ein zip-File gemacht. Ich könnte mir überlegen, das man die Verzeichnisse aus webfront/user, die nicht gesicherteren sollen als Liste angeben kann.

Dann kann man ja das Verzeichnis mit den genannten Markdown-Files ausschliessen.

demel