Bagaimana cara menggunakan kembali / memperluas mesin metadata dllkeeper untuk kontrol git dari sistem file non-/ etc, atau memperluas git secara asli dengan kemampuan tersebut?

16

Ikhtisar + pertanyaan

Saya ingin kontrol metadata filesystem etckeeper seperti untuk non- / etc, direktori yang dikontrol git. Direktori rumah dan aplikasi web, antara lain, peka terhadap metadata (kepemilikan file, ACL, izin). Ini bisa sangat berguna / penting untuk menggunakan git untuk penyebaran server otomatis (bersama dengan alat-alat seperti Fabric ), antara lain. Saya ingin menggunakan kembali kemampuan etckeeper seperti pada dirs, baik dengan etckeeper itu sendiri atau sesuatu yang lain.

Adakah yang bisa menyarankan tips / trik / solusi kerja untuk memberikan salah satu atau kedua hal berikut ini:

  1. menerapkan mesin etckeeper (hanya peduli tentang kemampuan spesifik git dari etckeeper) ke direktori non-/ etc, git-controlled. (Dapat mengasumsikan setidaknya Debian / Ubuntu Linux; ingin MacOSX / dukungan homebrew jika mungkin.)
  2. memperluas git dengan dukungan metadata (di luar hal-hal yang terlalu disederhanakan seperti git-cache-meta ) untuk mendukung kemampuan seperti penjaga etc atau lebih baik?

Lebih detail, latar belakang

Ada minat yang tumbuh dalam memperluas git dengan kemampuan filesystem-metadata-control . etckeeper ini metadata "mesin" tampaknya cukup kuat dan dapat diandalkan dalam pengalaman saya, dan etckeeper tampaknya populer dengan orang lain juga. metastore setidaknya sebagian karena tantangan metastore yang tidak berbasis teks / penggabungan-tidak ramah . Lebih lanjut, penjaga etc tampaknya telah mulai dengan inti berbasis metastore, tetapi kemudian beralih ke inti sendiri (spekulatif?).

Jelas, ini memiliki dependensi khusus OS / sistem file. (mis., tidak mencoba menggunakan-otomatis pada Windows.) Sarankan opsionalekstensi (jika itu adalah "ekstensi asli") dari git, diaktifkan sesuai permintaan oleh pengguna dengan konsekuensi yang dipahami dari kerusakan lintas-platform, sehingga perilaku asli tidak merusak git "secara default" keramahan lintas-platform. Lebih jauh, tidak perlu menyimpan metadata unix / darwin / etc yang boros (seperti ACL); pengguna dasar / grup / perm lainnya dan kepemilikan pengguna / grup akan baik-baik saja. (Ini adalah satu-satunya hal yang saat ini melanggar hal-hal dalam "kontrol / kebijakan keamanan / kerentanan.") OS spesifik yang saya targetkan di muka: Debian, Ubuntu, MacOS 10.6+. Kemudian: Redhat (CentOS, Fedora, RHEL), SUSE, mungkin Linux lain, dan * BSD (FreeBSD, NetBSD, OpenBSD). Jangan melihat kebutuhan / aplikasi untuk Windows / VMS (walaupun VMS bisa ramah-posix) atau OS lain yang tidak seperti unix pada titik yang dapat diperkirakan.

Lihat juga: latar belakang kemampuan git, file-metadata / tipe-pelacakan file yang sudah ada sebelumnya pada pertanyaan stackoverflow ini yang saya posting .

Mengembangkan persyaratan untuk proyek baru?

Selain itu: jika ada yang peduli untuk mengembangkan persyaratan untuk kemampuan seperti itu, saya yakin itu bisa terbukti bermanfaat, terutama untuk proyek baru / belum selesai untuk mengatasi di atas.

Johnny Utahh
sumber
fyi. Menemukan Tanya Jawab ini di ServerFault: Dapatkah etckeeper digunakan untuk melacak file konfigurasi di luar / etc? .
Johnny Utahh
Anda mungkin dapat melakukannya dengan menggunakan beberapa kait git (yang berpotensi canggih) .
Justin ᚅᚔᚈᚄᚒᚔ
Custom hooks: right, like dengan git-cache-meta seperti yang disebutkan di atas; berguna, tetapi solusi yang terlalu disederhanakan. Sayangnya, mencari untuk "mendorong" fungsi ini di luar kait kustom pengguna menjadi sesuatu yang "dimiliki komunitas" untuk fungsionalitas / keandalan / fitur / codereview / dll yang lebih baik. Selanjutnya, tidak ingin menulisnya dari awal, setidaknya tidak sendiri.
Johnny Utahh
fyi. Pertanyaan saya dari stackoverflow: Apa yang dimaksud dengan 'git commit' ketika dikatakan 'buat mode ...' di stdout?
Johnny Utahh
Adakah pembaruan di sini?
cregox

Jawaban:

4

Menurut jawaban serverfault ini , Anda cukup melakukan ini:

Itu ada di sana di halaman manual .

  • Buat direktori /foo
  • Inisialisasi dengan dllkeeper: etckeeper -d /foo init
  • Komit berlaku komit ke direktori: etckeeper -d /foo commit 'message'
SamB
sumber
Cukup menarik. Saya tidak dapat menemukan port etckeeper / tes yang berjalan pada Mac OS X. Tidak ada di homebrew atau di mana pun yang substansial. Adakah yang tahu sesuatu?
Johnny Utahh
Saya meminta saran dllkeeper untuk porting Mac OS X di sini: joeyh.name/code/etckeeper/discussion
Johnny Utahh
@JohnnyUtahh: sepertinya tidak ada tanggapan dari Joey atau orang lain ... apakah Anda membuat kemajuan pada port OS X?
iconoclast
@JohnnyUtahh: omong-omong, saya menemukan ini: github.com/myint/etckeeper
iconoclast
@iconoclast Saya tidak melakukan pekerjaan terhadap port OS X, atau pekerjaan apa pun pada proyek ini, dalam hal ini. github.com/myint/etckeeper terlihat berguna - terima kasih!
Johnny Utahh
4

Saya menggali masalah ini dan saya memutuskan untuk membuat proyek git-store-meta untuk itu.

git-store-meta adalah skrip perl yang mengintegrasikan fitur-fitur bagus dari git-cache-meta, metastore, setgitperms, dan mtimestore. Itu harus melayani kompromi yang baik dari fleksibilitas, fungsionalitas, kinerja, dan portabilitas dan konsistensi lintas-platform.

Danny Lin
sumber
Saya belum menemukan waktu untuk menguji dan meninjau git-store-meta, tetapi pada pandangan pertama itu terlihat menyeluruh, dan cukup menjanjikan. Cukup dihargai. Saya sangat berharap untuk menguji ini. Terima kasih lagi, @Danny Lin.
Johnny Utahh
@ 'Danny Lin', saya telah mereferensikan git-store-meta pada pertanyaan stackoverflow saya yang terkait .
Johnny Utahh
Pandangan saya: Solusi ini (git-store-meta) lebih baik daripada menyalahgunakan dllkeeper.
guettli
Pembaruan: Saya baru saja melihat README.md di git-store-meta , dan itu terlihat hebat . Saya tampaknya ingin memiliki saya atau salah satu tim saya mencoba ini kesempatan berikutnya yang kita dapatkan.
Johnny Utahh