Di mana tempat konvensional untuk menyimpan repositori git di pohon sistem file linux?

58

Jika saya membuat analogi dengan hosting dari server web, saya akan mengatakan bahwa data git seharusnya ada /var/git, jadi repositori git saya akan berada di/var/git/myrepo

T : Apakah itu tebakan yang tepat?

Samuel Rossille
sumber

Jawaban:

31

Tidak ada jawaban benar atau salah di sini, kecuali yang didikte oleh agama pribadi Anda dan isi halaman hier(7)manual pada sistem Anda.

hiermanual Linux tipikal ; manual BSD khashier )

/var/git/*tampaknya masuk akal bagi saya secara pribadi. Di situlah saya menyimpan milik saya.

voretaq7
sumber
3
Demikian pula, di folder Arch Linux apache adalah / srv / http (bukan / var / www seperti beberapa distro lain) jadi saya meletakkan barang-barang git saya di / srv / git.
trusktr
Di suatu tempat di bawah / var / tampaknya masuk akal, tetapi lihat juga jawaban Denis R di bawah ini: serverfault.com/a/433584/45819 - ia memasukkannya ke / var / lib / git dengan alasan yang bagus
mit
30

Letakkan di direktori (atau sistem file bersama) di bawah /srv. Ini untuk apa.

The /srvdirektori ditujukan untuk data spesifik dilayani oleh sistem . Dari standar:

Tujuan utama menentukan ini adalah agar pengguna dapat menemukan lokasi file data untuk layanan tertentu, dan agar layanan yang memerlukan satu pohon untuk data yang hanya dapat dibaca, data yang dapat ditulis dan skrip (seperti skrip cgi) dapat ditempatkan dengan wajar. Data yang hanya menarik bagi pengguna tertentu harus masuk dalam direktori home pengguna tersebut.

Metodologi yang digunakan untuk menamai subdirektori /srvtidak ditentukan karena saat ini tidak ada konsensus tentang bagaimana ini harus dilakukan. Salah satu metode untuk menyusun data di bawah /srvadalah dengan protokol, misalnya. ftp, rsync, www, Dan cvs. Pada sistem yang besar dapat berguna untuk menyusun /srvoleh konteks administratif, seperti /srv/physics/www, /srv/compsci/cvs, dll Pengaturan ini akan berbeda dari host ke host. Oleh karena itu, tidak ada program yang harus bergantung pada struktur subdirektori spesifik yang /srvada atau data yang harus disimpan /srv. Namun /srvharus selalu ada pada sistem yang sesuai FHS dan harus digunakan sebagai lokasi default untuk data tersebut.

Distribusi harus berhati-hati untuk tidak menghapus file yang ditempatkan secara lokal di direktori ini tanpa izin administrator.


Pada sistem yang diaktifkan SELinux, direktori defaultnya adalah /var/www/git, dan repo harus berada dalam subdirektori daripadanya. Atau, Anda dapat menggunakan, misalnya, /srv/gitdan mengatur konteks file menjadi setara:

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

Ini mungkin tampak agak tidak konvensional pada awalnya tetapi sangat masuk akal karena direktori ini dibuat untuk Anda (dengan izin yang benar) ketika Anda melakukannya sudo useradd git. Anda bisa langsung beralih ke pengguna git, cddan segera menjalankan:

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

dan memasukkan kunci publik dari rekan-rekan Anda ke dalam file dengan otorisasi yang baru saja dibuat.

Setelah git init --bareproyek Anda selesai, "url" baru saja ... tunggu saja ...

git@<server>:<project>
iklim
sumber
Hampir seperti direkomendasikan dalam buku "Pro Git": git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
exic
1

Seperti yang dikatakan voretaq7, tidak ada jawaban benar atau salah tentang hal itu. Namun, jika Anda ingin mengikuti softs, tampaknya softs database menyimpan datanya

/var/lib/soft

Sebagai contoh, untuk Postgresql 9.1 pada debian foldernya adalah

/var/lib/postgresql/9.1/

Jadi saya pribadi akan memilih

/var/lib/git
Denis R.
sumber
1

Semuanya terserah Anda. Namun, secara optimal, Anda harus meletakkan dir data git pada partisi atau bahkan disk yang terpisah untuk membuat pemutakhiran sistem dll. Lebih mudah dan tentu saja, Anda harus memastikan bahwa ada cukup ruang disk yang tersedia.

Sven
sumber
1

Pada Arch Linux saya, saya memiliki /srv/httpapache (yang merupakan sistem default) dan saya menggunakannya untuk server http node.js saya juga. Demikian pula saya memutuskan untuk meletakkan semua repositori git /srv/git.

Saya menggunakan GitLab, dan juga /srv/gitmerupakan folder home untuk git.

Pada akhirnya, terserah Anda. Saya menemukan bahwa menempel ke format yang mirip dengan layanan lain di distro Anda mudah diingat.

trusktr
sumber
0

Jika Anda menggunakan beberapa frontend untuk git, pergi saja ke mana pun yang dikemas oleh distribusi Anda ingin menempatkannya. Hal lain hanyalah menciptakan ketidakcocokan yang tidak perlu.

vonbrand
sumber
1 / Saya tidak menggunakan frontend untuk git 2 / Git tidak datang dengan rekomendasi di mana menempatkan repositori git ... folder mana pun yang Anda lakukan git init adalah repositori git.
Samuel Rossille
1 / Pada ujung depan saya akan menganggap server git melayani repos. 2 / server semacam itu, bahkan jika hanya server HTTP yang digunakan akan memiliki lokasi default. Tentu saja kita berbicara tentang lokasi untuk hosting, ketika Anda bekerja dengan kode. Git sebagian besar di dalam proyek.
hultqvist
0

Pertama, mengenai saran untuk menggunakan / srv, Anda berada di bawah asumsi bahwa semua repositori git digunakan untuk situs web. Ini mungkin benar untuk Anda, tetapi Anda bisa memiliki perangkat lunak yang bukan situs web.

Kedua, dengan menyimpan repositori kode Anda di luar / var / www / html atau / srv / html, Anda mendapatkan dua manfaat bagus. Anda dapat membuat tautan simbolis ke dalam repo Anda di tingkat mana saja, membuatnya lebih mudah untuk menyembunyikan perpustakaan Anda. Juga, jika lokasi repositori Anda berubah sama sekali, Anda tidak perlu mengubah konfigurasi virtual host Anda. Alih-alih, Anda hanya menyesuaikan tautan simbolis Anda.

Saya menggunakan / var / repo, tapi saya pikir / var / git lebih baik, dan akan menggunakannya mulai sekarang.

avatarofhope2
sumber
0

Ketika saya mengunduh git repos untuk menjaga konfigurasi situs yang kemudian saya gunakan, saya menyimpannya

/ data / repos / $ REPO_GROUP_OR_USER / $ REPO_NAME

yosefrow
sumber