2010-09-01 34 views
6

Có cách nào để thay đổi tệp đang được đẩy tới máy chủ bằng cách sử dụng server-side pre-receive hook không?Móc nhận tiền GIT

Giả sử tôi muốn thêm một cái gì đó để kết thúc của một tập tin như:

//End of Org 

mỗi lần ai đó đẩy để repo của tôi.

Có cách nào bạn có thể thay đổi tệp đến bằng cách sử dụng git hooks không?

Trả lời

4

Tôi muốn sử dụng filter driver để có thể hoạt động trên nội dung của từng tệp để kiểm tra xem dòng của bạn có ở đó không và thêm nó nếu không, trong bước thanh toán.

alt text

Đó sẽ là:

  • một kịch bản smudge
  • thể được nhân rộng khi repo của bạn được nhân bản vô tính (như trái ngược với móc mà không được sao chép qua khi nhân bản một repo trừ khi bạn sử dụng một số template directory)
+0

Tôi làm cách nào để trình điều khiển bộ lọc được sao chép vào mỗi repo khi một bản sao/kéo được thực hiện? – beast

+0

@beast: trình điều khiển bộ lọc là tệp '.gitattributes', được quản lý giống như bất kỳ tệp nào khác và được đẩy/kéo giống như bất kỳ tệp nào khác. Các kịch bản smudge nó tham khảo cũng có thể được phiên bản. – VonC

+0

phải vì vậy tôi có cài đặt tệp .gitattributes và trong repo. Tôi có bộ lọc * .c = = trong tệp .gitattributes. Làm thế nào để tôi nhận được để [filter "test"] sạch = mèo smudge = mèo được sao chép cho mỗi bản sao repo/kéo vì vậy mà tôi không cần phải làm git config filter.test.smudge mèo mỗi lần tôi sao chép repo? Nếu bạn không thể nói tôi khá mới với git và cố gắng để có được cùng một cấu hình trên nhiều máy tính. – beast

3

Chỉ vì mục đích đầy đủ: nên rõ ràng hơn từ tên bạn đang hỏi g cho, đơn giản là không thể. Móc pre-receive không thể thay đổi bất kỳ tệp nào vì không có nhận được bất kỳ tệp nào!

+1

Bạn có nguồn này không? – Adrian

+1

https://www.kernel.org/pub/software/scm/git/docs/githooks.html – Adrian

+0

Điều này khá đơn giản. Hoàn toàn có thể làm được những gì OP hỏi, mặc dù đó là một ý tưởng tồi. – jwg

Các vấn đề liên quan