Git pull di lingkungan Linux mengubah pemilik file

12

Mengapa setiap kali saya mengeksekusi git pulldi server langsung saya, pemilik file diubah? Saya terus melakukan chown john:john index.php.

Apa yang perlu saya ubah sehingga, ketika saya lakukan git pull, pemilik file akan secara otomatis menjadi atau tetap john?

PinoyStackOverflower
sumber
1
Apakah johnpemilik direktori saat ini?
user000001
Ya, john adalah pemilik direktori :)
PinoyStackOverflower
1
Pengguna yang berjalan git pull?
cuonglm
@Gnouc pengguna root, saya masuk di server langsung kami melalui SSH sebagai pengguna root :)
PinoyStackOverflower

Jawaban:

11

Ketika Anda menggunakan git pull(yang setara dengan git fetch; git merge), git akan memperbarui file tanpa mengubah pemilik (git tidak menyimpan informasi itu). Tetapi jika ada file baru untuk dibuat, pengguna saat ini akan ditetapkan sebagai pemilik.

Ada solusi berbeda untuk menyelesaikan ini. Mungkin yang lebih mudah adalah dengan menambahkan post-updatekait (di .git/hooksdirektori Anda ) untuk secara otomatis memanggil chown john:john . -Rsetelah penggabungan / tarik ( lihat solusi SO untuk contoh ).

Solusi alternatif adalah:

  • Jalankan git pullsebagai pengguna john alih-alih root (yang akan memerlukan izin tulis ke john untuk direktori .git).
  • Buat kait untuk melakukan penyebaran, yang akan menggunakan john sebagai pengguna, baik lakukan chown setelah pembaruan (jadi Anda harus melakukannya git pulldi dalam post-receivekait dari repo telanjang).
Asenar
sumber
Bagaimana jika Anda lakukan git fetchsebagai root dan kemudian git mergesebagai pengguna john? Akankah John masih memerlukan izin menulis untuk .gitdirektori?
Wildcard
Ya, sebagian besar waktu. git fetchsebagai root, file baru di .git / objek` mungkin memiliki root sebagai pemilik. git mergesebagai pengguna john akan (sebagian besar waktu) mencoba untuk menimpa setidaknya .git/indexdan .git/HEAD(yang mungkin dihapus / dibuat pada setiap perubahan saya kira), dan menulis beberapa file di .git/objects/. + file baru di direktori kerja Anda. Mungkin ada pengecualian dengan penggabungan maju cepat misalnya.
Asenar