2017-09-08 7 views
0

Laufen git ls-remote origin auf ein Repo Ich habe Zugriff auf, sehe ich Zweige der folgenden Form, mit git namespaces.Kann ein Git refspec mehrere Wildcards enthalten?

refs/namespaces/share/refs/namespaces/<username>/refs/heads/<branch-name> 

Ich möchte diese auf refs/remotes/<username>/<branch-name> zuordnen.

Diese github help page gibt ein Beispiel dafür, wie eine einfachere Version dieses Problem zu lösen, indem diese zur Ergänzung der .git/config:

[remote "origin"] 
    fetch = +refs/pull/*/head:refs/remotes/origin/pr/* 

Ich kann Dinge für meinen Fall macht die Arbeit mit:

[remote "origin"] 
    fetch = +refs/namespaces/share/refs/namespaces/USER1/refs/heads/<branch-name>:refs/remotes/origin/USER1/* 
    fetch = +refs/namespaces/share/refs/namespaces/USER2/refs/heads/<branch-name>:refs/remotes/origin/USER2/* 
    # etc 

Aber das erfordert, dass ich alle Benutzernamen im Voraus kenne. Leider mit zwei * s nicht funktioniert:

[remote "origin"] 
    fetch = +refs/namespaces/share/refs/namespaces/*/refs/heads/<branch-name>:refs/remotes/origin/*/* 

Gibt es Möglichkeit, diese Neuzuordnung zu erreichen?

Antwort

0

Nein - oder genauer gesagt, nicht kurz, ein Programm zu schreiben, um eine Reihe von fetch = Zeilen zu schreiben.

Sie könnten ein solches Programm mit einer Art Meta-Konfiguration schreiben (gespeichert in .git/config oder woanders, es ist nicht wirklich wichtig auf dieser Ebene). Das Programm würde auf der Fernbedienung git ls-remote ausführen, die entsprechenden fetch = Zeilen berechnen und .git/config aktualisieren, um sie zu enthalten.

Wenn Sie dieses Programm nennen, sagen, git-synchrofetch (dieser Name wieder auf synchromesh harken gemeint ist), können Sie es git fetch nach .git/config Aktualisierung aufrufen könnten. Dann können Sie statt git fetch origingit synchrofetch origin ausführen, um Ihre Standardabrufe zu aktualisieren und dann zu holen.

(Beachten Sie, dass das Programm git fetch auch direkt mit einer ganzen Reihe von refspecs aufrufen könnte, aber die Idee hier wäre, die meisten anderen Git-Codes wie normal funktionieren zu lassen und nur eine Resynchronisation durchzuführen, wenn Sie die Menge von denken Benutzernamen hat sich geändert.)

Verwandte Themen