2012-07-30 17 views
7

Klonlama etkinliğimi git veri havuzumda izlemek istiyorum ancak bunu nasıl ayarlayacağımı veya bu bilgileri nasıl alacağınızı gösteren bir şey bulamıyorum.git depo günlük kopyalama

Bu mümkün mü? Eğer öyleyse bu nasıl kurulur ve ayrıca günlük bilgilerini nasıl alırsınız?

cevap

0

Klondaki sunucu tarafında çalışan herhangi bir kanca veya benzeri bir şey olduğunu düşünmüyorum. Git muhtemelen belirtilen protokolü (ssh, http, ...) kullanır ve uygun dosyaları getirir. Bu aktiviteyi bir şekilde izlemeye çalışabilirsin.

2

Sunucunuzdaki bir veritabanını veya dosyayı güncelleştirmek için post-checkout kanca kullanabilirsiniz. Bu kanca istemci tarafında çalışır (yani, klonu yapan kişi betiği yürütür), böylece komut dosyanızı bu perspektiften tasarlamanız gerekir. Ayrıca, --no-checkout seçeneğini git clone'a ekleyerek bu kancayı yürütmeden depoyu klonlamak mümkündür.

Basit ve güvenilir bir yaklaşım, sunucunuzun curl veya benzeri bir tesisle çağırabildiği küçük bir RESTful web servisi çalıştırmasıdır. Örneğin:

#!/usr/bin/env python 

import socket, sys, urllib, pycurl 

service_url = "https://my.server.dns/service.php" 
data = urllib.urlencode({ 
    'prev': sys.argv[1], 
    'new': sys.argv[2], 
    'branch': sys.argv[3], 
    'host': socket.gethostname() 
    }) 

c = pycurl.Curl() 
c.setopt(pycurl.URL, service_url) 
c.setopt(pycurl.POSTFIELDS, data) 
c.perform() 

http://www.kernel.org/pub/software/scm/git/docs/githooks.html bakınız.

0

Aynı soruyu yayınlayacağım ama bunu bulmaya çalışacağım. Daha iyi bulabildiğim, aramayı kaydetmek için git-upload-pack komutunu sarmaktır. Bu, yalnızca ssh üzerinde çalışacaktır, ancak şunu görürsünüz: pre-fetch hook functionality in git

Ancak, yalnızca root bunu yapabilir. Benim için işe yaramıyor, ama belki de başkaları için bir çözüm.

Gitolit (http://sitaramc.github.com/gitolite/master-toc.html) gibi erişimi kontrol etmek için her zaman bir "git server" kurabilirsiniz. Ya doğrudan giriş yapabilirsiniz ya da işlevselliğini artırabilirsiniz.

İlgili konular