Git-annex स्थापित किए बिना सर्वर पर Git अनुलग्नक होस्ट करना


9

मशीनें ए और बी एक आम गिट एनेक्स रिपॉजिटरी की मेजबानी करती हैं । उन दोनों में गिट-एनेक्स प्रोग्राम स्थापित है और मैं दोनों मशीनों पर मैन्युअल रूप से संपादन / प्रतिबद्ध / आदि सामान करता हूं। A & B एक ही समय में इंटरनेट से कनेक्ट नहीं होते हैं, इसलिए उन्हें सीधे एक साथ सिंक नहीं किया जा सकता है।

सर्वर C हमेशा चालू और जुड़ा रहता है (और मुफ्त और बहुत सुरक्षित)। इसमें git इंस्टॉल है, लेकिन मेरे पास व्यवस्थापक अधिकार नहीं हैं, इसलिए मैं git-annex स्थापित नहीं कर सकता।

मेरा प्रश्न: क्या मैं ए और बी दोनों से गिट-एनेक्स अपडेट को पुश करने और खींचने के लिए सर्वर सी का उपयोग केंद्रीय हब के रूप में कर सकता हूं, बिना जी-एनेक्स और सी पर पूरे हैस्केल जीएचसी निर्भरता स्थापित करने के लिए?

मैंने "निर्देशिका" या "rsync" विशेष रीमोज़ के साथ C का उपयोग करने की कोशिश की , लेकिन यह केवल फ़ाइलों को रखने के लिए लगता है, बाकी की नहीं जो पुश / पुल के बाद ए और बी को अपडेट करने के लिए आवश्यक है।

किसी भी संकेत बहुत सराहना की जाएगी!

जवाबों:


6

एक ही सर्वर पर git और rsync एक्सेस के साथ आप उस सर्वर का उपयोग इतिहास (git एक्सेस के माध्यम से) और एनेक्स की-वैल्यू स्टोर (rsync एक्सेस के माध्यम से) दोनों को संग्रहीत करने के लिए कर सकते हैं। इन्हें अलग-अलग सर्वरों के किसी भी नंबर पर डिकॉउंड और स्टोर किया जा सकता है।

ऐसा लगता है कि आप पहले से ही उन सभी टूल पर पढ़ चुके हैं जिनकी आपको आवश्यकता होगी। मूल रूप से, आप सर्वर-सी पर अलग-अलग स्थानों की ओर इशारा करते हुए, 2 अलग-अलग रीमोट के साथ समाप्त करेंगे। पहला रिमोट (सर्वर-सी) आपके इतिहास और ऐसी किसी भी चीज़ को सिंक्रनाइज़ करने के लिए एक नियमित git रिमोट है जिसे सीधे git रेपो में चेक किया जाता है। दूसरा रिमोट एक अनुलग्नक विशेष रिमोट है।

[remote "server-c"]
    url = git@example.com:/path/to/repo.git
    fetch = +refs/heads/*:refs/remotes/server-c/*
[remote "server-c-rsync"]
    annex-rsyncurl = example.com:/home/user/annex-rsync
    annex-uuid = ...

आपको इसे कुछ के साथ सेट करने में सक्षम होना चाहिए:

git remote add server-c git@example.com:/path/to/repo.git
git annex initremote server-c-rsync type=rsync rsyncurl=example.com:/home/user/annex-rsync encryption=none

यह आपको वह मूल कार्यक्षमता मिलनी चाहिए जिसकी आपको तलाश है। केवल नकारात्मक पक्ष यह है कि आपके पास 2 अलग-अलग दूरस्थ नाम हैं जो वास्तव में एक ही सर्वर को इंगित करते हैं। विशेष रूप से आपको केवल विशेष रिमोट (सर्वर-सी- rsync) का उपयोग करने के लिए याद रखना होगा - जब, -, या --from = का उपयोग करें, प्राप्त, कॉपी और स्थानांतरित करने के तर्क।

दोनों स्थानों पर एक ही रिमोट इंगित करना संभव हो सकता है, हालांकि मुझे यकीन नहीं है कि यह वास्तव में समर्थित है। निम्नलिखित कमांड एक समझदार .git / config बनाने के लिए दिखाई देते हैं।

git init
git annex init "test"
git remote add server-c git@example.com:/path/to/repo.git
git annex initremote server-c type=rsync rsyncurl=example.com:/rsync/user encryption=none

मेरे लिए यह एक। दूरस्थ /। In दोनों में एक url = (सामान्य गिट संचालन के लिए) और एक अनुलग्नक- rsyncurl = के साथ एक ही रिमोट में परिणाम देता है। हालाँकि, मैंने यह सुनिश्चित करने के लिए आगे परीक्षण नहीं किया है कि गिट एनेक्स url को अनदेखा करता है और केवल एनेक्स- rsyncurl प्रविष्टि का उपयोग करता है जब एनेक्सड फ़ाइलों के साथ काम कर रहा है।


महान! मैं कुछ परीक्षण करूँगा, लेकिन यह मुझे एक व्यावहारिक समाधान के बहुत करीब पहुंचना चाहिए। आपके समय और उत्तर के लिए बहुत बहुत धन्यवाद!
विन्सेन्ट

मैं खुशी से मदद कर सकता है। मैं सिर्फ छुट्टी के ब्रेक पर अपने आप को गिट एनेक्स का उपयोग करना शुरू कर दिया और अब तक मैं इससे बहुत खुश हूं!
जस्टिन जिबेल

मुझे लगता है कि अंतिम उदाहरण को सिर्फ काम करना चाहिए। वास्तव में, मुझे लगता है कि यह फ़ाइलों को rsync जगह में ले जाएगा, भले ही यह सिर्फ एक नंगे गिट रेपो हो ...
aarcat
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.