दस्तावेज़
किसी प्रोजेक्ट परिवर्तन की समीक्षा करें और उसे पुनर्स्थापित करें
कार्यशील डेटाबेस को रिकॉर्ड करें, एक प्रस्ताव शाखा को अलग करें, अंतर की समीक्षा करें, प्रतिबद्ध जाँच चलाएँ, और स्पष्ट दुष्प्रभावों के साथ विलय या पुनर्स्थापित करें।
अंग्रेज़ी से स्वचालित रूप से अनुवादित। अंग्रेज़ी मूल देखें
प्रतिबद्ध इतिहास से सहेजे गए संसाधनों को अलग करें
किसी प्रोजेक्ट, ड्राइंग या टूलपाथ को सहेजने से SQLite वर्किंग कॉपी अपडेट हो जाती है। प्रोजेक्ट कमिट का निर्माण कार्यशील संसाधनों को गिट-संगत ऑब्जेक्ट में स्नैपशॉट देता है और वर्तमान शाखा रेफरी को स्थानांतरित करता है। वे अलग-अलग ऑपरेशन हैं: एक सहेजी गई ड्राइंग अनकमिटेड हो सकती है, और एक प्रतिबद्ध प्रोग्राम बिना किसी रिमोट मिरर के स्थानीय रह सकता है।
साइडकार की इतिहास सेवा प्रति संसाधन एक कैनोनिकल JSON फ़ाइल बनाती है। ट्री में प्रोजेक्ट.जेसन, चित्र, घटक, टूलपाथ, संदर्भित सामग्री/उपकरण/मशीन कॉन्फ़िगरेशन और उत्पादन लागत शामिल हैं। वर्कफ़्लो YAML और अन्य गैर-इकाई पाठ सामान्य ड्राइंग रिकॉर्ड के बजाय रिपॉजिटरी ट्री में रहते हैं। एक इकाई में परिवर्तन के लिए पूरे डेटाबेस को एक अपारदर्शी बाइनरी अंतर के रूप में मानने की आवश्यकता नहीं होती है।
बदलते उदाहरणों का अनुसरण करने से पहले एक डिस्पोजेबल या इच्छित प्रोजेक्ट चुनें। तय करना PROJECT_ID इसके वास्तविक पहचानकर्ता के लिए और वर्तमान कनेक्शन यूआरएल/एप्लिकेशन बियरर का उपयोग करें। प्रोजेक्ट इतिहास और वर्कफ़्लो समापन बिंदु को इसमें प्रलेखित किया गया है इतिहास एपीआई संदर्भ; प्रोजेक्ट मेटाडेटा लेखन का उपयोग करें प्रोजेक्ट एपीआई.
ऑब्जेक्ट गिट के बाइट-सटीक लूज़-ऑब्जेक्ट प्रारूप का उपयोग करते हैं, इसलिए कमिट और ट्री आईडी किससे मेल खाते हैं git समान सामग्री के लिए गणना करता है. शाखा सन्दर्भ नीचे रहते हैं refs/heads/, और डिफ़ॉल्ट शाखा है main.
पहचान और कार्यशील स्थिति का निरीक्षण करें
रीड एक्सेस, कमिट, शाखा निर्माण, ओपनिंग पुल अनुरोध, समीक्षा और वर्कफ़्लो प्रेषण के लिए प्रोजेक्ट तक पहुंच की आवश्यकता होती है। चेकआउट, पुनर्स्थापना, दूरस्थ कॉन्फ़िगरेशन, पुश/पुल, और विलय के लिए अनुरक्षक पहुंच की आवश्यकता होती है: प्रोजेक्ट स्वामी या संगठन व्यवस्थापक/प्रबंधक। एक वैकल्पिक खाता सत्र शीर्षलेख अभिनय उपयोगकर्ता का चयन करता है; वैध खाता सत्र के बिना एप्लिकेशन अपनी स्थानीय प्रोफ़ाइल का उपयोग करता है।
curl --fail-with-body \
-H "Authorization: Bearer $CADCAMFUN_TOKEN" \
"$CADCAMFUN_URL/api/projects/$PROJECT_ID/vcs/status" प्रतिक्रिया में शाखा, अशक्त HEAD और गंदे पथों का नाम दिया गया है। डर्टी का अर्थ है कि वर्तमान संसाधन फ़ाइलें HEAD से भिन्न हैं। एक गैर-रिक्त सूची उपयोगी समीक्षा जानकारी है, भंडारण विफलता नहीं। कार्यशील प्रतिलिपि को स्थानांतरित करने से पहले, तय करें कि क्या वे परिवर्तन किसी प्रतिबद्धता में हैं या उन्हें जानबूझकर बहाल/त्याग दिया जाना चाहिए।
यदि HEAD शून्य है, तो HEAD से एक शाखा बनाने से पहले पहला प्रोजेक्ट कमिट रिकॉर्ड करें। शाखा एपीआई एक वास्तविक स्रोत प्रतिबद्धता का समाधान करती है; किसी नए प्रोजेक्ट में शाखा लगाने के लिए कोई प्लेसहोल्डर प्रतिबद्धता नहीं है।
एक आधार रेखा बनाएं या इच्छित संपादन रिकॉर्ड करें
एक कमिट के लिए एक गैर-रिक्त संदेश की आवश्यकता होती है और यह वर्तमान डेटाबेस-समर्थित संसाधनों को कैप्चर करता है। पहले गंदे रास्तों की समीक्षा करें: एपीआई व्यक्तिगत इकाई फ़ाइलों को चरणबद्ध नहीं करता है। वैकल्पिक फ़ाइल फ़ील्ड सुरक्षित वर्कफ़्लो परिभाषाएँ जोड़ती है, जिसका वर्णन बाद में किया गया है; यह चयन नहीं करता कि कौन सा ड्राइंग संपादन शामिल किया जाए।
curl --fail-with-body \
-H "Authorization: Bearer $CADCAMFUN_TOKEN" \
-H "Content-Type: application/json" \
--data '{"message":"Record baseline blank"}' \
"$CADCAMFUN_URL/api/projects/$PROJECT_ID/vcs/commit" प्रतिक्रिया ऑब्जेक्ट आईडी, पैरेंट आईडी, संदेश और लेखक की जानकारी के साथ एक 201 प्रतिबद्ध रिकॉर्ड है। बाद में तुलना या पुनर्स्थापना के लिए इसका OID रिकॉर्ड करें। एक अपरिवर्तित पेड़ को उसी सामग्री से एक और संशोधन बनाने के बजाय नथिंगटूकॉमिट के साथ खारिज कर दिया जाता है।
authorKind उपयोगकर्ता के लिए डिफ़ॉल्ट. सहायक-उत्पन्न कमिट एआई का उपयोग करते हैं और मुख्य पर कमिट नहीं कर सकते। अभिनेता नीति परियोजना सेवा द्वारा लागू की जाती है; एक भिन्न प्रदर्शन संदेश इसे बायपास नहीं करता है. कमिट बनाने से कमिट रिकॉर्ड होने के बाद वर्कफ़्लो ट्रिगर हो सकता है। बाद का विफल वर्कफ़्लो उस प्रतिबद्धता को पूर्ववत नहीं करता है।
एक प्रस्ताव बनाएं और जांचें
एक शाखा बनाना एक रेफरी लिखता है; यह कार्यशील डेटाबेस को स्विच नहीं करता है. चेकआउट स्पष्ट है और अप्रतिबद्ध कार्य परिवर्तनों को अस्वीकार करता है। निम्नलिखित कॉल वर्तमान HEAD से एक शाखा बनाती हैं और इसे चेक-आउट शाखा के रूप में लोड करती हैं।
curl --fail-with-body \
-H "Authorization: Bearer $CADCAMFUN_TOKEN" -H "Content-Type: application/json" \
--data '{"name":"proposal/blank-label"}' \
"$CADCAMFUN_URL/api/projects/$PROJECT_ID/vcs/branches"
curl --fail-with-body \
-H "Authorization: Bearer $CADCAMFUN_TOKEN" -H "Content-Type: application/json" \
--data '{"branch":"proposal/blank-label"}' \
"$CADCAMFUN_URL/api/projects/$PROJECT_ID/vcs/checkout" कहीं और शुरू करने के लिए, संशोधन से लेकर शाखा निर्माण तक जोड़ें। नाम सुरक्षित रेफरी होने चाहिए: ट्रैवर्सल, बार-बार स्लैश, एक अनुगामी स्लैश/.लॉक प्रत्यय, और रेफरी-अभिव्यक्ति टुकड़े अस्वीकार कर दिए जाते हैं। किसी मौजूदा नाम का पुन: उपयोग करने से भी इनकार कर दिया गया है।
चेकआउट के बाद, इच्छित प्रोजेक्ट परिवर्तनों को उनके संसाधन एपीआई के माध्यम से सहेजें। एक छोटे प्रदर्शन के लिए, प्रोजेक्ट मेटाडेटा को PUT /api/projects/:id और एक नए नाम के साथ अपडेट करें, फिर इसे प्रतिबद्ध करें। परिणामी अंतर बदल जाता है project.json; इसका तात्पर्य ज्यामिति परिवर्तन से नहीं है। वास्तविक भाग संशोधन में, कमिट करने से पहले ड्राइंग और किसी भी पुनर्जीवित टूलपाथ को सहेजें।
समीक्षाधीन सटीक परिवर्तन पढ़ें
GET /vcs/log रेव, सीमा और वैकल्पिक ट्रैक किए गए पथ का समर्थन करता है। GET /vcs/diff की आवश्यकता है और एक वैकल्पिक स्वीकार करता है। प्रतिलिपि प्रस्तुत करने योग्य तुलना के लिए स्पष्ट ओआईडी का उपयोग करें। यूआरएल में अनछुए विराम चिह्नों को जोड़ने के बजाय शाखा नामों और JSON पथों को क्वेरी मान के रूप में एनकोड करें।
curl --fail-with-body --get \
-H "Authorization: Bearer $CADCAMFUN_TOKEN" \
--data-urlencode "from=main" \
--data-urlencode "to=proposal/blank-label" \
"$CADCAMFUN_URL/api/projects/$PROJECT_ID/vcs/diff" इकाई परिवर्तनों में पथ, संसाधन प्रकार, जोड़ा/संशोधित/हटाई गई स्थिति, वैकल्पिक आईडी/नाम और JSON पॉइंटर्स द्वारा वर्णित संपत्ति परिवर्तन शामिल हैं। कैनोनिकल JSON सरणी क्रम को संरक्षित करते हुए ऑब्जेक्ट कुंजियों को पुनरावर्ती रूप से सॉर्ट करता है। गैर-अतिव्यापी ऑब्जेक्ट-प्रॉपर्टी संपादन संरचनात्मक रूप से विलय कर सकते हैं; असंगत समवर्ती सरणी संपादन परमाणु संघर्ष हैं, तत्व-दर-तत्व समाधान नहीं।
टूलपाथ रिकॉर्ड के हिस्से के रूप में विनिर्माण साक्ष्य की समीक्षा करें: जी-कोड और आर्टिफैक्ट पहचान का मिलान एक परिचित फ़ाइल नाम से अधिक मायने रखता है। एक प्रोजेक्ट कमिट सहेजे गए डेटा को कैप्चर करता है; यह गुम मूल विनिर्माण अनुरोध को केवल इसलिए नहीं चलाता है क्योंकि पेड़ में एनसी टेक्स्ट है।
परियोजना के साथ निष्पादन योग्य जाँच करें
सार्वजनिक प्रतिबद्ध समापन बिंदु की अतिरिक्त फ़ाइलें प्रतिबंधित हैं .cadcamfun/workflows/<safe-name>.yml या yaml. यह टेक्स्ट मानों को स्वीकार करता है, मनमाने फ़ाइल सिस्टम पैच को नहीं। आप इस फ़ील्ड का उपयोग ड्राइंग JSON को बदलने, शेल स्क्रिप्ट लिखने या शून्य भेजकर किसी फ़ाइल को हटाने के लिए नहीं कर सकते।
एक परिभाषा को YAML टेक्स्ट के रूप में प्रतिबद्ध किया जाता है, फिर रनर इसे उस प्रतिबद्ध रेफरी से लोड करता है। नीचे दिया गया उदाहरण संरचनात्मक फ़ाइलों को मान्य करता है, मौजूदा टूलपाथ के लिए एनसी की आवश्यकता होती है, ऑपरेशन अनुक्रम की जांच करता है, और संग्रहीत जेनरेटर अनुरोध वाले टूलपाथ के लिए पुनः चलाने का प्रयास करता है।
name: Review checks
on:
manual: true
pullRequest:
branches: [main]
jobs:
inspect:
steps:
- id: structure
uses: project/validate
- uses: project/require-gcode
- uses: cam/sequence
- id: replay
uses: cam/verify इसे एक स्क्रिप्ट से प्रतिबद्ध करने के लिए, YAML से हाथ से बचने के बजाय एक सीरियलाइज़र के साथ JSON बॉडी का निर्माण करें:
const body = {
message: "Add committed review checks",
files: { ".cadcamfun/workflows/review.yml": await Bun.file("review.yml").text() }
}
const encoded = JSON.stringify(body) प्रतिबद्धता अभी भी सभी मौजूदा कामकाजी संसाधनों का स्नैपशॉट लेती है। इसे रिकॉर्ड करने से पहले YAML को सत्यापित करें: इतिहास प्रतिबद्धता सफल हो सकती है जबकि परिणामी अमान्य वर्कफ़्लो को बाद में विफल रन के रूप में दर्ज किया जाता है। उत्पादन इंजन स्कीमा, निर्भरता, चक्र, डुप्लिकेट चरण आईडी और पंजीकृत उपयोग पहचानकर्ताओं की जांच करता है।
चेक भेजना और उनके साक्ष्य की व्याख्या करना
POST /api/projects/:id/actions/dispatch एक वैकल्पिक रेफरी स्वीकार करता है और उस प्रतिबद्ध रेफरी से मेल खाने वाले प्रत्येक मैन्युअल वर्कफ़्लो को चलाता है। यह एकल-वर्कफ़्लो-नाम चयनकर्ता नहीं है. क्रियाओं/कार्यप्रवाहों पर परिभाषाएँ पढ़ें और क्रियाओं/रनों पर निरंतर परिणाम पढ़ें। सेवा डिफ़ॉल्ट रूप से नवीनतम 50 रन लौटाती है।
एक रन वर्कफ़्लो, ट्रिगर, रेफरी, SHA, टाइमस्टैम्प, स्थिति और घटनाओं को रिकॉर्ड करता है। नौकरियाँ निर्भरता के स्तर का पालन करती हैं; स्वतंत्र नौकरियां समवर्ती रूप से चल सकती हैं, जबकि नौकरी के चरण अनुक्रमिक होते हैं। अज्ञात उपयोग पहचानकर्ता निष्पादन से पहले विफल हो जाते हैं। यदि मान सफलता, विफलता या हमेशा है, तो कोई मनमानी अभिव्यक्ति नहीं है। एक असफल निर्भरता अपने डाउनस्ट्रीम कार्य को पूरी तरह से छोड़ देती है।
सीएएम आउटपुट की सावधानीपूर्वक व्याख्या करें। cam/verify और cam/gcode निरीक्षण प्रतिबद्ध Toolpath.data.request. छोड़े गए आउटपुट में गुम अनुरोध, असमर्थित टूलपाथ, या गुम एनसी की सूचना दी जा सकती है। सत्यापित = 0 के साथ एक सफल रन सत्यापन प्रमाण नहीं है। प्रोजेक्ट/आवश्यकता-जीकोड मौजूदा टूलपाथ की जांच करता है; बिना टूलपाथ वाला प्रोजेक्ट इसे शून्य रूप से संतुष्ट कर सकता है।
स्वचालित HTTP पुश-ट्रिगर एकीकरण वर्तमान में कोई परिवर्तित पथ प्रदान नहीं करता है, इसलिए पुश पथ फ़िल्टर उन घटनाओं से मेल नहीं खाता है। इस एकीकरण के लिए केवल शाखा फ़िल्टर या स्पष्ट मैन्युअल प्रेषण का उपयोग करें। HTTP लाइव प्रारंभ/समाप्त ईवेंट सिंक्रोनस रन रिटर्न के बाद प्रकाशित होते हैं; टिकाऊ परिणामों के लिए सहेजे गए रनों का उपयोग करें।
लेखन वर्कफ़्लो चरण वर्तमान स्थिति को पढ़ता है
वर्तमान वीसीएस/प्रतिबद्ध चरण क्लीन-वर्किंग-कॉपी गार्ड के बिना परियोजना प्रतिबद्धता को सौंपता है। यह चेक-आउट शाखा पर वर्तमान कार्यशील डेटाबेस संसाधनों को प्रतिबद्ध करता है, जो रन के रेफरी से भिन्न हो सकता है। इसकी अनुमत अतिरिक्त फ़ाइलें उस व्यापक स्नैपशॉट दुष्प्रभाव को नहीं रोकती हैं। इसका उपयोग केवल तभी करें जब उस वर्तमान शाखा और कार्यशील स्थिति को प्रतिबद्ध करने का इरादा हो।
किसी प्रस्ताव को खोलें, समीक्षा करें और मर्ज करें
शीर्षक, शीर्ष, वैकल्पिक मुख्य भाग और आधार (डिफ़ॉल्ट रूप से मुख्य) के साथ एक स्थानीय पुल अनुरोध खोलें। सिर और आधार अलग-अलग होने चाहिए, और जिस आधार में पहले से ही सिर मौजूद है उसमें विलय करने के लिए कुछ भी नहीं है। प्रतिक्रिया में समीक्षा और मर्ज समापन बिंदुओं द्वारा उपयोग किया जाने वाला एक प्रोजेक्ट-स्थानीय नंबर शामिल है।
curl --fail-with-body \
-H "Authorization: Bearer $CADCAMFUN_TOKEN" -H "Content-Type: application/json" \
--data '{"title":"Review blank label","head":"proposal/blank-label","base":"main","body":"Metadata change and committed checks."}' \
"$CADCAMFUN_URL/api/projects/$PROJECT_ID/pulls" GET /pulls/:number अनुरोध, समीक्षा और परिवर्तन लौटाता है। समीक्षाएँ वैकल्पिक पथ/सूचक के साथ टिप्पणी स्वीकार करती हैं, अनुमोदन करती हैं, या परिवर्तन का अनुरोध करती हैं। प्रति समीक्षक नवीनतम गैर-टिप्पणी निर्णय अनुरोध-परिवर्तन ब्लॉक को नियंत्रित करता है। बाद की टिप्पणी से यह स्पष्ट नहीं होता; उस समीक्षक को एक अद्यतन स्वीकृत निर्णय प्रस्तुत करना होगा। जब कोई अवरोधक निर्णय नहीं रहता है तो कार्यान्वयन में कोई सकारात्मक अनुमोदन-गणना की आवश्यकता नहीं होती है।
POST /pulls/:number/merge के लिए अनुरक्षक पहुंच की आवश्यकता होती है। एआई अभिनेता मुख्य में विलय नहीं कर सकते। यदि आधार की जांच की जाती है, तो सेवा को एक साफ कार्यशील प्रतिलिपि की आवश्यकता होती है और मर्ज किए गए स्नैपशॉट को डेटाबेस पर लागू किया जाता है। यदि किसी अन्य शाखा की जाँच की जाती है, तो वह उस वर्तमान कार्यशील डेटाबेस को प्रतिस्थापित किए बिना आधार रेफरी को अद्यतन करती है। मर्ज तेजी से आगे बढ़ सकते हैं या मर्ज कमिट बना सकते हैं; दो माता-पिता मानने के बजाय वंश का निरीक्षण करें।
मर्ज किए गए पुल-अनुरोध अंतर रिकॉर्ड किए गए मर्ज कमिट का उपयोग करते हैं, रेफरी मूव के बाद समीक्षा दृश्य को संरक्षित करते हैं। स्थानीय पुल अनुरोध एप्लिकेशन समीक्षा रिकॉर्ड हैं, स्वचालित रूप से GitHub पुल अनुरोध नहीं।
इतिहास को दोबारा लिखे बिना सामग्री को पुनर्स्थापित करें
POST /vcs/restore एक रेव और वैकल्पिक पथ लेता है। इसके लिए अनुरक्षक पहुंच और एक साफ कामकाजी प्रतिलिपि की आवश्यकता होती है, और पिछली सामग्री वाली एक नई प्रतिबद्धता बनाता है। यह शाखा को पीछे की ओर रीसेट नहीं करता है और हस्तक्षेप करने वाली प्रतिबद्धताओं को मिटा नहीं देता है। फिर सेवा कार्यशील डेटाबेस पर नया HEAD लागू करती है।
{
"rev": "earlier-commit-oid",
"paths": ["drawings/actual-drawing-id.json"]
} पथ को वास्तविक ट्रैक किए गए संसाधन से बदलें और पहले उसके अंतर का निरीक्षण करें। पथों को छोड़ने से पूरा पुराना पेड़ पुनर्स्थापित हो जाता है; जो कई संबंधित संसाधनों को प्रतिस्थापित या हटा सकता है। संपूर्ण-प्रोजेक्ट स्नैपशॉट में संदर्भित लाइब्रेरी आइटम और लागतें भी होती हैं ताकि पुनर्स्थापित टूलपाथ निर्भरता बनाए रख सकें। संसाधन-संस्करण पुनर्स्थापना और प्रोजेक्ट-इतिहास पुनर्स्थापना के अलग-अलग दायरे हैं।
विनिर्माण स्रोत को पुनर्स्थापित करने के बाद, निरीक्षण करें कि क्या सहेजा गया मूल आउटपुट अभी भी इच्छित ड्राइंग संशोधन से मेल खाता है। एक इतिहास ऑपरेशन पहले की कलाकृतियों को संरक्षित करता है; यह उस कलाकृति को नए संशोधित चित्र के साक्ष्य में नहीं बदलता है।
मिरर ने इतिहास रचा और संघर्षों को पुनः प्राप्त किया
GitHub दर्पण वैकल्पिक है. PUT /vcs/remote के साथ स्वामी/रेपो स्ट्रिंग पर रिमोट सेट करें, या अलग करने के लिए शून्य सेट करें। उस कॉल के लिए x-github-टोकन में उपयोगकर्ता के GitHub टोकन का उपयोग करके पुश और पुल करें; यह प्रोजेक्ट JSON में सहेजा नहीं गया है। इन HTTP परिचालनों के लिए अनुरक्षक पहुंच आवश्यक है।
पुश पहुंच योग्य ऑब्जेक्ट अपलोड करता है और अनपुल्ड रिमोट कमिट को अधिलेखित करने से इंकार कर देता है। पुल के लिए एक साफ़ कार्यशील प्रतिलिपि की आवश्यकता होती है, दूरस्थ शाखा लाती है, और विलय करती है। एक संरचनात्मक JSON संघर्ष आंशिक रिपॉजिटरी मर्ज कमिट लिखे बिना पथ और पॉइंटर्स की पहचान करता है। दोनों पक्षों का निरीक्षण करें, एक सुविचारित समाधान बनाएं और एक पक्ष को दूसरे पर थोपने के बजाय पुनः प्रयास करें।
HTTP 409 का अर्थ आमतौर पर गंदी स्थिति या मर्ज विरोध होता है; 403 का अर्थ अनुरक्षक या एआई-मुख्य प्रतिबंध हो सकता है; 404 का अर्थ दुर्गम परियोजना या अज्ञात संशोधन हो सकता है; 400 में अमान्य नाम, खाली संदेश, या कोई परिवर्तन नहीं शामिल है। डेटाबेस विफलता सर्वर संग्रहण त्रुटि को मैप करती है। बेमेल का निदान करते समय ओआईडी और विफलता संदेश को सुरक्षित रखें।
स्रोत उत्पत्ति: packages/vcs/src/repository.ts, json.ts, snapshot.ts, github.ts; apps/sidecar/src/services/project-vcs.ts, repos/project-vcs-repo.ts, और http/vcs.ts; वर्कफ़्लो स्कीमा/रनर इन packages/workflow/src और साइडकार workflow-runner.ts/workflow-steps.ts.
समीक्षाएँ मर्ज का निर्णय कैसे करती हैं
- फ़ीचर शाखा से एक पुल अनुरोध खोलें (एक एआई अभिनेता को इसका उपयोग करना होगा
ai/*शाखा) मेंmain. - समीक्षक प्रस्तुत करते हैं
comment,approve, याrequest-changes, वैकल्पिक रूप से एक फ़ाइल से जुड़ा हुआpathऔर एक JSONpointer. - मर्ज के समय, सेवा प्रत्येक समीक्षक का नवीनतम गैर-टिप्पणी निर्णय लेती है। यदि उनमें से कोई है
request-changes, विलय विफल हो जाता हैblocked: "एक समीक्षक ने परिवर्तन का अनुरोध किया"। - यदि आधार शाखा की जाँच की जाती है, तो उसकी कार्यशील प्रति साफ़ होनी चाहिए।
- मर्ज प्रति JSON प्रॉपर्टी तीन-तरफ़ा है। संघर्ष अपने पथ और संकेत के साथ लौट आते हैं, और कुछ भी प्रतिबद्ध नहीं होता है।
- के साथ कार्यप्रवाह
on.pullRequestपुल अनुरोध खोले जाने पर आधार शाखा से मिलान किया जाता है, ताकि उनके परिणाम समीक्षा के दौरान उपलब्ध हों।
| परिस्थिति | क्या करें |
|---|---|
blocked एक एआई अभिनेता के लिए main | एक पर प्रतिबद्ध ai/* शाखा और एक पुल अनुरोध खोलें; एक व्यक्ति इसे विलीन कर देता है. |
conflict पर /width का drawings/d1.json | एक शाखा पर मूल्य तय करें, प्रतिबद्ध करें और फिर से विलय करें। |
dirty | पहले स्थानीय संपादन करें या त्यागें; स्वचालित कदम कभी भी अधूरे काम को अवशोषित नहीं करते हैं। |
nothing-to-commit | सहेजे गए संसाधन पहले से ही अंतिम प्रतिबद्धता से मेल खाते हैं। |
व्यंजनों को पुनर्स्थापित करें
// Bring back one drawing as it was three commits ago
const old = repo.log()[3].oid
repo.restorePaths(old, ["drawings/d1.json"], me, "Restore plate outline")
// Make the whole tree equal to an older commit (a new commit on top)
repo.revertTo(old, me) // message defaults to "Restore <rev>"
// Who changed a toolpath, most recent first
repo.fileLog("toolpaths/op1.json").map((e) => e.message) दोनों पुनर्स्थापना ऑपरेशन एक नई प्रतिबद्धता जोड़ते हैं, इसलिए पुरानी स्थिति को स्वयं पूर्ववत किया जा सकता है और इतिहास साझा करने योग्य बना रहता है। किसी टूलपाथ फ़ाइल को उसके द्वारा संदर्भित सामग्री या टूल के बिना पुनर्स्थापित करने से संदर्भ लटक सकते हैं; उसी कॉल में उन लाइब्रेरी फ़ाइलों को पुनर्स्थापित करें।
एक संपूर्ण समीक्षा सत्र, कैप्चर किया गया
नीचे दी गई प्रत्येक प्रतिक्रिया एक नए प्रोजेक्ट पर चल रहे साइडकार से ली गई थी (आईडी छोटी की गई)। पथ सापेक्ष हैं /api/projects/{id}/.
# fresh project with one drawing
GET vcs/status
{"branch":"main","head":null,"dirty":["drawings/2f315a02-….json","project.json"]}
POST vcs/commit {"message":"Baseline"}
{"oid":"8bdded63…","parents":[],"message":"Baseline\n","author":{"name":"Local user",…}}
POST vcs/branches {"name":"thicker"}
{"current":"main","branches":{"main":"8bdded63…","thicker":"8bdded63…"}}
POST vcs/checkout {"branch":"thicker"}
{"branch":"thicker","head":"8bdded63…","dirty":[]}
PUT /api/drawings/{id} {"name":"Plate 12mm"}
GET vcs/status
{"branch":"thicker","head":"8bdded63…","dirty":["drawings/2f315a02-….json"]}
POST vcs/commit {"message":"Rename plate"}
{"oid":"a6869011…","parents":["8bdded63…"],…}
GET vcs/diff?from=main&to=thicker
[{"path":"drawings/2f315a02-….json","kind":"drawings","id":"2f315a02-…","name":"Plate 12mm",
"status":"modified","changes":[
{"pointer":"/name","before":"Plate","after":"Plate 12mm"},
{"pointer":"/updatedAt","before":"…09:20.069Z","after":"…09:20.168Z"}]}]
POST pulls {"title":"Thicker plate","head":"thicker","base":"main"}
{"number":1,"state":"open","authorKind":"user","mergeCommit":null,…}
POST pulls/1/reviews {"verdict":"approve","body":"Looks good"}
{"verdict":"approve","body":"Looks good","path":null,"pointer":null,…}
POST pulls/1/merge
{"number":1,"state":"merged","mergeCommit":"a6869011…",…}
POST pulls/1/merge (again)
{"_tag":"BadRequest","message":"Pull request is not open"} | आपने क्या देखा | इसका क्या मतलब है |
|---|---|
head: null पहली प्रतिबद्धता से पहले | रिपॉजिटरी मौजूद है लेकिन अभी तक कोई प्रतिबद्धता नहीं है; हर संसाधन गंदा है |
गंदे रास्ते जैसे drawings/<id>.json, project.json | कार्यशील प्रति को प्रति संसाधन एक JSON फ़ाइल के रूप में क्रमबद्ध किया गया है |
| एक नई शाखा वर्तमान शीर्ष पर इंगित करती है | बिना from, शाखा वर्तमान शीर्ष पर शुरू होती है |
| अंतर परिवर्तन JSON पॉइंटर्स हैं | परिवर्तन प्रति संपत्ति रिपोर्ट किए जाते हैं (/name), प्रति पंक्ति नहीं |
updatedAt भी बदल गया | टाइमस्टैम्प को संसाधन के साथ संस्करणित किया जाता है, इसलिए प्रत्येक सेव दिखाई देता है |
mergeCommit शाखा प्रमुख के बराबर है | main स्थानांतरित नहीं हुआ था, इसलिए विलय तेजी से आगे बढ़ा |
| दो बार विलय → 400 | केवल खुले पुल अनुरोधों को ही मर्ज या बंद किया जा सकता है |
समीक्षा और क्वेरी फ़ील्ड
| अनुरोध | खेत |
|---|---|
POST pulls/{number}/reviews | verdict (आवश्यक): comment, approve या request-changes; वैकल्पिक body, और path + pointer एक संपत्ति पर समीक्षा को स्थापित करने के लिए। किसी भी अन्य फैसले को 400 के साथ खारिज कर दिया जाता है। |
GET pulls/{number} | रिटर्न pullRequest, इसका reviews और संरचनात्मक changes आधार और सिर के बीच |
GET pulls?state=… | सूची को राज्य के अनुसार फ़िल्टर करें |
GET vcs/log?rev=&limit=&path= | एक संशोधन से इतिहास, सीमित, वैकल्पिक रूप से एक संसाधन पथ के लिए |
GET vcs/diff?from=&to= | दो संशोधनों या शाखाओं के बीच संरचनात्मक अंतर |
POST vcs/restore | rev (आवश्यक), वैकल्पिक paths. एक अज्ञात संशोधन उत्तर देता है 404 Unknown revision <rev>. |
GET/PUT vcs/remote, POST vcs/push, POST vcs/pull | दर्पण रिमोट को कॉन्फ़िगर करें और एक शाखा को धक्का दें या खींचें |