Ist es möglich, bestimmte Dateien (* .ai, * .psd) auszuschließen, wenn Sie mit Git auf bestimmte Repositories zugreifen?
Mein Bedarf besteht darin, Git für die Versionskontrolle und die Bereitstellung von Heroku zu verwenden. Wenn ich meine Grafikelemente in die Bereitstellung einbeziehe, ist die Größe des Slugs größer als gewünscht. Allerdings muss ich alle Projektdateien in mein Haupt-Repository github einbeziehen.
Der einfachste Weg, Ihr tatsächliches Problem zu lösen, ist die Erstellung einer .slugignore
-Datei im Stammverzeichnis des Repositorys, in der Dateien aufgelistet sind, die nicht in den Slug gepackt werden sollen.
Sie können eine zweite Verzweigung für die Bereitstellung bei Heroku einrichten, die keine dieser Dateien enthält, aber immer noch vom Master zusammengeführt wird. (Natürlich müssen Sie ein System für die Auflösung der Zusammenführungskonflikte erarbeiten, die Sie bekommen, wenn Sie die .ai und .psd Akten im Meister ändern).
Das Spezifische, was Sie fragen, ist unmöglich, aus dem einfachen Grund, dass Sie beim Push die genauen Commits von einem Repository zu einem anderen transferieren, und zwei Commits, die nicht den gleichen Baum haben, sind per Definition verschiedene Commits. p>
Tipp: Die neuesten Versionen von git haben eine --porcelain
-Option für git status
, was es leicht macht, Informationen wie "M file1" "DU file2" zu analysieren (modifiziert bzw. nicht zusammengefügt / gelöscht von uns). Sie könnten einen Git-Merge-Wrapper für Ihren Deployment-Zweig schreiben, der die Zusammenführung versucht und automatisch die erwarteten Konflikte bereinigt:
(Der Grund, warum ich $NF
anstelle von ausgedruckt habe, ist, dass wenn die Datei umbenannt wird, sie wie "DU original_name - & gt; neuer_name" aussieht und die Kopie in der Arbeitsbaumstruktur nicht neu ist ursprünglicher_name.)
Natürlich könnte das Skript in Ihrer Situation komplexer werden - Sie könnten nur nach bestimmten Erweiterungen suchen (fügen Sie sie dem einschränkenden awk-Muster hinzu), oder Sie können sogar die gesamte Ausgabe in einem Perl-Skript erfassen, so dass Sie einfach etwas tun können mehr Phantasie Logik ...
Tags und Links ruby-on-rails git github heroku