
Ich habe mir den Kopf darüber zerbrochen und bin zu einer möglichen Schlussfolgerung ohne Lösung gekommen. Zunächst mein Dilemma.
Ich habe ein Projekt, in dem ich programmgesteuert ein Repo erstellen kann. Ich kann die Beschreibung des Repo bearbeiten, den Standardzweig festlegen usw. Das ist in Ordnung.
Ich verwende auch git daemon
den Ordner, in dem alle generierten Repos gespeichert sind. Hier kommt das Problem ins Spiel.
Ich kann das Repository klonen, aber der .git
Inhalt des geklonten Repository stimmt nicht mit dem Original-Repository überein.
Das Einzige, woran ich denken kann, ist, dass, wenn ichErstellenFür diese Repos verwende ich den Git-Prozess meines Systems, aber beim Klonen verwende ich den git daemon
Prozess von ... Ich bin nicht einmal sicher, ob das Sinn ergibt, und meine stundenlange Suche hat nichts ergeben.
Als Referenz ist hier der Befehl, den ich zur Aktivierung ausführe git daemon
:
git daemon --reuseaddr --port=9999 --base-path=/Users/me/repos/ --export-all --verbose --enable=receive-pack --informative-errors --detach
Hier ist ein Beispiel für einen Klonbefehl:
git clone git://localhost:9999/me/test18.git
Und hier sind die Befehle, die ich zum Erstellen der Repos ausführe:
git init
git remote add origin git://localhost:9999/me/repo.git
git symbolic-ref HEAD refs/heads/magic
# more stuff
Diese Dinge funktionieren, ich muss git daemon
meine Repos nur so bereitstellen, wie sie sind.
Hier ist ein Beispiel für den Inhalt des .git/config
von mir erstellten Repo:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git://localhost:9999/me/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "coolerbranch"]
remote = origin
merge = refs/heads/coolerbranch
Hier ist das gleiche geklonte Repo:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git://localhost:9999/me/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Wie Sie sehen, [branch ...]
stimmt der Abschnitt nicht überein.
Umgekehrt git daemon
würde ich gerne davon erfahren, wenn es noch ein anderes gibt, das ich noch nicht gefunden habe. Github hat vor einigen Jahren selbst daran gearbeitet, es dann aber aufgegeben.
Außerdem habe ich diese Frage ursprünglich auf SO gepostet, aber nach weiterer Suche auf anderen SE-Sites wurde mir klar, dass SF mehr git-daemon
-artige Fragen hat.
Beim Klonen eines Repositorys wird die Konfiguration nicht kopiert. Die Konfiguration erfolgt meist lokal auf dem Computer, Benutzer oder Verzeichnis.
Ohne dieses Wissen ging ich davon aus, dass es eine Möglichkeit gäbe, Git dazu zu bringen, die anfängliche Konfiguration beim Klonen zu synchronisieren. Die Standardeinstellungen von Git können nicht von einem Server, sondern nur vom Benutzer überschrieben werden.
Vielleicht wird Git diese Option eines Tages zulassen, höchstwahrscheinlich nicht. Na ja.
Antwort1
Ich glaube nicht, dass die geklonte .git-Datei mit dem Inhalt der .git-Datei des Servers übereinstimmen sollte. Für die Einrichtung eines Servers empfehle ich, den Anweisungen im Buch zu folgen.https://git-scm.com/book/en/v2/Git-auf-dem-Server-Git-auf-einem-Server-installieren.