Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Git-Client mit Delphi (https://www.delphipraxis.net/189484-git-client-mit-delphi.html)

tschuerhoff 17. Jun 2016 09:54

Git-Client mit Delphi
 
Hallo zusammen,

ich arbeite derzeit an einer Anwendung, die sich selbst per Git aktualisieren soll.
Dazu habe ich einerseits die libgit2 (git2.dll) gefunden und die dazu passenden
Delphi-Bindings "git4delphi". Diese stellen die exported functions der git2.dll in
Delphi zur Verfügung. Soweit, so gut.

Im ersten Schritt möchte ich nun das Git-Repository der Anwendung auf den lokalen
Rechner klonen. Dafür gibt es laut libgit2-API-Reference eine public function "git_clone".
Diese ist aber leider keine exported function und ich kann diese nicht im Delphi-Quellcode
aufrufen.

Es erscheint mit fast so, als müsste ich das Klonen mit den, zur Verfügung stehenden,
exported functions "zu Fuß" erledigen. Was sehr mühsam erscheint.

Komischerweise steht "git_clone" in der Bindings-Variante für PHP(!) zur Verfügung.

Weiß jemand, ob ich vielleicht doch irgendwie an die git_clone-Funktion in der git2.dll
von Delphi aus heran komme?

Oder kennt jemand ein Beispiel, wie ich das Klonen mit den exported functions durchführen kann?

Bin für jede Hilfe dankbar.

Gruß
Thilo

P.S.: Es nicht darum Git als Versionskontrolle in die Delphi-IDE zu integrieren:

CarlAshnikov 17. Jun 2016 14:30

AW: Git-Client mit Delphi
 
Hi,

die Funktion git_clone wird sehr wohl von der libgit2.DLL exportiert. Solltest du mit git4delphi das hier meinen: https://github.com/libgit2/GitForDelphi , dann sind dort die Funktionen der clone.h nicht enthalten. Die fehlenden Funktionen muss man selbst definieren und binden.

Die Definition sollte ungefähr so aussehen:
Delphi-Quellcode:
git_clone = function (var repo: Pgit_repository; URL: PAnsiChar; LocalPath: PAnsiChar; Options: PGit_clone_options): integer; stdcall;
Als Optionen kann man wohl nil übergeben, dann wird GIT_OPTIONS_INIT benutzt. Ansonsten müsste man noch das entsprechende record definieren.

Hilft dir das weiter?

tschuerhoff 20. Jun 2016 12:41

AW: Git-Client mit Delphi
 
Hallo Sebastian,

vielen Dank für Deine Hilfe.
Das hat geholfen.

Allerdings war es auch so, dass die unter https://github.com/libgit2/GitForDelphi angegebene PreBuild-Version
der libgit2.dll wohl eine sehr alte Version ist, die viele Funktionen u. A. git_clone tatsächlich nicht exportiert.

Ich habe mir eine aktuelle Version besorgt und diese, da hast du völlig recht, exportiert alle nötigen Funktionen.

Gruß
Thilo


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz