Ich habe versucht, ein Skript mit git filter-branch zu ändern, das ein git-Repository nimmt und es in mehrere neue Verzeichnisse trennt, indem Unterordner dieses Verzeichnisses angegeben werden. Die neuen Verzeichnisse sollten nur die Commits enthalten, die ihre entsprechenden Unterordner geändert haben, daher die Verwendung von filter-branch. Mein Ziel ist es, den Filter-Zweig durch den Filter-Repo zu ändern, um eine bessere Leistung zu erzielen.
Früher wurde ein neuer Zweig $branch erstellt und dann dieser Befehl verwendet:
git filter-branch -f --prune-empty --tag-name-filter cat --subdirectory-filter $subdir $branch --tags
Gefolgt von diesem, um den Zweig zu seinem entsprechenden Repo (das denselben Namen hat) sowie die neu geschriebenen Tags zu verschieben:
git checkout $branch
ssh-agent bash -c "ssh-add ../$privateKeyName; git push $branch $branch:$branchToExtract --tags -f"
($branchToExtract ist nicht wichtig, Sie können es einfach als “Master” betrachten)
Wie bereits gesagt, habe ich versucht, filter-repo anstelle von filter-branch zu verwenden. Dies ist der Befehl, den ich verwendet habe:
git filter-repo -f --prune-empty always --subdirectory-filter $subdir --refs $branch
Und es funktioniert gut … Bis auf eine (wichtige) Sache: Wenn alles in die neuen Repos verschoben wird, sind die Tags die gleichen wie beim ursprünglichen Hauptrepo, was bedeutet, dass sie viel zu viel Inhalt (und Commits) haben und nicht was Sie sollten haben. Es ist, als würden die Tags überhaupt nicht umgeschrieben. Ich habe ein paar verschiedene Dinge wie –tag-rename ausprobiert, aber ohne Erfolg.
Jede Hilfe, was ich tun sollte, oder Hinweise darauf, was ich möglicherweise falsch mache, wäre sehr willkommen. Vielen Dank 🙂
Sie nutzen
--refs $branch
, haben Sie versucht, alle Ihre Tags hier aufzulisten? Oder arbeiten Sie immer an einem frischen Klon und schreiben Sie alle Repos neu– LeGEC
27. Juli 2020 um 10:12 Uhr