Lưu trữ cấu hình git như một phần của kho lưu trữ


147

Tôi đang sử dụng các bộ lọc để thu thập các tập tin trong quá trình thanh toán như được mô tả ở đây . Bây giờ vấn đề là định nghĩa bộ lọc chỉ được lưu trữ trong tệp cấu hình cục bộ của tôi:

$ cat .git/config
....
[filter "dater"]
        smudge = /home/.../expand_date
        clean = perl -pe \"s/\\\\\\$Date[^\\\\\\$]*\\\\\\$/\\\\\\$Date\\\\\\$/\"

Nếu đồng nghiệp của tôi muốn hưởng lợi từ việc Datemở rộng này , họ cần sao chép định nghĩa bộ lọc của tôi. Và nếu tôi thay đổi nó, tôi cần thông báo cho họ, v.v.

Vì vậy, tôi có thể lưu trữ phần định nghĩa bộ lọc này .git/configtrong kho lưu trữ và làm cho git sử dụng nó không?


Bạn có thể thấy liên kết này hữu ích để tự động chia sẻ cấu hình toàn nhóm.
mljrg

Câu trả lời:


163

Có 3 phạm vi hỗ trợ của .gitconfigtệp : --system, --global, --local. Bạn cũng có thể tạo một tệp cấu hình tùy chỉnh và đưa nó vào một trong các tệp được hỗ trợ.

Đối với nhu cầu của bạn tùy chỉnh - là sự lựa chọn đúng đắn. Thay vì viết bộ lọc của bạn vào, .git/configbạn nên lưu nó trong .gitconfigtệp trong kho lưu trữ gốc của bạn:

your-repo/
│
├── .git/
│   ├── config
│
├── .gitconfig
│

Tạo .gitconfigbộ lọc của bạn và cam kết thay đổi. Sau đó, đồng nghiệp của bạn sẽ luôn cập nhật nó - nhưng họ sẽ phải đưa nó bằng tay. Không thể tự động bao gồm tệp cấu hình tùy chỉnh của bạn thông qua git một mình, vì nó tạo ra lỗ hổng bảo mật.

Để áp dụng cấu hình này cho một kho lưu trữ duy nhất, mỗi người dùng sẽ cần chạy lệnh sau trong your-repo/:

git config --local include.path ../.gitconfig

Hãy cẩn thận không lưu trữ dữ liệu cá nhân trong tùy chỉnh .gitconfig, như user.*, giữ những dữ liệu trong toàn cầu của bạn .gitconfig.


40
Tôi muốn tránh thông báo cho mỗi người dùng có thể rằng họ cần đưa repo .gitconfigvào người dùng của mình ~/.gitconfig. Sẽ không ai nhớ đến nó. Có cách nào để git LUÔN LUÔN đọc repo không .gitconfig.
Zaar Hai

9
@ZaarHai: Tôi đoán là không, vì điều đó sẽ nguy hiểm. (Hãy tưởng tượng nhân bản một repo mà bí danh ra lệnh với một cái gì đó "thú vị", ví dụ: xuất nội dung của thư mục nhà của bạn). Nếu bạn đã có một cái gì đó giống như một configuretập lệnh hoặc tương tự mà người dùng phải chạy, bạn có thể đặt tập hợp bao gồm (hoặc nhắc người dùng).
Hasturkun

4
@HenryBlyth dường như có một --filetùy chọn trên git config, sau đó bạn có thể đặt nó để trỏ vào repo của bạn .gitconfig. Tôi chưa thử nó, nhưng nó dường như trả lời câu hỏi của bạn. Bạn có thể đọc nó trên các tài liệu. git-scm.com/docs/git-config#FILES
theUn Unknown777

12
Trở nên tuyệt vời nếu Git không cho rằng bạn đang viết mã được phân phối bên ngoài tổ chức của mình, nơi bạn phải quan tâm đến các mối đe dọa bảo mật. Đôi khi khả năng sử dụng và tự động hóa hệ thống có mức độ ưu tiên cao hơn bảo mật.
Geordie

2
Bạn có thể lén lút thêm lệnh vào một tác vụ (giả sử bạn đang sử dụng một trình chạy tác vụ) được nhóm của bạn sử dụng thường xuyên.
Mieszko

19

Bạn không thể sử dụng .gitconfigtệp trong kho git theo mặc định, nhưng bạn có thể liên kết với tệp để cấu hình git sẽ được phiên bản.

Bạn có thể liên kết với nó như thế:

[include]
  path = ../.gitconfig

Tôi đã tạo một tập lệnh đơn giản gitconfig.shgiúp bạn thực hiện (nhanh hơn nhiều so với bản sao) + .gitconfigtập tin đơn giản vì vậy nếu bạn muốn, hãy xem bản repo này https://github.com/HoBi/dotfiles .


EDIT : Tôi đã xóa tệp, nhưng bạn có thể tìm thấy nó ở đây https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh


@XmlmXmlmX cố định. :-)
tenhobi

@HoBi có vẻ như bạn đã xóa gitconfig.sh khỏi GitHub, lý do nào khiến bạn không còn muốn nó nữa?
Novice C

1
@NoviceC Có tập tin nếu bạn muốn. github.com/HoBi/dotfiles/blob/... Tôi đã đến tin rằng bạn không nên lưu trữ .gitconfig hoặc gitconfig.sh trong bạn dự án git - đây là những thiết lập cá nhân và cần được lưu trữ trong các thiết lập toàn cầu của bạn trong ~/thư mục. Và mọi người có thể có nhu cầu khác nhau, vậy tại sao mọi người lại làm phiền với cấu hình của bạn trong git repo. :-)
tenhobi

@tenhobi có một số cấu hình có thể thú vị cho mọi người chia sẻ trong một dự án. Tôi sẽ làm như vậy cho các bí danh, với dòng mã hóa dự án
Z. Khullah
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.