Ich habe die /
in den Verzeichnissen entfernt, dadurch wurde das Problem behoben
Ich finde die Lösung in einer Antwort auf eine ähnliche Frage: git ignoring .gitattributes pattern
Ein anderer Ansatz, der seit Git 2.2+ (November 2014) möglich ist, besteht darin, den Pfad zu filtern, den Sie in das Archiv aufnehmen möchten.
Siehe committe ed22b41 von Nguyễn Thái Ngéc Duy ( pclouds
) :
archive
: unterstützt Filterpfade mit glob Dieser Patch behebt zwei Probleme mit:
(glob)
(oder sogar "*.c
" ohne ":(glob)
").Als erstes vergessen wir, das 'rekursive' Flag in
struct pathspec
zu aktivieren. Ohne das wirdtree_entry_interesting()
potentielle Verzeichnisse nicht als "interessant" markieren, so dass es bestätigen kann, ob diese Verzeichnisse irgendetwas haben, das mit der Pfadangabe übereinstimmt.Die Markierungsverzeichnisse, die interessant sind, haben einen Nebeneffekt, dass wir innerhalb eines Verzeichnisses gehen müssen, um zu erkennen, dass dort nichts interessiert ist. Zu diesem Zeitpunkt hat der Code "
archive
" bereits das (leere) Verzeichnis abgelegt.
Das bedeutet viele leere Verzeichnisse im Ergebnisarchiv.Dieses Problem wird dadurch behoben, dass Verzeichnisse langsam geschrieben werden, wenn wir wissen, dass sie tatsächlich benötigt werden. Es gibt einen theoretischen Fehler in dieser Implementierung: Wir können keine leeren Bäume / Verzeichnisse schreiben, die dieser Pfadangabe entsprechen.
path_exists()
wird auch strenger gemacht, um nicht übereinstimmende Pfadangaben zu erkennen, denn wenn dieses 'rekursive' Flag aktiviert ist, stimmen wir wahrscheinlich einige Verzeichnisse ab. Der einfachste Weg ist, keine Verzeichnisse als "übereinstimmend" zu betrachten.
Beispiele:
%Vor%Tags und Links git gitattributes git-archive