วิธีการนำมาใช้ใหม่ / ขยายโปรแกรม metadata ของ etckeeper สำหรับการควบคุมคอมไพล์ของระบบไฟล์ที่ไม่ใช่ / etc หรือขยาย git ด้วยความสามารถดังกล่าว?


16

ภาพรวม + คำถาม

ฉันต้องการตัวควบคุมข้อมูลเมตาของระบบไฟล์etckeeper สำหรับไดเร็กตอรี่ที่ไม่ใช่ / etc, ซึ่งควบคุมโดย git. ไดเรกทอรีบ้านและเว็บแอปอื่น ๆ มีความอ่อนไหวต่อเมตาดาต้า (ความเป็นเจ้าของไฟล์, ACL, การอนุญาต) สิ่งนี้มีประโยชน์ / สำคัญอย่างยิ่งในการจ้าง git สำหรับการปรับใช้เซิร์ฟเวอร์อัตโนมัติ (พร้อมด้วยเครื่องมือเช่นFabric ) เหนือสิ่งอื่นใด ฉันต้องการที่จะใช้ความสามารถของ etckeeper เหมือน reirs บน dirs กล่าวทั้งกับตัวเอง etckeeper หรืออย่างอื่น

ทุกคนสามารถแนะนำเคล็ดลับ / เทคนิค / วิธีแก้ปัญหาในการทำงานเพื่อให้บริการอย่างใดอย่างหนึ่งหรือทั้งสองอย่างต่อไปนี้:

  1. ใช้เอ็นจิ้น etckeeper (สนใจเฉพาะความสามารถของ git-etckeeper เท่านั้น) กับ non- / etc, git-directory ที่ควบคุม (สามารถสันนิษฐานได้ว่าอย่างน้อย Debian / Ubuntu Linux; ต้องการการสนับสนุนMacOSX / homebrewหากเป็นไปได้)
  2. ขยาย git ด้วยการรองรับข้อมูลเมตา (นอกเหนือจากสิ่งที่เรียบง่ายเกินกว่าเช่นgit-cache-meta ) เพื่อรองรับความสามารถในการใช้เครื่องหมายคล้ายกันหรือดีกว่า?

รายละเอียดเพิ่มเติมพื้นหลัง

มีความสนใจที่เพิ่มขึ้นในเรื่องการขยายการคอมไพล์ที่มีความสามารถระบบแฟ้มข้อมูลเมตาของการควบคุม เครื่องมือ "metadata" ของ etckeeper นั้นดูมีประสิทธิภาพและน่าเชื่อถือในประสบการณ์ของฉันและetckeeper ก็ดูเหมือนจะเป็นที่นิยมของผู้อื่นเช่นกัน MetaStore น้อยดังนั้นอย่างน้อยในส่วนหนึ่งเนื่องจากMetaStore ของ / ความท้าทายผสานไม่เป็นมิตรไม่ใช่ข้อความตาม เพิ่มเติม etckeeper ดูเหมือนจะเริ่มต้นด้วยแกนที่ใช้ metastore แต่เปลี่ยนไปเป็นของตัวเอง (เก็งกำไร?)

เห็นได้ชัดว่านี่มีการอ้างอิงเฉพาะระบบปฏิบัติการ / ระบบไฟล์ (เช่นไม่พยายามปรับใช้อัตโนมัติบน Windows) แนะนำตัวเลือกเพิ่มเติมส่วนขยาย (ถ้าเป็น "ส่วนขยายดั้งเดิม") ของ git ที่เปิดใช้งานตามความต้องการโดยผู้ใช้ที่เข้าใจผลของการแตกข้ามแพลตฟอร์มดังนั้นพฤติกรรมดั้งเดิมไม่ทำลายความเป็นมิตรข้ามแพลตฟอร์มของ git โดยค่าเริ่มต้น เพิ่มเติมไม่จำเป็นต้องบันทึกเมตาดาต้า unix / ดาร์วิน / ฯลฯ ฟุ่มเฟือย (เช่น ACLs); ผู้ใช้ / กลุ่ม / พื้นฐานอื่น ๆ และความเป็นเจ้าของผู้ใช้ / กลุ่มจะไม่เป็นไร (สิ่งเหล่านี้เป็นสิ่งเดียวที่ทำลายสิ่งต่าง ๆ ใน "การควบคุม / นโยบายความปลอดภัย / ช่องโหว่" ในขณะนี้) ระบบปฏิบัติการเฉพาะที่ฉันกำหนดเป้าหมายไว้ด้านหน้า: Debian, Ubuntu, MacOS 10.6+ ในภายหลัง: Redhat's (CentOS, Fedora, RHEL), SUSE, Linux อื่น ๆ และ * BSD (FreeBSD, NetBSD, OpenBSD) อย่าเห็นความต้องการ / แอพพลิเคชั่นสำหรับ Windows / VMS (แม้ว่า VMS จะเป็นมิตรกับ posix) หรือระบบปฏิบัติการอื่น ๆ ที่ไม่เหมือนยูนิกซ์ที่จุดใด ๆ ที่มองเห็นได้

