Git-Unterverzeichnisfilter mit Tags

Lesezeit: 2 Minuten

Git Unterverzeichnisfilter mit Tags
Dennis

Ich versuche, ein großes Repo in mehrere kleinere aufzuteilen. Ziel ist es, einen Ordner aufzuteilen und dabei die Tags beizubehalten.

Ich habe versucht:

git filter-branch --prune-empty --subdirectory-filter my-folder develop

Diese richtig platzieren my-folder im Stammverzeichnis des neuen Projekts und behält die Tags bei. Das Auschecken eines Tags führte jedoch dazu, dass die gesamte alte Verzeichnisstruktur im neuen Repo angezeigt wurde.

Also habe ich versucht:

git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter my-folder -- --branches=develop --tags

Dies führt dazu, dass der Entwicklungszweig mit der alten Verzeichnisstruktur vorhanden ist, ABER Wenn ich ein Tag auschecke, sehe ich das Unterverzeichnis korrekt nach dem Stamm gefiltert! Die Tags sind also korrekt, aber nicht der Entwicklungszweig. Im Grunde hat es das entgegengesetzte Problem zur ersten Methode.

Ich bin ratlos, warum die zweite Methode nicht funktioniert hat. Über Hinweise würde ich mich sehr freuen!

BEARBEITEN:

Versuch das jetzt:

git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter my-folder -- --all

War zögerlich, da ich erwarte, dass dies etwas länger dauern wird. Das hat zwar länger gedauert, aber meistens funktioniert. Was hat nicht funktioniert? Nun, die älteren Tags, in denen der Ordner noch nicht erstellt wurde, wurden im Repo belassen und enthielten beim Auschecken die vollständige (sehr) alte Verzeichnisstruktur. Ich musste alle diese Tags grep und löschen. Trotzdem ist das Repo nicht so klein, wie ich erwartet hatte …

Git Unterverzeichnisfilter mit Tags
VonC

Wie ich in „Git-Befehle, die den Verlauf beschädigen/umschreiben könnten“ erwähnt habe, wird der alte Befehl git filter-branch langsam veraltet.

Das Neue nutzen git filter-repodas wäre:

 git filter-repo --path my-folder/ --to-subdirectory-filter / -- refs develop

Pushen Sie dann diesen einen Zweig in ein neues leeres Git-Repository.

Das sollte die relevanten Tags korrekt verschieben.

  • Ich werde es gleich mal angehen.

    – Denis

    21. Oktober 2019 um 8:37 Uhr

  • Ich kann nur auf 2.22.0 zugreifen. Weißt du, ob es mit dieser Version funktioniert?

    – Denis

    23. Oktober 2019 um 9:31 Uhr

  • Tatsächlich funktioniert es mit 2.22.0, aber ich werde von einem Fehler getroffen, der damit zusammenhängt, dass Python keine Nicht-Unicode-Zeichenfolgen verarbeiten kann (oder etwas in dieser Richtung). Ich befinde mich in einer relativ restriktiven Umgebung und kann leider kein Linux-Image starten, um dies für mich selbst zu lösen. Dies ist auf einer Git-für-Windows-Installation

    – Denis

    17. Dezember 2019 um 22:36 Uhr


  • @Dennis OK. Hinweis: Für Git für Windows können Sie jede gewünschte Version installieren (keine Erhöhungsberechtigung erforderlich). Git 2.24 hat jedoch einen Fehler: stackoverflow.com/a/59383810/6309

    – VonC

    18. Dezember 2019 um 6:49 Uhr

  • Ich werde Ihre Antwort zu diesem Zeitpunkt als Antwort akzeptieren. Es sieht so aus, als müsste ich es bekommen 2.23 (Danke für den Hinweis auf diesen Fehler!) sowie eine andere Version von filter-repo. Ich werde es noch einmal versuchen.

    – Denis

    18. Dezember 2019 um 10:36 Uhr

998420cookie-checkGit-Unterverzeichnisfilter mit Tags

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy