Skip to content

Anthropic built Scion for itself. Carbon Forge is yours →

Carbon Forge
Menu

गाइड

Carbon Forge वर्कस्पेस को किसी cut पर वापस ले जाएँ

मान लीजिए किसी एजेंट ने रात भर में चालीस पन्ने दोबारा लिख दिए और आपको कल वाली स्थिति वापस चाहिए। Carbon Forge में यह किसी cut के लिए एक कॉल है, और यह कुछ नहीं हटाती: बहाली एक नए changeset के रूप में लैंड होती है, इसलिए रात का काम और उसका पलटना इतिहास में साथ-साथ रहते हैं।

अन्य भाषाओं में: English, Español, Português, 日本語, Deutsch, Français, 한국어, 简体中文, Italiano · हिन्दी में सभी गाइड

खुलासा: Carbon Forge को हम 100monkeys.ai पर बनाते हैं, इसलिए इसे बनाने वाले का विवरण मानकर पढ़ें। इस गाइड का मसौदा हमारे एक AI एजेंट ने सार्वजनिक दस्तावेज़ों (अंग्रेज़ी में) से तैयार किया, ख़ासकर Snapshots कैटलॉग पन्ने और Working in lanes से, और कंपनी ने इसकी समीक्षा की; यह हिन्दी संस्करण मूल अंग्रेज़ी गाइड का अनुवाद है। टूल के नाम, आर्ग्युमेंट और उद्धृत वाक्य दस्तावेज़ों के अपने हैं, उद्धरण अंग्रेज़ी में और अनुवाद साथ में; दस्तावेज़ इन कॉल के लिए कोई पूरा JSON नहीं देते, इसलिए यहाँ भी नहीं दिखाया गया। जहाँ दस्तावेज़ कोई सवाल खुला छोड़ते हैं, आख़िरी हिस्सा यह बताता है।

snapshot और cut क्या हैं

snapshot हर पन्ने, atom, कोड ट्री और लाइब्रेरी प्रविष्टि का मौजूदा revision, और हर खुली lane के जीवित patch दर्ज करता है, "as one sealed manifest of ids and hashes chained to the previous snapshot." (id और hash की एक सील की हुई सूची के रूप में, जो पिछले snapshot से जुड़ी होती है)। इसमें "ids and hashes only, never a body or a blob's bytes" (सिर्फ़ id और hash, कभी कोई body या blob के bytes नहीं) होते हैं, इसलिए इसे लेना सस्ता है। cut किसी एक snapshot का नाम है, और "it never moves." (वह कभी नहीं खिसकता)। snapshot और cut केवल जोड़े जा सकते हैं: "the database refuses to change or remove either while the workspace exists." (जब तक वर्कस्पेस है, डेटाबेस दोनों में से किसी को बदलने या हटाने से इनकार करता है)।

जिस स्थिति को आप वापस चाह सकते हैं उसका cut बनाएँ

किसी बड़े या जोखिम भरे बदलाव से पहले name के साथ snapshots.cut कॉल करें। नाम 1 से 128 अक्षरों, अंकों, बिंदुओं, हाइफ़न और अंडरस्कोर का होता है, और किसी अक्षर या अंक से शुरू होता है; दस्तावेज़ों के उदाहरण हैं stable, v0.9 और release-2026.10.16। किसी नाम का दोबारा उपयोग अस्वीकार होता है, क्योंकि cut कभी नहीं खिसकता: अस्वीकृति कहती है कि नई स्थिति को नए cut से नाम दें। cut बनाने के लिए editor भूमिका चाहिए।

बाद में cut ढूँढें

cuts.list वर्कस्पेस के cut सबसे नए से शुरू करके लौटाता है, हर एक उस snapshot के साथ जिसे वह नाम देता है। cut के साथ snapshots.get एक snapshot लौटाता है: उसका digest, seal, पूर्ववर्ती, गिनतियाँ और वे खुली lane जो उसने दर्ज कीं। दोनों viewer भूमिका के लिए रीड हैं।

पढ़ें कि cut के बाद क्या बदला

cuts.notes एक सीमा के बाद से दूसरी सीमा तक लैंड हुए हर changeset को लैंड होने के क्रम में सूचीबद्ध करता है, उनके intent के पहले शब्द से समूहित। उसका to कोई cut या snapshot id होना चाहिए, इसलिए cut की तुलना वर्कस्पेस की अभी की स्थिति से करने के लिए पहले बिना नाम के snapshots.cut कॉल करें, फिर अपना cut from और नए snapshot का id to के रूप में दें। जिन पथों की आपको परवाह है, केवल उन्हें छूने वाले changeset रखने के लिए path_glob जोड़ें। हर changeset अपना intent, कर्ता, वह lane जिससे वह लैंड हुआ और छुए गए पथ बताता है, जो आमतौर पर यह देखने के लिए काफ़ी है कि आप किसका काम पलटने वाले हैं।

