Đâu là nơi thông thường để lưu trữ kho git trong cây hệ thống tệp linux?


58

Nếu tôi tương tự với việc lưu trữ một máy chủ web, tôi sẽ nói rằng dữ liệu của git nên được /var/gitlưu trữ, vì vậy kho git của tôi sẽ ở trong/var/git/myrepo

Q : Đó có phải là dự đoán đúng không?

Câu trả lời:


31

Không có câu trả lời đúng hay sai ở đây, ngoại trừ câu trả lời theo tôn giáo cá nhân của bạn và nội dung của hier(7)trang trên hệ thống của bạn.

hiertrang web Linux điển hình ; trang chủ BSD điển hìnhhier )

/var/git/*cá nhân tôi có vẻ hợp lý Đó là nơi tôi giữ của tôi.


3
Tương tự, trong thư mục của apache Arch Linux là / srv / http (thay vì / var / www như một số bản phân phối khác) vì vậy tôi đặt công cụ git của mình vào / srv / git.
trusktr

Ở đâu đó dưới / var / có vẻ hợp lý, nhưng cũng xem câu trả lời của Denis R bên dưới: serverfault.com/a/433584/45819 - anh ấy đặt nó vào / var / lib / git với những lý do chính đáng
mit

30

Đặt nó trong một thư mục (hoặc hệ thống tập tin chia sẻ) bên dưới /srv. Đây là những gì nó làm.

Thư /srvmục dành cho dữ liệu dành riêng cho trang web được cung cấp bởi hệ thống . Từ tiêu chuẩn:

Mục đích chính của việc xác định điều này là để người dùng có thể tìm thấy vị trí của các tệp dữ liệu cho dịch vụ cụ thể và để các dịch vụ yêu cầu một cây duy nhất cho dữ liệu chỉ đọc, dữ liệu có thể ghi và tập lệnh (như tập lệnh cgi) có thể được đặt một cách hợp lý. Dữ liệu chỉ được người dùng cụ thể quan tâm nên có trong thư mục chính của người dùng đó.

Phương pháp được sử dụng để đặt tên cho các thư mục con /srvlà không xác định vì hiện tại không có sự đồng thuận về cách thực hiện việc này. Một phương pháp để cấu trúc dữ liệu theo /srvgiao thức, ví dụ. ftp, rsync, www, Và cvs. Trên các hệ thống lớn nó có thể hữu ích để cấu trúc /srvbởi bối cảnh hành chính, chẳng hạn như /srv/physics/www, /srv/compsci/cvsvv Thiết lập này sẽ khác nhau từ máy chủ để lưu trữ. Do đó, không có chương trình nào nên dựa vào cấu trúc thư mục con cụ thể của /srvdữ liệu hiện có hoặc dữ liệu nhất thiết phải được lưu trữ trong /srv. Tuy nhiên, /srvphải luôn tồn tại trên các hệ thống tuân thủ FHS và nên được sử dụng làm vị trí mặc định cho dữ liệu đó.

Phân phối phải lưu ý không xóa các tệp được đặt cục bộ trong các thư mục này mà không có sự cho phép của quản trị viên.


Trên hệ thống hỗ trợ SELinux, thư mục mặc định là /var/www/gitvà repos phải nằm trong thư mục con của chúng. Hoặc, bạn có thể sử dụng, ví dụ /srv/gitvà đặt bối cảnh tệp là tương đương:

semanage fcontext -a -e /var/www/git /srv/git

5
/home/git/

Điều này thoạt nghe có vẻ hơi khác thường nhưng rất hợp lý vì thư mục này được tạo cho bạn (với quyền chính xác) khi bạn làm sudo useradd git. Bạn chỉ có thể chuyển sang người dùng git cdvà chạy ngay lập tức:

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

và đặt các khóa công khai của các đồng nghiệp của bạn vào tệp ủy quyền vừa tạo.

Sau git init --baredự án của bạn, "url" chỉ là ... chờ đợi ...

git@<server>:<project>

Gần như được đề xuất trong sách "Pro Git": git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
exic

1

Như voretaq7 đã nói, không có câu trả lời đúng hay sai về một chủ đề như vậy. Tuy nhiên, nếu bạn muốn theo dõi phần mềm, có vẻ như phần mềm cơ sở dữ liệu lưu trữ dữ liệu của họ trong

/var/lib/soft

Ví dụ, đối với Postgresql 9.1 trên debian, thư mục là

/var/lib/postgresql/9.1/

Vì vậy, tôi sẽ chọn cá nhân

/var/lib/git

1

Điều đó hoàn toàn phụ thuộc vào bạn. Tuy nhiên, tối ưu, bạn nên đặt thư mục dữ liệu git trên một phân vùng riêng hoặc thậm chí đĩa để nâng cấp hệ thống, v.v. dễ dàng hơn và tất nhiên, bạn phải đảm bảo rằng có đủ dung lượng đĩa trống.


1

Trên Arch Linux của tôi, tôi có /srv/httpapache (mặc định là hệ thống) và tôi cũng sử dụng nó cho các máy chủ http.js của mình. Tương tự, tôi quyết định chỉ đưa tất cả các kho git vào /srv/git.

Tôi sử dụng GitLab, và /srv/gitlà thư mục nhà cho git trong trường hợp đó.

Cuối cùng, tùy bạn. Tôi thấy rằng việc bám vào một định dạng tương tự như các dịch vụ khác trong bản phân phối của bạn rất dễ nhớ.


0

Nếu bạn sử dụng một số frontend để git, chỉ cần đi với bất cứ nơi nào được đóng gói bởi phân phối của bạn muốn đặt chúng. Bất cứ điều gì khác chỉ là tạo ra sự không tương thích không cần thiết.


1 / Tôi không sử dụng frontend để git 2 / Git không đi kèm với giới thiệu về nơi đặt kho git ... bất kỳ thư mục nào bạn thực hiện git init đều là kho lưu trữ git.
Samuel Rossille

1 / Bằng giao diện người dùng, tôi sẽ giả sử máy chủ git phục vụ repos. 2 / bất kỳ máy chủ nào như vậy, ngay cả khi chỉ sử dụng máy chủ HTTP sẽ có vị trí mặc định. Tất nhiên chúng ta đang nói về vị trí lưu trữ, khi bạn làm việc với mã, phần lớn .git chủ yếu nằm trong dự án.
hultqvist

0

Đầu tiên, liên quan đến đề xuất sử dụng / srv, bạn theo giả định rằng tất cả các kho git được sử dụng cho các trang web. Nó có thể đúng với bạn, nhưng bạn có thể có một phần mềm không phải là một trang web.

Thứ hai, bằng cách lưu trữ kho mã của bạn bên ngoài / var / www / html hoặc / srv / html, bạn sẽ nhận được hai lợi ích tốt. Bạn có thể tạo các liên kết tượng trưng vào repo của mình ở mọi cấp độ, giúp việc ẩn thư viện của bạn dễ dàng hơn. Ngoài ra, nếu vị trí của kho lưu trữ của bạn thay đổi, bạn không phải sửa đổi cấu hình máy chủ ảo của mình. Thay vào đó bạn chỉ cần điều chỉnh các liên kết tượng trưng của bạn.

Tôi đã sử dụng / var / repo, nhưng tôi nghĩ / var / git tốt hơn và sẽ sử dụng nó từ bây giờ.


0

Khi tôi đang tải xuống git repos để duy trì cấu hình trang web mà sau đó tôi triển khai, tôi lưu trữ chúng trong

/ data / repos / $ REPO_GROUP_OR_USER / $ REPO_NAME

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.