So erstellen Sie einen Git-Daemon, der das von mir erstellte Repo bereitstellt

So erstellen Sie einen Git-Daemon, der das von mir erstellte Repo bereitstellt

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 daemonden Ordner, in dem alle generierten Repos gespeichert sind. Hier kommt das Problem ins Spiel.

Ich kann das Repository klonen, aber der .gitInhalt 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 daemonProzess 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 daemonmeine Repos nur so bereitstellen, wie sie sind.


Hier ist ein Beispiel für den Inhalt des .git/configvon 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 daemonwü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.


@Zoredache:

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.

verwandte Informationen