यहां दिए गए फ़ंक्शन यहां से लोड किए जा सकते हैं
@bazel_tools//tools/build_defs/repo:git.bzl
.
बाहरी git डेटा स्टोर करने की जगहों की क्लोनिंग करने के नियम.
git_repository
git_repository(name, branch, build_file, build_file_content, commit, init_submodules, patch_args, patch_cmds, patch_cmds_win, patch_tool, patches, recursive_init_submodules, remote, repo_mapping, shallow_since, strip_prefix, tag, verbose, workspace_file, workspace_file_content)
किसी बाहरी Git डेटा स्टोर करने की जगह को क्लोन करना.
यह किसी Git रिपॉज़िटरी को क्लोन करता है, तय किए गए टैग की जांच करता है या कमिट करता है. साथ ही, इसके टारगेट को बाइंड करने के लिए उपलब्ध कराता है. आईडी का आईडी भी तय करें चेक आउट और इसकी तारीख को कमिट करके, पैरामीटर के साथ लिखवाने की सुविधा का इस्तेमाल करता है जो इस नियम का पुनः बनाने योग्य वर्शन प्रदान करते हैं (जो आवश्यक रूप से टैग नहीं है है).
Baज़ल, सबसे पहले सिर्फ़ तय की गई कमिटी का शैलो फ़ेच करने की कोशिश करेगा. अगर ऐसा नहीं होता है (आम तौर पर, सर्वर के काम न करने की वजह से), तो यह पूरी तरह से रिपॉज़िटरी को फ़ेच करेगा.
git_repository
से http_archive
को प्राथमिकता दें.
इसकी वजहें ये हैं:
- Git रिपॉज़िटरी के नियम सिस्टम
git(1)
पर निर्भर करते हैं, जबकि एचटीटीपी डाउनलोडर बनाया गया है और इसकी कोई सिस्टम डिपेंडेंसी नहीं है. http_archive
urls
की सूची को मिरर के रूप में इस्तेमाल करता है, औरgit_repository
सिर्फ़ काम करता है एकremote
.http_archive
, रिपॉज़िटरी कैश मेमोरी के साथ काम करता है, लेकिनgit_repository
के साथ नहीं. ज़्यादा जानकारी के लिए, #5116 देखें.
विशेषताएं
name |
नाम; यह ज़रूरी है
इस रिपॉज़िटरी के लिए कोई यूनीक नाम. |
branch |
String; ज़रूरी नहीं
शाखा को चेक आउट किया जा सकता है. ब्रैंच, टैग या कमिट में से किसी एक की जानकारी देना ज़रूरी है. |
build_file |
लेबल; ज़रूरी नहीं
डेटा स्टोर करने की इस फ़ाइल के लिए, बिल्ड फ़ाइल के तौर पर इस्तेमाल की जाने वाली फ़ाइल. यह एट्रिब्यूट एक ऐब्सलूट लेबल है. मुख्य रेपो के लिए, '@//' का इस्तेमाल करें. फ़ाइल का नाम BUILD देना ज़रूरी नहीं है, लेकिन यह हो सकता है (BUILD.new-repo-name जैसा कुछ इस तरह से काम कर सकता है कि इसे रिपॉज़िटरी की असल BUILD फ़ाइलों से अलग किया जा सके. |
build_file_content |
स्ट्रिंग; ज़रूरी नहीं
इस रिपॉज़िटरी के लिए BUILD फ़ाइल का कॉन्टेंट. |
commit |
स्ट्रिंग; ज़रूरी नहीं
करने का वादा किया. ब्रैंच, टैग या कमिट में से किसी एक की जानकारी देना ज़रूरी है. |
init_submodules |
बूलियन; ज़रूरी नहीं
रिपॉज़िटरी में सबमॉड्यूल का क्लोन बनाना है या नहीं. |
patch_args |
स्ट्रिंग की सूची; ज़रूरी नहीं
पैच टूल को दिए गए आर्ग्युमेंट. डिफ़ॉल्ट रूप से -p0 पर सेट होता है. हालांकि, git से जनरेट किए गए पैच के लिए आम तौर पर -p1 की ज़रूरत होगी. अगर एक से ज़्यादा -p आर्ग्युमेंट तय किए गए हैं, तो आखिरी वाला आर्ग्युमेंट लागू होगा.अगर -p के अलावा किसी अन्य आर्ग्युमेंट के बारे में बताया जाता है, तो Basel-नेटिव पैच लागू करने के बजाय, पैच कमांड लाइन टूल का इस्तेमाल करेगा. अगर पैच कमांड लाइन टूल का इस्तेमाल किया जा रहा है और patch_tool एट्रिब्यूट की वैल्यू नहीं दी गई है, तो `patch` का इस्तेमाल किया जाएगा. |
patch_cmds |
स्ट्रिंग की सूची; ज़रूरी नहीं
पैच लागू होने के बाद, Linux/Macos पर Bash कमांड का क्रम. |
patch_cmds_win |
स्ट्रिंग की सूची; ज़रूरी नहीं
पैच लागू होने के बाद, Windows पर लागू किए जाने वाले Powershell निर्देशों का क्रम. अगर यह एट्रिब्यूट सेट नहीं है, तो Windows पर Pat_cmds का इस्तेमाल किया जाएगा. इसके लिए, Bash बाइनरी का मौजूद होना ज़रूरी है. |
patch_tool |
String; ज़रूरी नहीं
इस्तेमाल करने के लिए पैच(1) की सुविधा. अगर यह जानकारी दी गई है, तो Bazel, Bazel के पैच लागू करने के बजाय, बताए गए पैच टूल का इस्तेमाल करेगा. |
patches |
लेबल की सूची; ज़रूरी नहीं
उन फ़ाइलों की सूची जिन्हें संग्रह से निकालने के बाद, पैच के तौर पर लागू किया जाना है. डिफ़ॉल्ट रूप से, यह BaZ-नेटिव पैच लागू करने की सुविधा का इस्तेमाल करता है, जो फ़ज़ मैच और बाइनरी पैच के साथ काम नहीं करता. हालांकि, अगर `patch_tool` एट्रिब्यूट के बारे में बताया गया है या `patch_orgs` एट्रिब्यूट में `-p` के अलावा कोई अन्य आर्ग्युमेंट हैं, तो Baज़र, पैच कमांड लाइन टूल का इस्तेमाल करने लगेगा. |
recursive_init_submodules |
बूलियन; ज़रूरी नहीं
क्या रिपॉज़िटरी में सबमॉड्यूल को बार-बार क्लोन करना है. |
remote |
String; आवश्यक
रिमोट Git रिपॉज़िटरी का यूआरआई |
repo_mapping |
शब्दकोश: स्ट्रिंग -> String; आवश्यक
लोकल रिपॉज़िटरी के नाम से लेकर ग्लोबल रिपॉज़िटरी के नाम तक का डिक्शनरी. इससे, इस रिपॉज़िटरी की डिपेंडेंसी के लिए फ़ाइल फ़ोल्डर डिपेंडेंसी रिज़ॉल्यूशन को कंट्रोल किया जा सकता है. उदाहरण के लिए, एक एंट्री `"@foo": "@bar"` से यह पता चलता है कि जब भी यह डेटा स्टोर करने की जगह `@foo` पर निर्भर होती है (जैसे कि `@foo//some:target` पर निर्भरता, तो इसे दुनिया भर में एलान किए गए `@bar` (`@bar//some:target`) में डिपेंडेंसी को असल में ठीक करना चाहिए. |
shallow_since |
स्ट्रिंग; ज़रूरी नहीं
यह तारीख ज़रूरी नहीं है. यह तय की गई कमिट के बाद की नहीं होनी चाहिए. अगर कोई टैग या शाखा तय की गई है, तो इस आर्ग्युमेंट की अनुमति नहीं है. --depth=1 का इस्तेमाल करके, शाखा को हमेशा क्लोन किया जा सकता है. तय की गई कमिट के करीब ऐसी तारीख सेट करने से, रिपॉज़िटरी के शैलो क्लोन की अनुमति मिल सकती है. भले ही, सर्वर आर्बिटरी कमिट के शैलो फ़ेच की सुविधा न देता हो. Git's --हैलो-से-इन लागू करने में गड़बड़ी की वजह से, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव नहीं दिया जाता है, क्योंकि इससे फ़ेच करने में गड़बड़ी हो सकती है. |
strip_prefix |
String; ज़रूरी नहीं
निकाली गई फ़ाइलों से हटाने के लिए, डायरेक्ट्री का प्रीफ़िक्स. |
tag |
String; ज़रूरी नहीं
टैग को चेक आउट करने के लिए रिमोट रिपॉज़िटरी में ब्रांच, टैग या कमिट में से किसी एक को सटीक रूप से बताया जाना चाहिए. |
verbose |
बूलियन; ज़रूरी नहीं |
workspace_file |
लेबल; ज़रूरी नहीं
इस डेटा स्टोर करने की जगह के लिए `वर्कस्पेस` फ़ाइल के तौर पर इस्तेमाल की जाने वाली फ़ाइल. `workspace_file` या `workspace_file_content` में से किसी एक का इस्तेमाल किया जा सकता है. इसके अलावा, दोनों का इस्तेमाल नहीं किया जा सकता. |
workspace_file_content |
स्ट्रिंग; ज़रूरी नहीं
इस रिपॉज़िटरी के लिए WORKSPACE फ़ाइल का कॉन्टेंट. `workspace_file` या `workspace_file_content` में से किसी एक का इस्तेमाल किया जा सकता है. इसके अलावा, दोनों का इस्तेमाल नहीं किया जा सकता. |
new_git_repository
new_git_repository(name, branch, build_file, build_file_content, commit, init_submodules, patch_args, patch_cmds, patch_cmds_win, patch_tool, patches, recursive_init_submodules, remote, repo_mapping, shallow_since, strip_prefix, tag, verbose, workspace_file, workspace_file_content)
किसी बाहरी Git डेटा स्टोर करने की जगह को क्लोन करना.
यह किसी Git रिपॉज़िटरी को क्लोन करता है, तय किए गए टैग की जांच करता है या कमिट करता है. साथ ही, इसके टारगेट को बाइंड करने के लिए उपलब्ध कराता है. आईडी का आईडी भी तय करें चेक आउट और इसकी तारीख को कमिट करके, पैरामीटर के साथ लिखवाने की सुविधा का इस्तेमाल करता है जो इस नियम का पुनः बनाने योग्य वर्शन प्रदान करते हैं (जो आवश्यक रूप से टैग नहीं है है).
Baज़ल, सबसे पहले सिर्फ़ तय की गई कमिटी का शैलो फ़ेच करने की कोशिश करेगा. अगर यह काम नहीं करता है (आम तौर पर, सर्वर की सुविधा न होने की वजह से), तो यह वापस डेटा स्टोर करने की जगह को पूरी तरह फ़ेच कर सकता है.
git_repository
के बजाय, http_archive
का इस्तेमाल करें.
इसकी वजहें ये हैं:
- Git रिपॉज़िटरी के नियम सिस्टम
git(1)
पर निर्भर करते हैं, जबकि एचटीटीपी डाउनलोडर बनाया गया है और इसकी कोई सिस्टम डिपेंडेंसी नहीं है. http_archive
, मिरर के तौर परurls
की सूची के साथ काम करता है. वहीं,git_repository
सिर्फ़ एकremote
के साथ काम करता है.http_archive
, रिपॉज़िटरी कैश मेमोरी के साथ काम करता है, लेकिनgit_repository
के साथ नहीं. यहां जाएं: #5116 पर जाएं.
विशेषताएं
name |
नाम; यह ज़रूरी है
डेटा स्टोर करने की इस जगह के लिए यूनीक नाम. |
branch |
String; ज़रूरी नहीं
शाखा को चेक आउट किया जा सकता है. ब्रैंच, टैग या कमिट में से किसी एक की जानकारी देना ज़रूरी है. |
build_file |
लेबल; ज़रूरी नहीं
इस रिपॉज़िटरी के लिए, BUILD फ़ाइल के तौर पर इस्तेमाल की जाने वाली फ़ाइल. यह एट्रिब्यूट एक एब्सोल्यूट लेबल है. मुख्य रिपॉज़िटरी के लिए, '@//' का इस्तेमाल करें. फ़ाइल का नाम BUILD होना ज़रूरी नहीं है. हालांकि, इसे BUILD रखा जा सकता है. जैसे, BUILD.new-repo-name, जिससे इसे रिपॉज़िटरी की असल BUILD फ़ाइलों से अलग किया जा सकता है. |
build_file_content |
स्ट्रिंग; ज़रूरी नहीं
इस रिपॉज़िटरी के लिए BUILD फ़ाइल का कॉन्टेंट. |
commit |
स्ट्रिंग; ज़रूरी नहीं
करने का वादा किया. ब्रैंच, टैग या कमिट में से किसी एक की जानकारी देना ज़रूरी है. |
init_submodules |
बूलियन; ज़रूरी नहीं
रिपॉज़िटरी में सबमॉड्यूल का क्लोन बनाना है या नहीं. |
patch_args |
स्ट्रिंग की सूची; ज़रूरी नहीं
पैच टूल को दिए गए आर्ग्युमेंट. डिफ़ॉल्ट रूप से -p0 पर सेट होता है. हालांकि, git से जनरेट किए गए पैच के लिए आम तौर पर -p1 की ज़रूरत होगी. अगर एक से ज़्यादा -p आर्ग्युमेंट तय किए गए हैं, तो आखिरी वाला आर्ग्युमेंट लागू होगा.अगर -p के अलावा किसी अन्य आर्ग्युमेंट के बारे में बताया जाता है, तो Basel-नेटिव पैच लागू करने के बजाय, पैच कमांड लाइन टूल का इस्तेमाल करेगा. अगर पैच कमांड लाइन टूल का इस्तेमाल किया जा रहा है और patch_tool एट्रिब्यूट की वैल्यू नहीं दी गई है, तो `patch` का इस्तेमाल किया जाएगा. |
patch_cmds |
स्ट्रिंग की सूची; ज़रूरी नहीं
पैच लागू होने के बाद, Linux/Macos पर Bash कमांड का क्रम. |
patch_cmds_win |
स्ट्रिंग की सूची; ज़रूरी नहीं
पैच लागू होने के बाद, Windows पर लागू किए जाने वाले Powershell निर्देशों का क्रम. अगर यह एट्रिब्यूट सेट नहीं है, तो Windows पर Pat_cmds का इस्तेमाल किया जाएगा. इसके लिए, Bash बाइनरी का मौजूद होना ज़रूरी है. |
patch_tool |
String; ज़रूरी नहीं
इस्तेमाल करने के लिए पैच(1) की सुविधा. अगर यह जानकारी दी गई है, तो Bazel, Bazel के पैच लागू करने के बजाय, बताए गए पैच टूल का इस्तेमाल करेगा. |
patches |
लेबल की सूची; ज़रूरी नहीं
उन फ़ाइलों की सूची जिन्हें संग्रह से निकालने के बाद, पैच के तौर पर लागू किया जाना है. डिफ़ॉल्ट रूप से, यह Bazel-नेटिव पैच लागू करने का तरीका इस्तेमाल करता है. यह फ़ज़ मैच और बाइनरी पैच के साथ काम नहीं करता. हालांकि, अगर `patch_tool` एट्रिब्यूट की वैल्यू दी गई है या `patch_args` एट्रिब्यूट में `-p` के अलावा कोई अन्य आर्ग्युमेंट है, तो Bazel पैच कमांड लाइन टूल का इस्तेमाल करेगा. |
recursive_init_submodules |
बूलियन; ज़रूरी नहीं
क्या रिपॉज़िटरी में सबमॉड्यूल को बार-बार क्लोन करना है. |
remote |
String; आवश्यक
रिमोट Git रिपॉज़िटरी का यूआरआई |
repo_mapping |
डिकशनरी: स्ट्रिंग -> स्ट्रिंग; ज़रूरी है
लोकल रिपॉज़िटरी के नाम से लेकर ग्लोबल रिपॉज़िटरी के नाम तक का डिक्शनरी. इससे, इस रिपॉज़िटरी की डिपेंडेंसी के लिए फ़ाइल फ़ोल्डर डिपेंडेंसी रिज़ॉल्यूशन को कंट्रोल किया जा सकता है. उदाहरण के लिए, एक एंट्री `"@foo": "@bar"` से यह पता चलता है कि जब भी यह डेटा स्टोर करने की जगह `@foo` पर निर्भर होती है (जैसे कि `@foo//some:target` पर निर्भरता, तो इसे दुनिया भर में एलान किए गए `@bar` (`@bar//some:target`) में डिपेंडेंसी को असल में ठीक करना चाहिए. |
shallow_since |
स्ट्रिंग; ज़रूरी नहीं
यह तारीख ज़रूरी नहीं है. यह तय की गई कमिट के बाद की नहीं होनी चाहिए. अगर कोई टैग या शाखा तय की गई है, तो इस आर्ग्युमेंट की अनुमति नहीं है. --depth=1 का इस्तेमाल करके, शाखा को हमेशा क्लोन किया जा सकता है. तय की गई कमिट के करीब ऐसी तारीख सेट करने से, रिपॉज़िटरी के शैलो क्लोन की अनुमति मिल सकती है. भले ही, सर्वर आर्बिटरी कमिट के शैलो फ़ेच की सुविधा न देता हो. Git's --हैलो-से-इन लागू करने में गड़बड़ी की वजह से, इस एट्रिब्यूट का इस्तेमाल करने का सुझाव नहीं दिया जाता है, क्योंकि इससे फ़ेच करने में गड़बड़ी हो सकती है. |
strip_prefix |
String; ज़रूरी नहीं
निकाली गई फ़ाइलों से हटाने के लिए, डायरेक्ट्री का प्रीफ़िक्स. |
tag |
String; ज़रूरी नहीं
टैग को चेक आउट करने के लिए रिमोट रिपॉज़िटरी में ब्रांच, टैग या कमिट में से किसी एक को सटीक रूप से बताया जाना चाहिए. |
verbose |
बूलियन; ज़रूरी नहीं |
workspace_file |
लेबल; ज़रूरी नहीं
इस डेटा स्टोर करने की जगह के लिए `वर्कस्पेस` फ़ाइल के तौर पर इस्तेमाल की जाने वाली फ़ाइल. `workspace_file` या `workspace_file_content`, दोनों में से किसी को बताया जा सकता है या दोनों में से कोई भी नहीं बताया जा सकता है. |
workspace_file_content |
स्ट्रिंग; ज़रूरी नहीं
इस डेटा स्टोर करने की जगह के लिए वर्कस्पेस फ़ाइल का कॉन्टेंट. `workspace_file` या `workspace_file_content` में से किसी एक का इस्तेमाल किया जा सकता है. इसके अलावा, दोनों का इस्तेमाल नहीं किया जा सकता. |