Linux ortamında Git pull, dosyaların sahibini değiştirir


12

Neden git pullcanlı sunucumda bir a yürüttüğümde dosyaların sahibi değişecek? Elle yapmaya devam ediyorum chown john:john index.php.

Bir değişiklik yaptığımda git pull, dosyaların sahibinin otomatik olarak kalması veya kalması için neyi değiştirmem gerekir john?


1
Mi johngeçerli dizinin sahibi?
user000001

Evet, john dizinin sahibi :)
PinoyStackOverflower

1
Hangi kullanıcı çalışıyor git pull?
cuonglm

@Gnouc root kullanıcısı, canlı sunucumuza SSH üzerinden root kullanıcısı olarak giriş yaptım :)
PinoyStackOverflower

Yanıtlar:


11

Kullandığınız zaman git pull(buna eşdeğerdir git fetch; git merge), git sahibi değiştirmeden dosyaları güncelleştirir (git bu bilgileri depolamaz). Ancak oluşturulacak yeni dosyalar varsa, geçerli kullanıcı sahip olarak ayarlanır.

Bunu çözmek için farklı çözümler var. Daha kolay, muhtemelen birleştirme / çekme işleminden sonra otomatik olarak post-updateçağrılacak bir kanca ( .git/hooksdizininizde) eklemektir ( örnek için bu SO çözümüne bakın ).chown john:john . -R

Alternatif çözümler:

  • git pullKök yerine john kullanıcısı olarak çalıştırın (bu, .git dizini için john'a yazma izni gerektirir).
  • Konuşmayı yapmak için john'u kullanıcı olarak kullanacak bir kanca oluşturun, ya güncellemeden sonra chown yapın (böylece çıplak repo kancasının git pulliçinde yapmak zorunda kalacaksınız post-receive).

git fetchKök ve sonra git mergekullanıcı john olarak yaparsanız ne olur ? John hala .gitdizin için yazma izinlerine ihtiyaç duyacak mı?
Wildcard

Evet, çoğu zaman. git fetchroot olarak .git / objects` içindeki yeni dosyaların sahibi root olabilir. git mergekullanıcı john (çoğu zaman) en azından üzerine yazmaya çalışacağım .git/indexve .git/HEAD(her bir değişiklikte silinebilir / oluşturulabilir) ve bazı dosyalar yazacağız .git/objects/. + çalışma dizininizdeki yeni dosyalar. Belki hızlı ileri birleştirme ile ilgili istisnalar vardır.
Asenar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.