Wo ist der herkömmliche Ort zum Speichern von Git-Repositorys in einem Linux-Dateisystembaum?

58

Wenn ich eine Analogie mit dem Hosting eines Webservers mache, würde ich sagen, dass die Daten von Git in sein sollten /var/git, also würde mein Git-Repository in sein/var/git/myrepo

F : Ist das die richtige Vermutung?

Samuel Rossille
quelle

Antworten:

31

Hier gibt es keine richtige oder falsche Antwort, außer der, die von Ihrer persönlichen Religion und dem Inhalt der hier(7)Manpage auf Ihrem System vorgegeben wird .

typische Linux- hierManpage ; typische BSD- hierManpage )

/var/git/*scheint mir persönlich vernünftig. Dort behalte ich meine.

voretaq7
quelle
3
Ebenso befindet sich im Apache-Ordner von Arch Linux / srv / http (anstelle von / var / www wie bei einigen anderen Distributionen), sodass ich mein Git-Zeug in / srv / git ablege.
Trusktr
Irgendwo unter / var / scheint vernünftig, aber auch unter Antwort Denis R sehen: serverfault.com/a/433584/45819 - er setzt es in / var / lib / git mit guten Gründen
mit
30

Legen Sie es in ein Verzeichnis (oder in ein freigegebenes Dateisystem) unter /srv. Dafür ist es da.

Das /srvVerzeichnis ist für standortspezifische Daten vorgesehen, die vom System bereitgestellt werden . Aus dem Standard:

Der Hauptzweck dieser Angabe besteht darin, dass Benutzer den Speicherort der Datendateien für einen bestimmten Dienst finden und dass Dienste, die einen einzigen Baum für schreibgeschützte Daten, beschreibbare Daten und Skripte (z. B. CGI-Skripte) benötigen, sinnvoll platziert werden können. Daten, die nur für einen bestimmten Benutzer von Interesse sind, sollten im Ausgangsverzeichnis dieses Benutzers abgelegt werden.

Die Methode zur Benennung der Unterverzeichnisse von /srvist nicht festgelegt, da derzeit kein Konsens darüber besteht, wie dies erfolgen soll. Eine Methode zur Strukturierung von Daten /srvist die Protokollierung, z. ftp, rsync, www, Und cvs. Bei großen Systemen kann es nützlich sein , strukturieren /srvvon administrativem Kontext, wie /srv/physics/www, /srv/compsci/cvsetc. Diese Einstellung von Hosts unterscheiden zu hosten. Daher sollte sich kein Programm auf eine bestimmte Unterverzeichnisstruktur von /srvvorhandenen oder notwendigerweise in gespeicherten Daten stützen /srv. Sollte /srvjedoch auf FHS-konformen Systemen immer vorhanden sein und sollte als Standardspeicherort für solche Daten verwendet werden.

Distributionen müssen darauf achten, lokal platzierte Dateien in diesen Verzeichnissen nicht ohne Administratorrechte zu entfernen.


Auf einem SELinux-fähigen System lautet das Standardverzeichnis /var/www/gitund Repos sollten sich in dessen Unterverzeichnissen befinden. Oder Sie können z. B. /srv/gitden Dateikontext so festlegen, dass er äquivalent ist:

semanage fcontext -a -e /var/www/git /srv/git
Michael Hampton
quelle
5
/home/git/

Dies mag auf den ersten Blick etwas unkonventionell erscheinen, ist aber sehr vernünftig, da dieses Verzeichnis für Sie erstellt wurde (mit den richtigen Berechtigungen) sudo useradd git. Sie können einfach zum Benutzer git wechseln cdund sofort ausführen:

$ mkdir .ssh; chmod 700 .ssh
$ touch .ssh/authorized_keys; chmod 600 .ssh/authorized_keys

und legen Sie die öffentlichen Schlüssel Ihrer Kollegen in die soeben erstellte Datei authorized_keys.

Nachdem Sie git init --bareIhr Projekt, die "URL" ist dann einfach ... warten Sie darauf ...

git@<server>:<project>
Klima
quelle
1

Wie voretaq7 bereits sagte, gibt es zu einem solchen Thema keine richtige oder falsche Antwort. Wenn Sie jedoch Softs folgen möchten, scheinen Datenbank-Softs ihre Daten in zu speichern

/var/lib/soft

Zum Beispiel ist für Postgresql 9.1 unter Debian der Ordner

/var/lib/postgresql/9.1/

Also würde ich persönlich wählen

/var/lib/git
Denis R.
quelle
1

Es liegt ganz bei Ihnen. Optimalerweise sollten Sie das Git-Datenverzeichnis jedoch auf einer separaten Partition oder sogar auf einer Festplatte ablegen, um Systemaktualisierungen usw. zu vereinfachen, und natürlich müssen Sie sicherstellen, dass genügend Festplattenspeicher verfügbar ist.

Sven
quelle
1

Auf meinem Arch Linux habe ich /srv/httpfür Apache (das ist die Standardeinstellung des Systems) und ich benutze es auch für meine node.js http-Server. Ebenso habe ich beschlossen, nur alle Git-Repositorys in zu setzen /srv/git.

Ich benutze GitLab und /srv/gitist in diesem Fall auch der Home-Ordner für Git.

Letztendlich liegt es an Ihnen. Ich fand, dass das Festhalten an einem Format, das anderen Diensten in Ihrer Distribution ähnelt, leicht zu merken ist.

trusktr
quelle
0

Wenn Sie ein Frontend zum Gittern verwenden, gehen Sie einfach dahin, wo das von Ihrer Distribution gepackte sie platzieren möchte. Alles andere schafft nur unnötige Inkompatibilitäten.

vonbrand
quelle
1 / Ich verwende kein Frontend für Git 2 / Git wird nicht empfohlen, wo Git-Repositorys abgelegt werden sollen ... Jeder Ordner, in dem Sie git init ausführen, ist ein Git-Repository.
Samuel Rossille
1 / Vom Frontend würde ich annehmen, dass der Git-Server die Repos bedient. Jeder solche Server, auch wenn nur ein HTTP-Server verwendet wird, verfügt über einen Standardspeicherort. Natürlich sprechen wir über den Ort für das Hosting, wenn Sie mit dem Code arbeiten, befindet sich das .git meistens innerhalb des Projekts.
hultqvist
0

Erstens, in Bezug auf den Vorschlag, / srv zu verwenden, gehen Sie davon aus, dass alle Git-Repositorys für Websites verwendet werden. Es mag für Sie zutreffen, aber Sie könnten eine Software haben, die keine Website ist.

Zweitens erhalten Sie zwei Vorteile, wenn Sie Ihre Code-Repositorys außerhalb von / var / www / html oder / srv / html speichern. Sie können in Ihrem Repo auf jeder Ebene symbolische Links erstellen, um das Ausblenden Ihrer Bibliotheken zu vereinfachen. Wenn sich der Speicherort Ihres Repositorys überhaupt ändert, müssen Sie auch Ihre virtuellen Hostkonfigurationen nicht ändern. Stattdessen passen Sie einfach Ihre symbolischen Links an.

Ich habe / var / repo verwendet, aber ich denke, / var / git ist besser und werde es von nun an verwenden.

avatarofhope2
quelle
0

Wenn ich Git-Repos herunterlade, um die Site-Konfigurationen zu verwalten, die ich dann bereitstelle, speichere ich sie in

/ data / repos / $ REPO_GROUP_OR_USER / $ REPO_NAME

yosefrow
quelle