ดูเพิ่มเติม: พื้นหลังที่มีอยู่ก่อนคอมไพล์ไฟล์ข้อมูลเมตา / ประเภทไฟล์ความสามารถในการติดตามที่คำถาม StackOverflow นี้ผมโพสต์

พัฒนาข้อกำหนดสำหรับโครงการใหม่หรือไม่?

นอกจากนี้: หากใครสนใจที่จะพัฒนาข้อกำหนดสำหรับความสามารถดังกล่าวฉันมั่นใจว่าสามารถพิสูจน์ได้ว่ามีประโยชน์โดยเฉพาะอย่างยิ่งสำหรับโครงการใหม่ / ไม่สมบูรณ์ที่จะกล่าวถึงข้างต้น



คุณอาจจะบรรลุนี้โดยใช้บางคน (ที่มีความซับซ้อนอาจ) ตะขอคอมไพล์
จัสตินᚅᚔᚈᚄᚒᚔ

Custom hooks: ขวาเช่นเดียวกับgit-cache-metaดังกล่าวข้างต้น มีประโยชน์ แต่เป็นวิธีแก้ปัญหาที่ง่ายเกินไป อนิจจาการค้นหาเพื่อ "ดัน" ฟังก์ชั่นนี้นอกเหนือจาก hooks ที่ผู้ใช้กำหนดเองในสิ่งที่ "ชุมชนเป็นเจ้าของ" เพื่อการทำงานที่ดีขึ้น / ความน่าเชื่อถือ / คุณสมบัติ / codereview / etc นอกจากนี้ไม่ต้องการที่จะเขียนตั้งแต่เริ่มต้นอย่างน้อยไม่ได้ด้วยตัวเอง
Johnny Utahh


อัปเดตใด ๆ ที่นี่?
cregox

คำตอบ:


4

ตามคำตอบที่ผิดพลาดของเซิร์ฟเวอร์คุณเพียงทำสิ่งนี้:

มันเป็นสิทธิที่มีในหน้าคน

  • สร้างไดเรกทอรี /foo
  • เริ่มต้นด้วย etckeeper: etckeeper -d /foo init
  • คอมมิตใช้คอมมิตกับไดเร็กทอรี: etckeeper -d /foo commit 'message'

น่าสนใจทีเดียว ฉันไม่พบพอร์ตตัวทดสอบ / การทดสอบใด ๆ ที่เรียกใช้บน Mac OS X ไม่มีอะไรใน homebrew หรือที่อื่น ๆ มากมาย มีใครรู้อะไรบ้าง?
Johnny Utahh

ฉันขอคำแนะนำจาก etckeeper สำหรับการย้ายระบบ Mac OS X ที่นี่: joeyh.name/code/etckeeper/discussion
Johnny Utahh

@JohnnyUtahh: ดูเหมือนจะไม่ได้รับคำตอบใด ๆ จากโจอี้หรือคนอื่น ๆ ... คุณมีความคืบหน้าเกี่ยวกับพอร์ต OS X หรือไม่?
iconoclast

@JohnnyUtahh: อย่างไรก็ตามฉันพบสิ่งนี้: github.com/myint/etckeeper
iconoclast

@iconoclast ฉันไม่ได้ทำงานกับพอร์ต OS X หรืองานใด ๆ ในโครงการนี้สำหรับเรื่องนั้น github.com/myint/etckeeperดูมีประโยชน์ - ขอบคุณ!
Johnny Utahh

4

ฉันขุดในปัญหานี้และฉันตัดสินใจที่จะสร้างโครงการgit-store-metaสำหรับมัน

git-store-meta เป็นสคริปต์ Perl ซึ่งรวมคุณสมบัติที่ดีของ git-cache-meta, metastore, setgitperms และ mtimestore ควรให้บริการการประนีประนอมที่ดีของความยืดหยุ่นฟังก์ชันการทำงานประสิทธิภาพและความสะดวกในการพกพาข้ามแพลตฟอร์มและความสอดคล้อง


ฉันยังไม่ได้มีเวลาในการทดสอบและตรวจสอบ git-store-meta แต่ก่อนอื่นมันก็ดูละเอียดและมีแนวโน้มดี ชื่นชมค่อนข้างมาก ฉันหวังเป็นอย่างยิ่งว่าจะได้ทดสอบสิ่งนี้ ขอบคุณอีกครั้ง @Danny Lin
Johnny Utahh

@ 'แดนนี่หลิน' ฉันได้อ้างอิงGit-store metaที่ของฉันที่เกี่ยวข้องกับคำถาม StackOverflow
Johnny Utahh

มุมมองของฉัน: วิธีแก้ปัญหานี้ (git-store-meta) ดีกว่า Etckeeper ที่ใช้ผิดวัตถุประสงค์
guettli

ปรับปรุง: ฉันเพียงแค่มองมากกว่า README.md ที่Git-store เมตาและมันก็ดูดี ฉันดูเหมือนจะมีฉันหรือหนึ่งในทีมของฉันลองนี้โอกาสต่อไปที่เราได้รับ
Johnny Utahh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.