किसी एक entity को वैसे देखें जैसे cut उसे रखता है

cut के साथ snapshots.materialize cut की सूची का एक पन्ना लौटाता है, हर प्रविष्टि इन फ़ील्ड के साथ:

kind, entity_id, revision_id, content_hash, seal_hash, path, title

entity_id जोड़ें और वह उस entity को उस revision पर लौटाता है जिसे cut बताता है: पन्ने की body और metadata, atom की body, ट्री की प्रविष्टियाँ, लाइब्रेरी प्रविष्टि का hash। "The same snapshot answers the same every time." (एक ही snapshot हर बार एक ही जवाब देता है)। जिस प्रविष्टि का revision बाद में purge हो गया हो, वह purged लौटाती है और उसमें कोई सामग्री नहीं होती।

जाँचें कि revert कौन कर सकता है

snapshots.revert के लिए admin भूमिका चाहिए, और टोकन presets में यह केवल full में है, इसलिए SCM agent या SCM release टोकन वाला एजेंट इसे कॉल नहीं कर सकता। जिस वर्कस्पेस का trunk सुरक्षित है, वहाँ ऐसा revert जो कोई कोड ट्री या लाइब्रेरी प्रविष्टि लिखे, या जहाँ पन्ने भी सुरक्षित हैं वहाँ कोई पन्ना या atom लिखे, कुछ भी लिखे जाने से पहले अस्वीकार होता है: workspace <slug> protects its trunk: the trunk lands by lanes.land only; write on a lane।

cut पर revert करें

cut और intent (changeset का संदेश, 1 से 4,096 अक्षर) के साथ snapshots.revert कॉल करें। "Revert is forward only: nothing is removed or rewritten." (revert केवल आगे की ओर है: कुछ भी हटाया या दोबारा नहीं लिखा जाता)। जिस भी entity की सामग्री cut से अलग है, उसे cut की सामग्री वाला एक नया revision मिलता है, सब एक सील किए changeset में। बहाल किए गए पन्ने या atom के revision पर टिप्पणी होती है Restored from cut <cut> (R#<revision>)। जहाँ cut ने पथ और शीर्षक दर्ज किए थे, वहाँ नाम बदला गया पन्ना अपने पुराने पथ और शीर्षक पर लौटता है, और जिस पथ को वह छोड़ता है वह उसी पर redirect करता रहता है। फिर एक नया snapshot बनता है, जिस पर उस cut का निशान होता है जिससे revert हुआ।

जवाब पढ़ें

जवाब इन फ़ील्ड वाला नया snapshot है:

snapshot, cut, changeset_id, restored, unchanged, extraneous, collisions

हर restored पंक्ति यह है:

kind, entity_id, from_revision_id, new_revision_id

unchanged एक गिनती है। collisions उन entity की सूची है जिनका पुराना पथ अब कोई दूसरा जीवित पन्ना या atom रखता है: वहाँ "the body and metadata alone are restored, and nothing moves." (केवल body और metadata बहाल होते हैं, और कुछ नहीं खिसकता)। दो अस्वीकृतियाँ कुछ भी नहीं लिखतीं: ऐसा cut जो किसी purge हुए revision को बताता है, या कोई entity जो अब ट्रैश में है, जिसे पहले बहाल करने को अस्वीकृति कहती है; और ऐसा cut जिससे वर्कस्पेस पहले से मेल खाता है, जिसका जवाब है Every entity already holds what cut <cut> names; nothing changes.

जो revert छोड़ देता है उससे निपटें

"Entities created after the cut are reported as extraneous and left as they are." (cut के बाद बनी entity extraneous के रूप में बताई जाती हैं और जैसी हैं वैसी छोड़ दी जाती हैं)। रात वाले एजेंट का बनाया पन्ना revert के बाद भी वहीं है; हर एक के लिए तय करें कि वह रहे या नहीं। क्योंकि revert भी किसी दूसरे changeset जैसा एक changeset है, रात का काम और उसका पलटना दोनों इतिहास में पढ़ने योग्य रहते हैं, और revert के आर-पार चलाया गया cuts.notes दोनों दिखाता है। पूरे वर्कस्पेस के बजाय एक लैंडिंग के लिए, changesets.revert एक changeset पलटता है, और वह lane लेता है, इसलिए सुरक्षित trunk पर उसे किसी lane पर रखकर वहाँ से लैंड किया जा सकता है।

cut से रिलीज़ को नाम देने और उन्हें प्रकाशित करने के लिए हमारी गाइड पढ़ें: Carbon Forge में रिलीज़ काटें और उसे GitHub पर पुश करें।

दस्तावेज़ किन सवालों का जवाब नहीं देते

एक changeset में एक बुरी रात पलटें।