यह वास्तव में मेरे पहले के प्रश्न पर उपजी है जहां उत्तर में से एक ने मुझे आश्चर्यचकित कर दिया कि लोग विकास के लिए विभिन्न तरीकों से एसएमएम/भंडार का उपयोग कैसे कर रहे हैं।आपने कभी सोचा है कि स्रोत भंडार का सबसे अच्छा उपयोग क्या है?
उत्तर
से पहले (TeamCity, प्रबंधक का निर्माण):
अवधारणा सरल है, निर्माण प्रणाली केवल निर्माण सिस्टम यह निर्धारित करता है कि के बाद अपने लिए प्रतिबद्ध में प्रवेश ट्रंक के बीच और एक अवरोध के रूप में खड़ा आपकी प्रतिबद्धता चीजों को तोड़ती नहीं है, यह संस्करण को संस्करण नियंत्रण में पेश करने की अनुमति देती है, जहां अन्य डेवलपर्स अपनी स्थानीय कामकाजी प्रतियों में उस परिवर्तन को सिंक और एकीकृत करेंगे
पूर्व परीक्षण किया करता लिए हडसन के साथ मेरे कार्यप्रवाह तीन अलग-अलग Git संग्रह शामिल है::
- अपने स्थानीय रेपो (स्थानीय)
के बाद (का उपयोग कर Git की तरह एक DVCS, कि एक स्रोत भंडार है) ,
- विहित/केंद्रीय रेपो (मूल)
- और मेरे "दुनिया पठनीय" (फ़ायरवॉल के अंदर) रेपो (सार्वजनिक)।
पूर्व परीक्षण किया करता के लिए, मैं एक लगातार बदलते "पु" (संभावित अपडेट) दुनिया पठनीय रेपो पर बुलाया शाखा का उपयोग करें।
हडसन के अंदर मैंने एक ऐसी नौकरी बनाई जिसने "पु" शाखा में बदलाव के लिए विश्व-पठनीय रेपो (सार्वजनिक) को चुना और अद्यतनों को धक्का देने पर निर्माण बंद कर देगा।मूल करने के लिए स्थापना के समय से एक परिवर्तन लेने के लिए मेरे कार्यप्रवाह है:
* hack, hack, hack
* commit to local/topic
* git pup public
* Hudson polls public/pu
* Hudson runs potential-updates job
* Tests fail?
o Yes: Rework commit, try again
o No: Continue
* Rebase onto local/master
* Push to origin/master
का उपयोग करते हुए इस पूर्व-परीक्षण किया प्रतिबद्ध कार्यप्रवाह मैं के निर्माण सिस्टम के क्लस्टर के लिए मेरी परीक्षण आवश्यकताओं के बहुमत ऑफलोड कर सकते हैं उन्हें स्थानीय रूप से चलाने की बजाए मशीनों का अर्थ है, जिसका अर्थ है कि मैं अपनी मशीन पर परीक्षण करने की प्रतीक्षा करने के बजाय अपने समय के अधिकांश समय कोड लिख सकता हूं, कोडिंग पुनरावृत्तियों के बीच में।
(रूपांतर) Private Build (डेविड Gageot, Algodeal)
ऊपर से एक ही सिद्धांत है, लेकिन निर्माण को विकसित करने के लिए इस्तेमाल एक से एक ही कार्य केंद्र पर किया जाता है, लेकिन पर एक क्लोन रेपो:
लंबी अवधि में सीआई सर्वर का उपयोग कैसे न करें और स्थानीय स्तर पर बिल्डिंग में बढ़ते समय में कमी का सामना न करें?
गिट के साथ, यह केक का एक टुकड़ा है।
सबसे पहले, हम किसी अन्य फ़ोल्डर में कार्यशील निर्देशिका को 'गिट क्लोन' करते हैं। गिट कॉपी बहुत कॉपी करता है।
अगली बार, हमें क्लोन करने की आवश्यकता नहीं है। बस गेट को डेल्टा प्राप्त करें। नेट परिणाम: तत्काल क्लोनिंग। प्रभावशाली।स्थिरता के बारे में क्या?
कार्यशील निर्देशिका से एक सरल 'git pull
' करना, डेल्टा के digests का उपयोग करके, परिवर्तनों को पहले से साझा साझा भंडार पर धक्का दिया जाएगा।
कुछ भी नहीं करना है। फिर से प्रभावशाली।बेशक, जबकि दूसरी निर्देशिका में निर्माण चल रहा है, हम कोड पर काम कर सकते हैं। इंतजार करने की कोई ज़रूरत नहीं है।
अब हमारे पास कोई रखरखाव नहीं है, कोई अतिरिक्त स्थापना नहीं है, आईडीई पर निर्भर नहीं है, एक कमांड लाइन के साथ भाग गया है। साझा भंडार में कोई और टूटा हुआ निर्माण नहीं। हम अपने सीआई सर्वर रीसायकल कर सकते हैं।
हां। आपने अच्छी तरह से सुना है। हमने अभी एक सर्वर रहित सीआई बनाया है। असली सीआई सर्वर की हर अतिरिक्त सुविधा मेरे लिए शोर है।
#!/bin/bash
if [ 0 -eq `git remote -v | grep -c push` ]; then
REMOTE_REPO=`git remote -v | sed 's/origin//'`
else
REMOTE_REPO=`git remote -v | grep "(push)" | sed 's/origin//' | sed 's/(push)//'`
fi
if [ ! -z "$1" ]; then
git add .
git commit -a -m "$1"
fi
git pull
if [ ! -d ".privatebuild" ]; then
git clone . .privatebuild
fi
cd .privatebuild
git clean -df
git pull
if [ -e "pom.xml" ]; then
mvn clean install
if [ $? -eq 0 ]; then
echo "Publishing to: $REMOTE_REPO"
git push $REMOTE_REPO master
else
echo "Unable to build"
exit $?
fi
fi
Dmitry Tashkinov, जो एक interesting question on DVCS and CI है, पूछते हैं:
मुझे समझ नहीं आता कैसे मार्टिन फाउलर की राज्य के साथ जुटना "हम सिर्फ एक serverless सीआई का निर्माण किया है":
"एक बार जब मैंने अपना स्वयं का एक सिंक्रनाइज़ किए गए कामकाजी प्रतिलिपि का निर्माण किया है तो मैं अंत में मुख्य रूप से अपने परिवर्तन को मुख्य रूप से कर सकता हूं, जो तब भंडार को अद्यतन करता है। हालांकि मेरी प्रतिबद्धता मेरा काम खत्म नहीं करती है। इस बिंदु पर हम फिर से निर्माण, लेकिन इस बार मुख्य लाइन कोड के आधार पर एकीकरण मशीन पर। केवल जब यह निर्माण सफल होता है तो हम कह सकते हैं कि मेरे परिवर्तन किए गए हैं। हमेशा एक मौका है कि मुझे अपनी मशीन पर कुछ याद आया और भंडार ठीक से अपडेट नहीं किया गया था।"
आप उपेक्षा या यह मोड़ करो@Dmitry: मैं उपेक्षा और न ही मोड़ नहीं है प्रक्रिया Martin Fowler in his ContinuousIntegration entry द्वारा वर्णित
लेकिन आप को एहसास है कि DVCS adds publication as an orthogonal dimension to branching
serverless सीआई दाऊद द्वारा वर्णित है।। मार्टिन द्वारा विस्तृत सामान्य सीआई प्रक्रिया का केवल एक कार्यान्वयन: सीआई सर्वर रखने के बजाय, आप एक स्थानीय प्रतिलिपि जहां स्थानीय सीआई चलाते हैं, फिर आप "वैध" कोड को केंद्रीय रेपो पर धक्का देते हैं।@ वॉनसी, लेकिन विचार सीआई नहीं चलाने के लिए था स्थानीय रूप से विशेष रूप से मशीनों के बीच संक्रमण में कुछ याद करने के लिए नहीं।
जब आप तथाकथित स्थानीय सीआई का उपयोग करते हैं, तो यह सभी परीक्षणों को पास कर सकता है क्योंकि यह स्थानीय है, लेकिन बाद में दूसरी मशीन पर टूट जाता है।
तो क्या यह अभिन्न है? मैं यहां बिल्कुल आलोचना नहीं कर रहा हूं, सवाल मेरे लिए मुश्किल है और मैं समझने की कोशिश कर रहा हूं।@ डिमिट्री: "तो यह अभिन्नता है"?
यह एकीकरण का एक स्तर है, जो सभी मूल जांच (जैसे प्रारूप समस्या, कोड शैली, मूल स्थैतिक विश्लेषण पहचान, ...)
चूंकि आपके पास उस प्रकाशन तंत्र है, तो आप उस तरह की श्रृंखला को श्रृंखलाबद्ध कर सकते हैं यदि आप चाहें तो सीआई के दूसरे सीआई सर्वर पर। बदले में, सर्वर "केंद्रीय" रेपो में स्वचालित रूप से धक्का दे सकता है (यदि यह अभी भी तेज़ है)।डेविड गैजोट को उस अतिरिक्त स्तर की आवश्यकता नहीं थी, जो पहले ही तैनाती वास्तुकला (पीसी-> पीसी) की अवधि में लक्ष्य पर था और केवल उस मूल प्रकार के सीआई स्तर की आवश्यकता थी।
इससे अधिक पूर्ण परीक्षण के लिए उसे अधिक संपूर्ण सिस्टम एकीकरण सर्वर स्थापित करने से रोका नहीं जाता है।
निश्चित रूप से Polarion ट्रैक & विकी ...
पूरे बग पर नज़र रखने और विकी डेटाबेस तोड़फोड़ में संग्रहित है एक पूर्ण पुनरीक्षण इतिहास रखने के लिए सक्षम होने के लिए।
मेरा पसंदीदा? डेटास्टोर को निर्देशिका संरचना के रूप में प्रस्तुत करके पेड़-संरचित डेटा को ट्रैक करने के लिए बाज़ार (एक बहुत अच्छी तरह से विचार-विमर्श स्पष्ट नामकरण के साथ एक डीएससीएम) का उपयोग किया गया एक अप्रकाशित उपकरण।
इसने एक एक्सएमएल दस्तावेज़ को ब्रांडेड और विलय करने की इजाजत दी, सभी भलाई (संघर्ष का पता लगाने और संकल्प, वर्कफ़्लो की समीक्षा, और निश्चित रूप से लॉगिंग लॉगिंग और इसी तरह) के साथ आधुनिक वितरित स्रोत नियंत्रण द्वारा आसान बना दिया गया। दस्तावेज़ और उसके मेटाडेटा को अपनी फाइलों में विभाजित करने से निकटता को झूठे संघर्ष करने की अनुमति देने के मुद्दों को रोका गया, और अन्यथा उन सभी कामों को अनुमति दी गई जो बाजार टीम ने अन्य प्रकार के पेड़-संरचित डेटा के साथ काम करने के लिए फाइल सिस्टम पेस्ट को संस्करण में डाल दिया।
- 1. आपने कभी देखा है कि सबसे अच्छा डिज़ाइन किया गया फ़ॉर्म क्या है?
- 2. क्या आपने कभी ngen.exe का उपयोग किया है?
- 3. आपने देखा है कि सबसे तर्कहीन उपयोगकर्ता व्यवहार क्या है?
- 4. आपने देखा है कि सबसे लंबी नियमित अभिव्यक्ति क्या है
- 5. एसएनएमपी निगरानी उपकरण का सबसे अच्छा खुला स्रोत क्या है?
- 6. यूएमएल सीखने का सबसे अच्छा स्रोत क्या है?
- 7. क्या आपने कभी "स्थिति" डिज़ाइन पैटर्न सुना है?
- 8. सबसे अच्छा WPF ओपन सोर्स प्रोजेक्ट जो आपने देखा है
- 9. क्या आपने कभी अपने किसी भी रूबी कोड में "क्लास इंस्टेंस वैरिएबल" का उपयोग किया है?
- 10. कूलस्ट सी # LINQ/Lambdas चाल जो आपने कभी खींचा है?
- 11. क्या आपने कभी जावा फ़ाइल बंद() अपवाद फेंक दिया है?
- 12. क्या आपने कभी वास्तविक दुनिया अनुप्रयोगों में आनुवांशिक एल्गोरिदम का उपयोग किया है?
- 13. mercurial.hg स्रोत भंडार कहां है
- 14. क्या आपने कभी बढ़ावा :: पूल का उपयोग करके एक महत्वपूर्ण गति प्राप्त की है?
- 15. क्या आपने कभी रेल में संरक्षित दृश्यता का उपयोग किया है?
- 16. एक्सेलस सबवर्जन प्लगइन के साथ उपयोग किया जा सकता है कि सबसे अच्छा, मुफ़्त, उपवर्तन नियंत्रण भंडार क्या है?
- 17. क्या आपने कभी किसी भी प्रोजेक्ट में फ़ैंटॉम रेफरेंस का उपयोग किया है?
- 18. सरल स्रोत नियंत्रण कभी - आप क्या उपयोग करते हैं?
- 19. दस्तावेज़ स्टोर का सबसे अच्छा उपयोग क्या है?
- 20. आपने ऑब्जेक्ट.क्लोन() के लिए क्या उपयोग किया है?
- 21. क्या विरोधी पैटर्न का कोई अच्छा स्रोत है?
- 22. क्या आपने सी ++ दुभाषियों का उपयोग किया है (संकलक नहीं)?
- 23. क्या आपने सी ++ 0x का उपयोग शुरू किया है?
- 24. क्या आपने मैकेनिकल तुर्क का दिलचस्प उपयोग किया है?
- 25. सबसे अच्छा तरीका है
- 26. सबसे अच्छा उपversण जीयूआई क्या है जिसके लिए पहले कभी विचलन नहीं किया गया है?
- 27. रुझान डेटा संग्रहीत करने का सबसे अच्छा तरीका क्या है?
- 28. आपने क्षेत्र में गतिशील प्रोग्रामिंग का उपयोग कब किया है?
- 29. क्या सबसे अच्छा तरीका है सब वर्कस्टेशन
- 30. सीएसएस का उपयोग करने का सबसे अच्छा तरीका क्या है? (नहीं * सीखें * लेकिन वास्तव में * उपयोग *)
यह मेरे लिए एक गरीब आदमी का PQM तरह लग रहा है (एक डी एस सी एम केंद्रित अवधारणा मैं पहली बार बाज़ार के खिलाफ लागू किया देखा है, लेकिन मैं लक्षित कर Git भी मौजूद कार्यान्वयन का मानना है)। मतदान के विशिष्ट स्रोत भंडार बनाम एकमात्र वास्तविक अंतर स्थापित किया जा रहा है (प्रमाणीकृत) अनुरोध जो परीक्षण और विलय के लिए किसी भी दूरस्थ भंडार और शाखा निर्दिष्ट कर सकते हैं। –
ठीक है, अब यह स्पष्ट है, व्यापक उत्तर के लिए धन्यवाद। डेविड गैजोट सर्वरलेस सीआई उद्धृत करने के लिए –
+1। अछा सुझाव। अच्छा लड़का भी;) – romaintaz