Git pull trong môi trường Linux thay đổi chủ sở hữu của các tệp


12

Tại sao mỗi lần tôi thực thi a git pulltrên máy chủ trực tiếp của mình, chủ sở hữu của các tệp sẽ bị thay đổi? Tôi tiếp tục làm thủ công a chown john:john index.php.

Tôi cần thay đổi những gì để khi tôi thực hiện git pull, chủ sở hữu của các tệp sẽ tự động hoặc ở lại john?


1
johnchủ sở hữu của thư mục hiện tại?
user000001

Có, john là chủ sở hữu của thư mục :)
PinoyStackOverflower

1
Người dùng nào đang chạy git pull?
cuonglm

Người dùng root @Gnouc, tôi đã đăng nhập vào máy chủ trực tiếp của chúng tôi thông qua SSH với tư cách là người dùng root :)
PinoyStackOverflower

Câu trả lời:


11

Khi bạn sử dụng git pull(tương đương với git fetch; git merge), git sẽ cập nhật tệp mà không thay đổi chủ sở hữu (git không lưu trữ thông tin đó). Nhưng nếu có tệp mới để tạo, người dùng hiện tại sẽ được đặt làm chủ sở hữu.

Có giải pháp khác nhau để giải quyết điều này. Dễ dàng hơn có lẽ là thêm một post-updatehook (trong .git/hooksthư mục của bạn ) để tự động gọi chown john:john . -Rsau khi hợp nhất / pull ( xem ví dụ về giải pháp SO ).

Các giải pháp thay thế là:

  • Chạy git pullvới tư cách là người dùng john thay vì root (điều đó sẽ yêu cầu quyền ghi vào thư mục john cho .git).
  • Tạo một hook để thực hiện triển khai, sẽ sử dụng john làm người dùng, hoặc thực hiện chown sau khi cập nhật (vì vậy bạn sẽ phải thực hiện git pullbên trong post-receivehook của repo trần).

Điều gì nếu bạn làm git fetchroot và sau đó git mergelà người dùng john? John vẫn sẽ cần quyền ghi cho .gitthư mục?
tự đại diện

Vâng, hầu hết các lần. git fetchlà root, các tệp mới trong .git / object` có thể có quyền là chủ sở hữu. git mergevì người dùng john sẽ (hầu hết thời gian) cố gắng ghi đè ít nhất .git/index.git/HEAD(có thể bị xóa / tạo ở mỗi thay đổi tôi cho là) ​​và ghi một số tệp vào .git/objects/. + bất kỳ tập tin mới trong thư mục làm việc của bạn. Có thể có ngoại lệ với hợp nhất chuyển tiếp nhanh chẳng hạn.
Asenar
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.