इस प्रोजेक्ट के बारे में

सिमगिट एक कमांड-लाइन टूल है जिसे बढ़ी हुई डिस्क दक्षता और अलगाव के साथ गिट वर्कट्रीज़ बनाने और प्रबंधित करने के लिए डिज़ाइन किया गया है, मुख्य रूप से एक ही रिपॉजिटरी पर कई AI एजेंट या समानांतर विकास प्रयासों से जुड़े परिदृश्यों के लिए। यह कॉपी-ऑन-राइट (CoW) तंत्र का उपयोग करके इसे प्राप्त करता है, यह सुनिश्चित करता है कि कई वर्कट्रीज़ में अपरिवर्तित फ़ाइलें डुप्लिकेट होने के बजाय भौतिक डिस्क स्थान साझा करें। यह टूल विभिन्न ऑपरेटिंग सिस्टम और फ़ाइल सिस्टम का समर्थन करता है: * **macOS (APFS)**: शून्य निर्भरता के साथ मूल `clonefile` का लाभ उठाता है। * **Linux (btrfs, xfs)**: शून्य निर्भरता के साथ मूल reflink क्षमताओं का उपयोग करता है। * **Linux (ext4, आदि)**: रूट या कर्नेल मॉड्यूल की आवश्यकता के बिना CoW कार्यक्षमता के लिए `fuse-overlayfs` पर वापस आ जाता है। * **Windows**: सीधे समर्थित नहीं है, लेकिन एक समर्थित लिनक्स फ़ाइल सिस्टम के साथ WSL के तहत उपयोग किया जा सकता है। सिमगिट एक डेमन या सर्वर के बिना संचालित होता है, जो संदर्भों के लिए गिट और डेटा प्रबंधन के लिए फ़ाइल सिस्टम पर निर्भर करता है। प्रत्येक वर्कट्री एक मानक गिट लिंक्ड चेकआउट के रूप में कार्य करता है, जो शाखाओं, अनुक्रमणिकाओं और कार्यशील ट्री के लिए पूर्ण अलगाव प्रदान करता है। यह एजेंटों को अपनी शाखाओं पर समानांतर में काम करने और सामान्य गिट मर्ज के माध्यम से परिवर्तनों को एकीकृत करने की अनुमति देता है। मुख्य लाभ प्रत्येक अतिरिक्त वर्कट्री की मामूली लागत है, जो एक पूर्ण `git worktree` कॉपी की तुलना में काफी कम है। माप लागतों को ट्रैक किए गए पथों की संख्या के साथ स्केल करते हुए दिखाते हैं (लगभग ~0.4 KiB प्रति ट्रैक किए गए पथ प्लस APFS पर ~60 KiB निश्चित ओवरहेड), सामग्री के आकार के बजाय। यह इसे बड़ी फ़ाइलों वाले रिपॉजिटरी के लिए विशेष रूप से कुशल बनाता है। सिमगिट वर्कट्रीज़ को जोड़ने, सूचीबद्ध करने, हटाने और कचरा इकट्ठा करने के लिए कमांड प्रदान करता है। `sg run` कमांड इन पृथक वर्कट्रीज़ के भीतर एजेंटों को लॉन्च करने की सुविधा प्रदान करता है, जिससे वे रिपॉजिटरी के साथ ऐसे इंटरैक्ट कर सकते हैं जैसे कि यह एक साधारण चेकआउट हो। यह उन एजेंटों के लिए डिस्क उपयोग को और कम करने के लिए स्पार्स चेकआउट का समर्थन करता है जो विशिष्ट सबट्री पर ध्यान केंद्रित करते हैं। वर्कट्रीज़ को स्वचालित कचरा संग्रह के लिए क्षणिक के रूप में चिह्नित किया जा सकता है या दीर्घकालिक उपयोग के लिए स्थायी किया जा सकता है। टूल प्रोग्रामेटिक ऑर्केस्ट्रेशन के लिए JSON आउटपुट भी प्रदान करता है।