WebTools Git/de: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
No edit summary
 
(48 intermediate revisions by 6 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{GuiCommand/de|Name/de=Arch Git‏‎|Workbenches=[[Arch Module/de|Arch-Arbeitsbereich]]|MenuLocation=Arch → Dienstprogramme → Commit mit Git|Shortcut=‏‎|SeeAlso=}}
<div id="itsfree" style="text-align:left;color:black;background:#f6f6f6;margin:1em 7em;padding:0.5em 2em;border:2px solid #a7d7f9;">


{{GuiCommand/de
'''Anmerkung:''' Beginnend mit FreeCAD v0.17 wurde dieses Werkzeug aus dem Arch-Arbeitsbereich entfernt und ist nun Teil des externen Webtools-Arbeitsbereichs, der über das Menü Werkzeuge → Addon-Manager installiert werden kann.</div>
|Name=WebTools Git‏‎
==Beschreibung==
|Name/de=WebWerkzeuge Git‏‎
|MenuLocation=WebWerkzeuge → Git
|Workbenches=[[WebTools_Workbench/de|Arbeitsbereich WebWerkzeuge]]
|Version=0.17
}}


{{VeryImportantMessage|Beginnend mit FreeCAD v0.17 wurde dieses Werkzeug aus dem Arbeitsbereich Arch entfernt und ist nun Teil des externen Arbeitsbereichs [[WebTools_Workbench/de|WebTools]], der über das Menü Werkzeuge → [[Image:AddonManager.svg|24px]] [[Std_AddonMgr/de|Addon-Manager]] installiert werden kann.
Dieser Befehl erlaubt die Verwaltung des aktuellen Dokuments mit [https://de.wikipedia.org/wiki/Git Git]. Git ist ein mächtiges System zur Dateiversionskontrolle, welches verschiedene Versionen von Dateien verwalten kann und den Überblick über die Änderungen behält.
}}


<span id="Description"></span>
Git ist ein komplexes Werkzeug, so dass es sinnvoll ist, die Grundlagen vor der Benutzung zu erlernen, um falsche Operationen zu vermieden, die zu Datenverlust führen können. Reichlich Literatur über Git ist verfügbar und einfach im Internet zu finden.
==Beschreibung==


Dieser Befehl erlaubt die Verwaltung des aktuellen Dokuments mit [https://de.wikipedia.org/wiki/Git Git]. GIT ist ein leistungsfähiges Dateiversionskontrollsystem, das verschiedene Dateiversionen verwalten und die Änderungen verfolgen kann.
Aktuelle Einschränkungen:


Git ist ein komplexes Werkzeug, daher solltest du dich mit den Grundlagen vertraut machen, bevor du dieses Werkzeug verwendest, um Fehlbedienungen zu vermeiden, die zu Datenverlusten führen können. Im Internet gibt es eine Fülle von Literatur über GIT, die leicht zu finden ist.
* Das Werkzeug kann bisher keine neuen Repositories anlegen. Ein existierendes lokales Repository muss bereits verfügbar sein (FreeCAD wird prüfen, ob die aktuelle Dokumentendatei in einem Repository ist)
* Das Werkzeug kann kein Branches ändern oder anlegen. Das muss manuell mit den Standard-Git-Werkzeugen getan werden.


'''Anmerkung:''' Um diesen Befehl nutzen zu können, muss das [https://github.com/gitpython-developers/GitPython gitpython]-Paket auf Deinem System installiert sein. In den meisten Linux-Distributionen ist gitpython in den Standard-Software-Repositories als ''gitpython'' oder ''python-git'' verfügbar.
'''Voraussetzung:''' Um diesen Befehl verwenden zu können, muss das [https://github.com/gitpython-developers/GitPython gitpython] Paket auf deinem System installiert sein. Auf den meisten Linux Distributionen ist gitpython in den Standard Software Repositorien als ''gitpython'' oder ''python-git'' verfügbar.


<span id="Usage"></span>
==Anwendung==
==Anwendung==


# Stelle sicher, dass die [[Report_view/de|Berichtsansicht]] geöffnet ist, da die Git Meldungen dort ausgegeben werden.
<div class="mw-translate-fuzzy">
# Speichere das aktuell aktive Dokument und stelle sicher, dass sich die gespeicherte Datei in einem bestehenden Git Repositorium befindet. Es kann sich in einem Unterverzeichnis befinden.
# Speichere das aktuelle aktive Dokument
# Menü auswählen {{MenuCommand|Web Werkzeuge → [[Image:WebTools_Git.svg|16px]] [[WebTools_Git/de|Git]]}}
# Stelle sicher, dass sich die gespeicherte Datei in einem existierenden Git-Repository befindet
# Dies öffnet ein [[Task_panel/de|Aufgabenfeld]] in der [[Combo_view/de|Combo Ansicht]].
# Wähle aus den Menü Arch → Dienstprogramme → {{KEY|[[Image:Arch CommitGit.png|16px]] [[Arch Git/de|Commit mit Git]]}}
</div>


<span id="Options"></span>
==Optionen==
==Optionen==


[[Image:Arch Git panel.jpg|right]]
[[Image:Arch Git panel.jpg|thumb|Aufgabenreiter zeigt Git Oberfläche]]


* Die '''Protokoll''' Schaltfläche klappt einen Dialog auf, in dem die aktuellsten Protokolleinträge angezeigt werden. Die Ausgabe entspricht <code>git log</code>.
* Stelle sicher, dass das '''Ausgabefenster''' geöffnet ist, denn Git-Meldungen werden dort ausgegeben
* Die '''Aktualisieren''' Schaltfläche wird das Repository auf geänderte Dateien durchsuchen. Nach dem Speichern deiner Arbeit musst du einen manuellen Refresh durchführen.
* Das Git-Werkzeug wird nur geöffnet, wenn die aktuelle Datei in einem Git-Repository gespeichert ist. Die Datei kann in einem Unterverzeichnis sein.
* Der '''Diff''' Schaltfläche wird die Unterschiede zwischen der aktuellen Version einer ausgewählten Datei und der aktuellsten im Repository gespeicherten Vorversion anzeigen. Die Ausgabe entspricht <code>git diff</code>
* Der '''Log'''-Button wird einen Dialog öffnen, in dem die aktuellsten Log-Einträge angezeigt werden
** Als Standardvorgabe wird ein "binary diff" ausgeführt, du musst das <code>fcinfo</code> einrichten, um ein "texutal diffing" durchzuführen.
* Der '''Refresh'''-Button wird das Repository auf geänderte Dateien durchsuchen
* Der '''Diff'''-Button wird die Unterschiede zwischen der aktuellen Version einer ausgewählten Datei und der im Repository gespeicherten Vorversion anzeigen
* Der '''Select all''' Schaltfläche wird alle Dateien auswählen, um sie an das Repository zu übergeben (commit)
* Der '''Select all'''-Button wird alle Dateien auswählen, um sie an das Repository zu übergeben (commit)
* Der '''Commit''' Schaltfläche wird die ausgewählten Dateien an das Repository übergeben (commit). Stelle sicher, eine Commit-Meldung zu erfassen, die die zu übergebenden Änderungen beschreiben
* Der '''Pull''' Schaltfläche wird jegliche neuen Änderungen aus dem ausgewählten entfernten (remote) Repositorium in das lokale '''herunterladen'''. Wenn die aktuell in FreeCAD geöffnete Datei durch einen Pull verändert wird, informiert eine Warnmeldung darüber, so dass die Datei entweder erneut gespeichert oder an einer anderen Stelle gespeichert werden kann
* Der '''Commit'''-Button wird die ausgewählten Dateien an das Repository übergeben (commit). Stelle sicher, eine Commit-Meldung zu erfassen, die die zu übergebenden Änderungen beschreiben
* Der '''Push''' Schaltfläche wird den/die letzten Commit/s in das entfernte Repositorium '''hochladen'''.
* Der '''Pull'''-Button wird jegliche neuen Änderungen aus dem ausgewählten entfernten (remote) Repository in das lokale '''herunterladen'''. Wenn die aktuell in FreeCAD geöffnete Datei durch einen Pull verändert wird, informiert eine Warnmeldung darüber, so dass die Datei entweder erneut gespeichert oder an einer anderen Stelle gespeichert werden kann
* Der '''Push'''-Button wird den/die letzten Commit/s in das entfernte Repository '''hochladen'''.


==Limitations==
==Aktivieren eines 'lesbaren' Diffs für FCStd-Dateien==


* Das Werkzeug kann noch keine neuen Repositorien erstellen. Du musst bereits ein lokales Repositorium angelegt haben. (FreeCAD prüft, ob sich die aktuelle Dokumentendatei in einem Git-Repositorium befindet.)
FreeCADs [[Fcstd file format/de|Fcstd-Dateiformat]] ist ein Zip-basiertes Binärformat, für das Git keine sauber lesbaren Diffs (Unterschiede) erstellen kann. Das bedeutet, dass Du nicht sehen kannst, was sich zwischen der einen und der anderen Version geändert hat und dass jede neue im Git-Repository gespeicherte Version eine vollständige Kopie der Datei ist.
* Das Werkzeug kann keine Zweige ändern oder erstellen. Dies musst du manuell mit Standard-Git-Werkzeugen machen.


<span id="Enabling_human-readable_diffs_for_FCStd_files_with_the_fcinfo_utility"></span>
Auch wenn es für das zweite Problem bisher keine Lösung gibt, kann das erste mit einem kleinen Werkzeug aus dem FreeCAD-Quellcode gelöst werden, das [https://github.com/FreeCAD/FreeCAD/blob/master/src/Tools/fcinfo fcinfo] heißt. Git kann angewiesen werden, mit dem fcinfo-Dienstprogramm einen menschlich-lesbaren Bericht einer FCStd-Datei zu drucken und beim Vergleich (diff) von zwei FCStd-Dateien stattdessen einen Vergleich der beiden fcinfo-Berichte zu erzeugen. Bitte beachte, dass dies lediglich eine visuelle 'Rückmeldung' ist, denn intern wird eine vollständige Version der Datei gespeichert.
==Aktivieren von menschenlesbaren diffs für FCStd Dateien mit dem Dienstprogramm fcinfo==

FreeCADs [[File_Format_FCStd/de|FCStd Dateiformat]] ist ein Zip-basiertes Binärformat, für das Git keine sauber lesbaren diffs (Unterschiede) erstellen kann. Das bedeutet, dass Du nicht sehen kannst, was sich zwischen der einen und der anderen Version geändert hat und dass jede neue im Git Repositorium gespeicherte Version eine vollständige Kopie der Datei ist.

Auch wenn es für das zweite Problem bisher keine Lösung gibt, kann das erste mit einem kleinen Werkzeug aus dem FreeCAD Quellcode gelöst werden, das [https://github.com/FreeCAD/FreeCAD/blob/master/src/Tools/fcinfo fcinfo] heißt. Git kann angewiesen werden, das fcinfo Dienstprogramm zu verwenden, um einen menschengerechten Bericht einer FCStd Datei auszudrucken, und wenn es aufgefordert wird, einen Vergleich zwischen zwei FCStd Dateien zu erstellen, wird es stattdessen einen Vergleich zwischen den beiden fcinfo Berichten erstellen. Bitte beachte, dass dies nur eine visuelle Rückmeldung ist, eine vollständige Kopie der Datei wird weiterhin intern gespeichert.


Beispiel eines mit fcinfo erstellten diff:
Beispiel eines mit fcinfo erstellten diff:
Line 94: Line 104:
}}
}}


Jede FreeCAD-Datei enthält eine SHA1-Prüfsumme, die sich jedes Mal beim Speichern der Datei ändert, selbst wenn der Inhalt nicht verändert wurde. Deshalb wird fcinfo immer etwas ausgeben, unabhängig davon, ob sich der Inhalt ändert.
Jede FreeCAD Datei enthält eine SHA1 Prüfsumme, die sich jedes Mal beim Speichern der Datei ändert, selbst wenn der Inhalt nicht verändert wurde. Deshalb wird fcinfo immer etwas ausgeben, unabhängig davon, ob sich der Inhalt ändert.


Zur Aktivierung der Nutzung von fcinfo (nur Linux und Mac - ToDo: Windows-Anweisungen hinzufügen)
Zur Aktivierung der Nutzung von fcinfo (nur Linux und Mac - ToDo: Windows Anweisungen hinzufügen)

=== Using fcinfo on a single Git repository ===

Dies sind die Schritte, um den Einsatz des Werkzeugs fcinfo in a repository basis zu ermöglichen.
* Die Datei fcinfo irgendwo im eigenen Systempfad speichern.
: Hinweis: Seit 2023-12-09, ist das Skript {{Incode|fcinfo}} auf Arch-Linux-Systemen im Paket {{Incode|freecad}} enthalten,[https://gitlab.archlinux.org/archlinux/packaging/packages/freecad/-/commit/4419bfbfdb670abebd7f2e6ed93194e819781f7d patch here].
* Die Datei ausführbar machen.
: Hinweis: Seit 2023-12-09, ist das Skript {{Incode|fcinfo}} auf Arch-Linux-Systemen unter {{Incode|/usr/bin/fcinfo}} zu finden.
* Eine {{Incode|.gitattributes}}-Datei im eigenen Git-Repository erstellen und folgende Zeile hinzufügen:

: {{Code|lang=text|code=
*.FCStd diff=fcinfo
}}

* Add the following lines to the {{Incode|.gitconfig}} file in your home directory:

: {{Code|lang=text|code=
[diff "fcinfo"]
textconv = /path/to/fcinfo
}}

* Alternatively, if you want to invoke fcinfo with arguments (e.g., {{Incode|--gui}}) use [https://stackoverflow.com/questions/55601430/how-to-pass-a-filename-argument-gitconfig-diff-textconv this approach]:

: {{Code|lang=text|code=
[diff "fcinfo"]
textconv = sh -c '/path/to/fcinfo --gui "$0"'XD
}}

Note that if you are working in a collaborative project you may want to include the fcinfo tool in your repository, in that case the path is relative to your Git repository root directory.

=== Enabling fcinfo globally ===

If you are working on many projects that need fcinfo tool you can enable it globally for your user.
* Create a {{Incode|$HOME/.config/git/attributes}} file and add the following line on it:

: {{Code|lang=text|code=
*.FCStd diff=fcinfo
}}

* Add the following lines to the {{Incode|$HOME/.config/git/config}} file:
** It's equivalent command is {{Incode|git config --global diff.fcinfo.textconv "/path/to/fcinfo"}}.
** Arch Linux users using {{Incode|freecad}} package can use {{Incode|textconv = fcinfo}} since it's already installed on their system.

: {{Code|lang=text|code=
[diff "fcinfo"]
textconv = /path/to/fcinfo
}}


Note that any configuration made in a repository basis overrides global configurations.
# Speichere die fcinfo-Datei irgendwo im System-Pfad
# Mache sie ausführbar
# Erstelle eine .gitattributes-Datei in Deinem Git-Repository
# Füge die folgende Zeile hinzu:
*.FCStd diff=fcinfo

Latest revision as of 10:26, 10 April 2024

WebWerkzeuge Git‏‎

Menüeintrag
WebWerkzeuge → Git
Arbeitsbereich
Arbeitsbereich WebWerkzeuge
Standardtastenkürzel
Keiner
Eingeführt in Version
0.17
Siehe auch
Keiner

Beginnend mit FreeCAD v0.17 wurde dieses Werkzeug aus dem Arbeitsbereich Arch entfernt und ist nun Teil des externen Arbeitsbereichs WebTools, der über das Menü Werkzeuge → Addon-Manager installiert werden kann.

Beschreibung

Dieser Befehl erlaubt die Verwaltung des aktuellen Dokuments mit Git. GIT ist ein leistungsfähiges Dateiversionskontrollsystem, das verschiedene Dateiversionen verwalten und die Änderungen verfolgen kann.

Git ist ein komplexes Werkzeug, daher solltest du dich mit den Grundlagen vertraut machen, bevor du dieses Werkzeug verwendest, um Fehlbedienungen zu vermeiden, die zu Datenverlusten führen können. Im Internet gibt es eine Fülle von Literatur über GIT, die leicht zu finden ist.

Voraussetzung: Um diesen Befehl verwenden zu können, muss das gitpython Paket auf deinem System installiert sein. Auf den meisten Linux Distributionen ist gitpython in den Standard Software Repositorien als gitpython oder python-git verfügbar.

Anwendung

  1. Stelle sicher, dass die Berichtsansicht geöffnet ist, da die Git Meldungen dort ausgegeben werden.
  2. Speichere das aktuell aktive Dokument und stelle sicher, dass sich die gespeicherte Datei in einem bestehenden Git Repositorium befindet. Es kann sich in einem Unterverzeichnis befinden.
  3. Menü auswählen Web Werkzeuge → Git
  4. Dies öffnet ein Aufgabenfeld in der Combo Ansicht.

Optionen

Aufgabenreiter zeigt Git Oberfläche
  • Die Protokoll Schaltfläche klappt einen Dialog auf, in dem die aktuellsten Protokolleinträge angezeigt werden. Die Ausgabe entspricht git log.
  • Die Aktualisieren Schaltfläche wird das Repository auf geänderte Dateien durchsuchen. Nach dem Speichern deiner Arbeit musst du einen manuellen Refresh durchführen.
  • Der Diff Schaltfläche wird die Unterschiede zwischen der aktuellen Version einer ausgewählten Datei und der aktuellsten im Repository gespeicherten Vorversion anzeigen. Die Ausgabe entspricht git diff
    • Als Standardvorgabe wird ein "binary diff" ausgeführt, du musst das fcinfo einrichten, um ein "texutal diffing" durchzuführen.
  • Der Select all Schaltfläche wird alle Dateien auswählen, um sie an das Repository zu übergeben (commit)
  • Der Commit Schaltfläche wird die ausgewählten Dateien an das Repository übergeben (commit). Stelle sicher, eine Commit-Meldung zu erfassen, die die zu übergebenden Änderungen beschreiben
  • Der Pull Schaltfläche wird jegliche neuen Änderungen aus dem ausgewählten entfernten (remote) Repositorium in das lokale herunterladen. Wenn die aktuell in FreeCAD geöffnete Datei durch einen Pull verändert wird, informiert eine Warnmeldung darüber, so dass die Datei entweder erneut gespeichert oder an einer anderen Stelle gespeichert werden kann
  • Der Push Schaltfläche wird den/die letzten Commit/s in das entfernte Repositorium hochladen.

Limitations

  • Das Werkzeug kann noch keine neuen Repositorien erstellen. Du musst bereits ein lokales Repositorium angelegt haben. (FreeCAD prüft, ob sich die aktuelle Dokumentendatei in einem Git-Repositorium befindet.)
  • Das Werkzeug kann keine Zweige ändern oder erstellen. Dies musst du manuell mit Standard-Git-Werkzeugen machen.

Aktivieren von menschenlesbaren diffs für FCStd Dateien mit dem Dienstprogramm fcinfo

FreeCADs FCStd Dateiformat ist ein Zip-basiertes Binärformat, für das Git keine sauber lesbaren diffs (Unterschiede) erstellen kann. Das bedeutet, dass Du nicht sehen kannst, was sich zwischen der einen und der anderen Version geändert hat und dass jede neue im Git Repositorium gespeicherte Version eine vollständige Kopie der Datei ist.

Auch wenn es für das zweite Problem bisher keine Lösung gibt, kann das erste mit einem kleinen Werkzeug aus dem FreeCAD Quellcode gelöst werden, das fcinfo heißt. Git kann angewiesen werden, das fcinfo Dienstprogramm zu verwenden, um einen menschengerechten Bericht einer FCStd Datei auszudrucken, und wenn es aufgefordert wird, einen Vergleich zwischen zwei FCStd Dateien zu erstellen, wird es stattdessen einen Vergleich zwischen den beiden fcinfo Berichten erstellen. Bitte beachte, dass dies nur eine visuelle Rückmeldung ist, eine vollständige Kopie der Datei wird weiterhin intern gespeichert.

Beispiel eines mit fcinfo erstellten diff:

diff --git a/testhouse.FcStd b/testhouse.FcStd
index 08077b6..985b1d8 100644
--- a/testhouse.FcStd
+++ b/testhouse.FcStd
@@ -1,26 +1,25 @@
-Document: /tmp/43un09_testhouse.FcStd (442K)
-   SHA1: 67c1985a45d93cba57d5bf44490897aba460100d
+Document: /tmp/zfXoDd_testhouse.FcStd (370K)
+   SHA1: db1cb5fca18af7bfdca849028f40550df4d845cb
    Comment : This is a test house to showcase FreeCAD's BIM worflow and IFC export capabilities
    Company : uncreated.net
    CreatedBy : Yorik van Havre
    CreationDate : Fri May  9 12:05:54 2014 
    FileVersion : 1
    Id : 
-   Label : testhouse
-   LastModifiedBy : Yorik van Havre
-   LastModifiedDate : 2016-06-28T17:05:57-03:00
+   Label : testhouse2
+   LastModifiedBy : Yorik van Havre
+   LastModifiedDate : Sat Sep 13 20:46:36 2014
+
    License : CC-BY 3.0
    LicenseURL : http://creativecommons.org/licenses/by/3.0/
-   ProgramVersion : 0.17R7800 (Git)
-   TipName : 
+   ProgramVersion : 0.15R3989 (Git)
    Uid : 67e62d8a-6674-4358-92fe-615443be887a
-   Objects: (231)
+   Objects: (221)
        Annotation : Drawing::FeatureViewAnnotation
        Annotation001 : Drawing::FeatureViewAnnotation
        Annotation002 : Drawing::FeatureViewAnnotation
        Annotation003 : Drawing::FeatureViewAnnotation
-       Annotation004 : Drawing::FeatureViewAnnotation
-       Annotation005 : Drawing::FeatureViewAnnotation
        Array : Part::FeaturePython (9K)
        Box : Part::Box (2K)
        Building : App::DocumentObjectGroupPython
@@ -110,7 +109,7 @@ Document: /tmp/43un09_testhouse.FcStd (442K)
        Floor : App::DocumentObjectGroupPython
        Floor001 : App::DocumentObjectGroupPython
        Floor002 : App::DocumentObjectGroupPython
-       Frame : Part::FeaturePython (89K)

Jede FreeCAD Datei enthält eine SHA1 Prüfsumme, die sich jedes Mal beim Speichern der Datei ändert, selbst wenn der Inhalt nicht verändert wurde. Deshalb wird fcinfo immer etwas ausgeben, unabhängig davon, ob sich der Inhalt ändert.

Zur Aktivierung der Nutzung von fcinfo (nur Linux und Mac - ToDo: Windows Anweisungen hinzufügen)

Using fcinfo on a single Git repository

Dies sind die Schritte, um den Einsatz des Werkzeugs fcinfo in a repository basis zu ermöglichen.

  • Die Datei fcinfo irgendwo im eigenen Systempfad speichern.
Hinweis: Seit 2023-12-09, ist das Skript fcinfo auf Arch-Linux-Systemen im Paket freecad enthalten,patch here.
  • Die Datei ausführbar machen.
Hinweis: Seit 2023-12-09, ist das Skript fcinfo auf Arch-Linux-Systemen unter /usr/bin/fcinfo zu finden.
  • Eine .gitattributes-Datei im eigenen Git-Repository erstellen und folgende Zeile hinzufügen:
*.FCStd diff=fcinfo
  • Add the following lines to the .gitconfig file in your home directory:
[diff "fcinfo"]
textconv = /path/to/fcinfo
  • Alternatively, if you want to invoke fcinfo with arguments (e.g., --gui) use this approach:
[diff "fcinfo"]
textconv = sh -c '/path/to/fcinfo --gui "$0"'XD

Note that if you are working in a collaborative project you may want to include the fcinfo tool in your repository, in that case the path is relative to your Git repository root directory.

Enabling fcinfo globally

If you are working on many projects that need fcinfo tool you can enable it globally for your user.

  • Create a $HOME/.config/git/attributes file and add the following line on it:
*.FCStd diff=fcinfo
  • Add the following lines to the $HOME/.config/git/config file:
    • It's equivalent command is git config --global diff.fcinfo.textconv "/path/to/fcinfo".
    • Arch Linux users using freecad package can use {{{1}}} since it's already installed on their system.
[diff "fcinfo"]
textconv = /path/to/fcinfo

Note that any configuration made in a repository basis overrides global configurations.