Anzeige:
Ergebnis 1 bis 10 von 10

Thema: git : einzelne Datei von entferntem Repo laden

  1. #1
    Registrierter Benutzer
    Registriert seit
    Apr 2008
    Beiträge
    346

    git : einzelne Datei von entferntem Repo laden

    Vielleicht kennt sich ja jemand etwas mit git aus.

    Ich habe da jetzt das Problem, daß ich mit ArchLinux' pacman mit wget manche Dateien nicht herunterladen kann. Jetzt wollte ich das mit dem Befehl git fetch versuchen. Also den kompletten Branch master kann ich mit
    Code:
    git fetch entfernetes-repo master
    herunterladen.
    Gibt es da eine Möglichkeit, nur eine bestimmte Datei aus dem Branch master zu holen ? Vielleicht auch irgendwie mit tags ?

  2. #2
    nobody.nogroup Avatar von pibi
    Registriert seit
    Jul 2002
    Ort
    Winterthur (CH)
    Beiträge
    2.374
    Zitat Zitat von delix Beitrag anzeigen
    Gibt es da eine Möglichkeit, nur eine bestimmte Datei aus dem Branch master zu holen ?
    Wenn das Repo niicht allzu gross ist, kannst Du mit
    Code:
    git clone git://...
    das komplette Repo auf Deine Platte kopieren und das gewuenschte File dann rauspicken.

    Gruss Pit.

  3. #3
    Registrierter Benutzer
    Registriert seit
    Apr 2008
    Beiträge
    346
    ja, das ist mir schon klar -- aber genau das möchte ich vermeiden.
    Konkret geht es da um das hier .
    Was dabei so komisch ist : beimanchen Dateien geht's mit wget, bei anderen nicht, und das hängt eben nicht unbedingt mit der Dateigröße zusammen.
    Ich suche da jetzt einfach eine halbwegs praktikable Lösung, pacman und wget/git unter einen Hut zu bringen. Ich hab da schon an ein Skript gedacht, das zuerst die Datei herunterlädt und dann mit pacman -U installiert. Aber auch dazu muß ich ja irgendwie den Pfad zu einer herunterladbaren Datei finden.....
    Geändert von delix (03.06.12 um 22:18 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    Apr 2005
    Beiträge
    108
    Google ist dein Freund. Erster Treffer führt nach StackOveflow. Und die zweite Antwort macht das was du willst.

  5. #5
    Registrierter Benutzer
    Registriert seit
    Apr 2008
    Beiträge
    346
    Ah, danke !
    Da habe ich wohl völlig falsch gegooglet. Das mit dem RAW file funktioniert ja nicht.
    Die Sachen mit git show und git archive sind aber echt vielversprechend. Werd ich morgen ausprobieren.
    Thx again.

  6. #6
    Registrierter Benutzer
    Registriert seit
    Apr 2008
    Beiträge
    346
    Der aktuelle Zwischenstand :
    git show funktioniert nicht, da das Kommando nicht auf entfernte Repos zugreifen kann (die Option ist ganz einfach nicht implementiert)

    git archive fuktioniert nicht, da dieser Server das Kommando git upload-archive nicht kennt (also der Server das nicht unterstützt)

    git clone --depth ? weiß ich nicht, aber das heißt doch auch, daß das ganze Repo vom neuesten Stand bis zur angegebenen Tiefe geklont wird. In meinem Fall also sehr wahrscheinlich immer das vollständige Repo, da ich ja nicht weiß, auf welcher Tiefe die Datei angelegt worden war -- oder verstehe ich da was falsch ?

    ich probiert's jetzt nochmal mit git fetch; vielleicht hat da ja noch jemand einen Tipp.....
    Geändert von delix (04.06.12 um 12:40 Uhr)

  7. #7
    nobody.nogroup Avatar von pibi
    Registriert seit
    Jul 2002
    Ort
    Winterthur (CH)
    Beiträge
    2.374
    Zitat Zitat von delix Beitrag anzeigen
    ich probiert's jetzt nochmal mit git fetch; vielleicht hat da ja noch jemand einen Tipp.....
    Diese Kommandos zum Synchronisieren funktionieren nur, wenn Du bereits mindestens einmal Kontakt zum Remote-Server aufgenommen hast (git clone .....) und Du dann aus Deinem lokalen Directory (dort, wo sich auch das Directory .git befindet) diesen Befehl aufrufst.

    Mit
    Code:
    git checkout filename
    kannst Du dann auch ganz gezielt ein File abrufen und Dein lokal vorhandenes File ueberschreiben.

    Was spricht eigentlich dagegen, das komplette fremde Repo auf der lokalen Platte zu haben? Ein
    Code:
    git pull
    synchronisiert es dann einfach und schnell mit dem fremden.

    Gruss Pit.

  8. #8
    Registrierter Benutzer
    Registriert seit
    Apr 2005
    Beiträge
    108
    Bei dem Suchergebnis stand doch ganz eindeutig, dass du um ein git clone nicht herum kommst. Es steht dort aber auch, dass ein "git clone -n --depth 1" dafür sorgt, dass nicht die vollständige History geladen wird und auch kein checkout durchgeführt, sodass keine unnötigen blobs geladen werden. Ein "man git-clone" hätte das wunderbar erklärt.

  9. #9
    Registrierter Benutzer
    Registriert seit
    Apr 2008
    Beiträge
    346
    Was spricht eigentlich dagegen, das komplette fremde Repo auf der lokalen Platte zu haben?
    letztlich geht es darum, mit dem Paketmanager pacman ein fertiges Paket herunterzuladen und zu installieren. Und dann ist es aus meiner Sicht suboptimal, das komplette Repostatt nur das interessante Paket herunterzuladen und zu installieren (Netzwerkbelastung + Festplattenbelegung).
    Wie gesagt, mir war schon klar, daß es so gehen wird. AbereineAlternative wär mir da schon lieber.

    Bei dem Suchergebnis stand doch ganz eindeutig, dass du um ein git clone nicht herum kommst. Es steht dort aber auch, dass ein "git clone -n --depth 1" dafür sorgt, dass nicht die vollständige History geladen wird und auch kein checkout durchgeführt, sodass keine unnötigen blobs geladen werden. Ein "man git-clone" hätte das wunderbar erklärt.
    hab ich natürlich alles gelesen (und noch einiges mehr). So versteh/interpretier ich das aber (immer noch) nicht.

    Die Idee war, per Skript temporär ein locales Repo neu zu erzeugen, die Datei da reinzuladen, in ein anderes Verzeichnis zu verschieben und das temporäre lokale Repo gleich wieder zu löschen :

    #!/bin/sh
    #
    #
    # this scripts downloads packages as binary tarball from CUR/i586
    #
    #

    # create a temporary git repository locally
    mkdir tempgitdir;
    cd tempgitdir;
    git init -q;
    git fetch git:gitorious.org/cur/i586.git master/scite-3.0.3-1-i586.pkg.tar.xz;

    # move the downloaded package
    # ......

    # delete the temporary local repo
    #.....
    ich probier da heut abend nochmal weiter rum

    Aberdanke schon einmal für's Anschauen und das Feedback. SO ganz hab ich git ja offensichtlich noch nicht verstanden.

  10. #10
    Registrierter Benutzer
    Registriert seit
    Apr 2008
    Beiträge
    346
    ich hab das jetzt so gelöst, daß ich die betreffenden Pakete jeweils in einem eigenen, separaten Branch des entfernten Repos ablegen werde.

    Dann kann ich mit einer Kombination aus git init, git pull ...<branch>,mv und pacman -U ... diesen Branch herunterladen, die Datei verschieben und installieren.
    Ein Klonen des ganzen Repos ist dann NICHT erforderlich.
    Schön ist das nicht, aber dafür machbar

    Ohne den separaten Branch scheint es wohl nicht zu gehen, da ich die Datei nicht unter Ihrem Namen ansprechen kann. Würde mich zwar wundern, wenn man das nicht irgendwie könnte, aber zumindest bisher hab ich das nicht herausbekommen.
    Geändert von delix (05.06.12 um 14:39 Uhr)

Ähnliche Themen

  1. Aus einer rpm-Datei einzelne Datei extrahieren.
    Von carnil im Forum System installieren und konfigurieren
    Antworten: 2
    Letzter Beitrag: 15.05.04, 10:16
  2. einzelne Datei aus .rpm extrahieren?
    Von Samsara im Forum Anwendungen Allgemein, Software
    Antworten: 3
    Letzter Beitrag: 31.10.03, 16:01
  3. Paßwortschutz für einzelne Datei?
    Von Turr-I-Can im Forum Sicherheit
    Antworten: 3
    Letzter Beitrag: 11.11.02, 21:03
  4. Einzelne Datei aus RPM-Archiv extrahieren
    Von detonation997 im Forum System installieren und konfigurieren
    Antworten: 2
    Letzter Beitrag: 23.08.02, 15:29
  5. Einzelne Datei vorm Löschen schützen
    Von Eisenbart im Forum Linux Allgemein
    Antworten: 16
    Letzter Beitrag: 01.05.02, 23:18

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •