2012-02-28 29 views
5

tôi đã được sử dụng sau khi nhận được kịch bản trong kho git của tôi với các lệnh sau để kiểm tra tất cả các file trong kho:Git sau khi nhận để kiểm tra chỉ những tập tin đã được sửa đổi/thêm vào trong đẩy?

#!/bin/sh 
GIT_WORK_TREE=/var/www/www.example.org git checkout -f 

Tôi muốn làm một cái gì đó tương tự nhưng chỉ kiểm tra các tập tin đã được sửa đổi hoặc thêm vào trong đẩy. Một khi các tập tin đã được kiểm tra ra sau đó nhận được kịch bản sau đó sẽ chạy một số lệnh khác trên các tập tin này và loại bỏ các tập tin ở cuối để thư mục sẽ được sản phẩm nào.

Điều này có khả thi không?

Trả lời

5

bạn có thể sử dụng git diff để cung cấp cho bạn một danh sách các tập tin

git diff --name-only from..to 

trong một cái móc post-receive rằng sẽ Tôi nghĩ

git diff --name-only $1..$2 

như móc này nhận oldrev, newrevref trên tiêu chuẩn đầu vào

+0

Tôi không cần danh sách tệp cần phải thanh toán các tệp mới vào một thư mục. Tôi có lẽ nên đề cập đến rằng tôi đang làm điều này bằng cách sử dụng một kho lưu trữ trần được lưu trữ trên một máy chủ. – startupsmith

+0

Khi bạn biết tệp nào có liên quan [sau đó có thể kết xuất chúng bất cứ nơi nào bạn muốn] (https://github.com/AD7six/git-hooks/blob/develop/utils.php#L101). Nhưng trước tiên bạn cần biết tệp nào cần thực hiện và bạn sẽ không thực hiện thanh toán. – AD7six

+0

OK vì vậy tôi có thể chuyển đầu ra git diff vào form chức năng php copyFiles của bạn bên trong tập lệnh móc sau khi nhận không? – startupsmith

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