Olmayan / etc dosya sistemlerinin git kontrolü için etckeeper'ın meta veri motorunu nasıl yeniden kullanabilir / genişletebilir veya adı geçen özellik ile git'i yerel olarak nasıl genişletebilirim?


16

Genel bakış + soru

Olmayan / etc, git kontrollü dizinler için etckeeper benzeri dosya sistemi meta veri denetimi istiyorum . Ev ve web uygulaması dizinleri, diğerleri arasında, meta verilere (dosya sahipliği, EKL, izinler) klasik olarak duyarlıdır. Bu, diğer şeylerin yanı sıra, otomatik sunucu dağıtımı için ( Fabric gibi araçlarla birlikte) git kullanmak için son derece yararlı / önemli olabilir . Bahsedilen direklerde etckeeper benzeri kabiliyeti ya etckeeper'ın kendisi ya da başka bir şeyle tekrar kullanmak istiyorum.

Aşağıdakilerden birini veya her ikisini birden sağlamak için herhangi bir ipucu / püf noktası / çalışma çözümü önerebilir:

  1. Etckeeper motorunu (yalnızca git emcker özelliğine dikkat et) etckeeper olmayan / etc, git kontrollü dizinlere uygulayın. (En azından Debian / Ubuntu Linux'u varsayabilir; mümkünse MacOSX / homebrew desteğini ister.)
  2. Etckeeper benzeri bir özelliği veya daha iyisini desteklemek için git'i meta veri desteğiyle genişletmek ( git-cache-meta gibi aşırı basitleştirilmiş şeylerin ötesinde )?

Daha fazla detay, arka plan

Git'i dosya sistemi-meta veri denetimi yetenekleriyle genişletmeye olan ilgisi giderek artıyor . etckeeper'ın meta veri "motoru" benim deneyimimde oldukça güçlü ve güvenilir görünüyor ve etckeeper başkaları arasında da popüler görünüyor . metastore en azından kısmen metastore'un metin tabanlı olmayan / birleştirme-düşmanca zorlukları nedeniyle . Ayrıca, etckeeper metastore tabanlı bir çekirdek ile başladı, ancak daha sonra kendi (spekülatif?)

Açıkçası, bunun OS / dosya sistemine özgü bağımlılıkları vardır. (örneğin, Windows'ta otomatik olarak dağıtılmaya çalışılmıyor.) İsteğe bağlı bir önerikullanıcı tarafından talep üzerine etkinleştirilen çapraz platform kırılmasının sonuçlarıyla anlaşılır, böylece yerel davranış git'in "varsayılan olarak" platformlar arası kolaylığını bozmaz. Ayrıca, abartılı unix / darwin / etc meta verilerini (ACL'ler gibi) kaydetmenize gerek yok; temel kullanıcı / grup / diğer izinler ve kullanıcı / grup sahipliği iyi olur. (Bunlar şu anda "güvenlik / güvenlik açığı kontrolüm / politikalarımda" kırılan şeylerdir.) Önceden hedeflediğim belirli işletim sistemleri: Debian, Ubuntu, MacOS 10.6+. Daha sonra: Redhat's (CentOS, Fedora, RHEL), SUSE, belki diğer Linux'lar ve * BSD (FreeBSD, NetBSD, OpenBSD). Öngörülebilir herhangi bir noktada Windows / VMS (VMS posix dostu olsa da) veya diğer unix benzeri olmayan işletim sistemleri için bir ihtiyaç / uygulama görmeyin.

Ayrıca bkz: önceden gönderdiğim git, dosya-meta veri / dosya türü izleme yetenekleri hakkında arka plan .

Yeni bir proje için gereksinimler mi geliştireceksiniz?

Ek olarak: Bu tür bir yetenek için gereksinimler geliştirmek isteyen varsa, özellikle yukarıda belirtilen yeni / tamamlanmamış bir proje için yararlı olabileceğinden eminim.



Bunu muhtemelen bazı (potansiyel olarak sofistike) git kancalarını kullanarak başarabilirsiniz .
Justin ᚅᚔᚈᚄᚒᚔ

Özel kancalar: sağ, yukarıda belirtildiği gibi git-cache-meta'da olduğu gibi; yararlı, ama basitleştirilmiş bir çözüm. Ne yazık ki, bu işlevselliği daha iyi işlevsellik / güvenilirlik / özellikler / kod görünümü / vb. Ayrıca, en azından kendi başıma değil, sıfırdan yazmak istemiyorum.
Johnny Utahh


Burada güncelleme var mı?
cregox

Yanıtlar:


4

Göre bu ServerFault cevap , sadece bunu:

Tam sayfa sayfasında .

  • Bir dizin oluşturun /foo
  • Etckeeper ile başlat: etckeeper -d /foo init
  • Tamamlama dizine uygula: etckeeper -d /foo commit 'message'

Oldukça ilginç. Mac OS X üzerinde çalışan herhangi bir etckeeper portu / testi bulamıyorum. Homebrew'da veya önemli bir yerde hiçbir şey yok. Bir şey bilen var mı?
Johnny Utahh

Etckeeper'ın Mac OS X için buraya taşınmasını öneriyorum
Johnny Utahh

@JohnnyUtahh: Joey'den ya da başkalarından yanıt alınmamış gibi görünüyor ... OS X bağlantı noktasında ilerleme kaydettiniz mi?
iconoclast

@JohnnyUtahh: bu arada, bunu buldum: github.com/myint/etckeeper
iconoclast

@iconoclast Bu konuda bir OS X portuna veya bu projeyle ilgili herhangi bir çalışma yapmadım. github.com/myint/etckeeper faydalı görünüyor - teşekkürler!
Johnny Utahh

4

Bu sorunu araştırdım ve bunun için bir git-store-meta projesi oluşturmaya karar verdim .

git-store-meta git-cache-meta, metastore, setgitperms ve mtimestore'un güzel özelliklerini birleştiren bir perl betiğidir. Esneklik, işlevsellik, performans ve platformlar arası taşınabilirlik ve tutarlılık konusunda iyi bir uzlaşma sağlamalıdır.


Git-store-meta'yu test etmek ve incelemek için henüz zaman bulamadım, ancak ilk bakışta kapsamlı ve oldukça umut verici görünüyor. Oldukça takdir etmek. Bunu test etmeyi dört gözle bekliyorum. Tekrar teşekkürler, @Danny Lin.
Johnny Utahh

@ Danny Lin 'diye başvurulan ettik git-mağaza-meta benim de ilgili, stackoverflow soru .
Johnny Utahh

Benim bakış açım: Bu çözüm (git-store-meta) etckeeper'ı kötüye kullanmaktan daha iyidir.
guettli

Güncelleme: Git-store-meta adresindeki README.md dosyasına baktım ve harika görünüyor . Bana ya da ekibimden birine bunu bir sonraki şansımızı denemek için sabırsızlanıyorum.
Johnny Utahh
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.