2 Stimmen

Zusammenführen von Änderungen von außerhalb eines Git-Repositorys

Ich arbeite mit einem anderen Entwickler am anderen Ende des Landes zusammen, der unser Projekt leitet und kein formales Versionskontrollsystem verwendet. Auf meiner Seite verfolge ich meinen gesamten Code in Git. Ich habe vor kurzem begonnen, zum Hauptprojekt beizutragen, und würde gerne auch die Aktualisierungen des anderen Entwicklers verfolgen können.

Wenn ich seinen aktualisierten Code erhalte, geschieht dies in der Regel in Form einer Zip-Datei. Wenn ich die Datei einfach in meinen Git-Arbeitsordner entpacke, glaubt Git, dass sich jede Datei geändert hat, vermutlich weil sich die Statusinformationen geändert haben.

Was ich gerne sehen würde, ist eine Möglichkeit, den neuen Code neben meiner Arbeitskopie zu entpacken und nur die Änderungen einzubinden. Wie kann ich das am besten machen? Da es sich um ein Powerbuilder-Projekt handelt, handelt es sich bei den meisten Dateien um Binärdateien.

Gracias.

1 Stimmen

Ist Git nicht genau dafür gedacht? Bringen Sie den Entwickler dazu, GIT zu benutzen :/

1 Stimmen

Ja, mir ist klar, dass dies trivial wäre, wenn er Git verwenden würde. Ich hoffe jedoch, dass ich einen Weg finden kann, die Vorteile für mich zu nutzen, ohne jemand anderen davon überzeugen zu müssen, seine Entwicklungspraktiken zu ändern.

7voto

VonC Punkte 1117238

Die Binärdateien sind, wenn sie in Git gespeichert sind, verpflichtet, eine neue Version zu erstellen (d.h. bei der nächsten Übergabe berücksichtigt zu werden).
Also: brauchen Sie diese Binärdateien, oder können Sie sie neu erstellen?

Was die Quellen betrifft, so ist in Git, SHA1 ist König y da das Datum der Datei (Zeitstempel) in die Berechnung einfließt Da die externen Dateien inhaltlich sehr unterschiedlich sein können (weitere Dateien, temporäre Dateien, Dateien, die ignoriert werden sollen, ...), wäre es am besten, wenn Sie dies tun:

  • in ein separates Verzeichnis entpacken
  • Verwenden Sie ein Tool wie WinMerge um Änderungen anhand des Inhalts zu erkennen, sie zusammenzuführen und dann nur die Dateien zu übertragen, die sich tatsächlich weiterentwickelt haben.
    Sie vergleichen einfach die beiden Verzeichnisse und Dateien: dasjenige, in dem Sie die Entwicklung Ihres weit entfernten Kollegen entpackt haben, und dasjenige, in dem Sie gerade arbeiten.

Dank an rq für den Hinweis, dass Zeitstempel nicht Teil der SHA1-Berechnung sind. Nur die:

  • Typ
  • Größe
  • Inhalt eines BLOBs

sind Teil von SHA1-Berechnung : alt text
(Quelle: <a href="http://alexgirard.com/git-book/assets/images/figure/object-blob.png" rel="nofollow noreferrer">alexgirard.com </a>)

Wenn Sie jedoch große Mengen von Dateien, die extern verwaltet werden, in ein Git-Repository importieren, besteht die Gefahr, dass Sie neue Dateien in von Git verwaltete Verzeichnisse einfügen und deren Inhalt und damit ihren SHA1-Schlüssel ändern, obwohl sich die alten, von Git verwalteten Dateien nicht geändert haben.
Das bedeutet, dass viele Änderungen im Baum künstlich sind, wenn es sich bei den neuen Dateien nur um temporäre Dateien oder Dateien handelt, die ohnehin ignoriert/neu erstellt/regeneriert werden sollten.

alt text
(Quelle: <a href="http://alexgirard.com/git-book/assets/images/figure/object-tree.png" rel="nofollow noreferrer">alexgirard.com </a>)

Der oben beschriebene Prozess gewährleistet lediglich eine extern Möglichkeit zu erkennen, was sich zwischen einer extern Menge von Dateien und eine von Git verwaltete Menge von Dateien und entscheiden, ob sie Teil des Git-Arbeitsverzeichnisses sein müssen oder nicht.

1voto

Jakub Narębski Punkte 286531

Prüfen Sie, ob contrib/fast-import/import-zips.py würde das tun, was Sie wollen.

1voto

poop-deck Punkte 250

Das ist, auch wenn ich mir nicht ganz sicher bin, ob das eine gute Idee ist, das, was ich in fast der gleichen Situation zu tun gedenke:

Wie wäre es, wenn Sie grundsätzlich ein Repo für sie unterhalten?

Alle Änderungen, die Sie erhalten, werden in deren Repo platziert und festgeschrieben. Dann fügen Sie deren Repo, das eine verfolgte Remote ist, in Ihres ein, wenn Sie es brauchen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X