एक परियोजना की भाषा में जीथब कैसे पता लगाता है?


84

मैं हाल ही में जावास्क्रिप्ट और C ++ दोनों में एक गितुब परियोजना पर काम कर रहा था, और ध्यान दिया कि गितुब ने परियोजना को C ++ के रूप में टैग किया था। यदि आपको किसी एक भाषा को चुनना है, तो यह संभवतः सही पदनाम है क्योंकि C ++ कोड को जावास्क्रिप्ट लाइब्रेरी के रूप में संकलित किया गया है, लेकिन इससे मुझे आश्चर्य हुआ ... जीथब ने यह कैसे पता लगाया कि प्रत्येक प्रोजेक्ट को टैग करने के लिए कौन सी भाषा है?


14
आप खुद को भाग्यशाली मान सकते हैं। मैं रेल परियोजना पर एक रूबी लिख रहा हूं, लेकिन जब से मैं ट्विटर बूटस्ट्रैप का उपयोग कर रहा हूं, गिथब का मानना ​​है कि मेरा प्रोजेक्ट जावास्क्रिप्ट है, बजाय इरादा रूबी के

2
@davblayn मुझे लगता है कि github.com/github/linguist/blob/master/lib/linguist/vendor.yml आपकी समस्या का समाधान करेगा। इसके अलावा बूटस्ट्रैप के लिए एक CDN का उपयोग करना काम करेगा।
एरिक विल्सन

3
यह प्रश्न ऑफ़-टॉपिक प्रतीत होता है क्योंकि यह प्रोग्रामिंग के बारे में नहीं है। देखें किन विषयों मैं यहाँ के बारे में पूछ सकते हैं सहायता केंद्र में। शायद वेब ऐप्स स्टैक एक्सचेंज पूछने के लिए एक बेहतर जगह होगी।
jww

यह भी देखें गलत पहचान की भाषा के लिए Github ट्रैकर पर टैग भाषाविद्
jww

1
आप परिणाम को ठगने के लिए फ़ाइल प्रकार के बारे में आँकड़े इंजन झूठ के बारे में बता सकते हैं। देखें stackoverflow.com/a/27099628/492
CAD ब्लॉ

जवाबों:


81

अप्रैल 2013 को अपडेट करें, nuclearsandwich (GitHub सपोर्ट टीम या " सपोकेट ") द्वारा:

यदि आपकी इच्छित भाषा सिंटैक्स हाइलाइटिंग प्राप्त नहीं कर रही है, तो आप इसे जोड़ने के लिए भाषाविद पुस्तकालय में योगदान कर सकते हैं।


(मूल उत्तर, अक्टूबर 2012)

GitHub समर्थन पर यह सूत्र यह बताता है:

यह बस प्रत्येक एक्सटेंशन के लिए फ़ाइल साइज़ तैयार करता है। सबसे बड़ा "जीत"।

हम फ़ाइलों को खोलने और उनकी सामग्री को पार्स करने से बचना चाहते हैं, क्योंकि दोनों प्रक्रिया को धीमा कर देंगे ... लेकिन यह इस तरह के संघर्षों को हल करने का एकमात्र तरीका हो सकता है।

चूँकि यह 100% सही नहीं है, इसने कुछ जोड़ने का नेतृत्व किया था:

मैं भी उन मामलों के लिए एक साधारण मैनुअल-ओवरराइड स्विच के लिए मतदान करूंगा जहां अनुमान गलत है।


नोट: जैसा कि मार्क रुशकॉफ़ ने अपने उत्तर में उल्लेख किया है ( उत्कीर्ण ), अनुमान तब से बेहतर हो गया जब से भाषाई परियोजना (जून 2011 से खुली- खस्ता )।
आप देख सकते हैं कि अभी भी कुछ मुद्दे हैं: GitHub भाषाविद् मुद्देअधिक जानकारी के लिए यहां
देखें :

एक बार जब भाषा का पता लगाया गया है, यह करने के लिए पारित कर दिया है Albino , एक Pygments आवरण है, जो वास्तविक वाक्य रचना हाइलाइटिंग करता है।

और आप एक .gitattributes फ़ाइल में भाषाई निर्देश जोड़ सकते हैं


2
जानकारी के लिए धन्यवाद। मुझे लगता है कि अभी भी भाषा को मैन्युअल रूप से संशोधित करने का कोई तरीका नहीं है।
दोपहर

यह अब मामला ही नहीं है! भाषाविद् के बारे में नीचे दिए गए उत्तर निशान के करीब हैं। देखें कि मेरा भंडार गलत भाषा के रूप में चिह्नित है और मेरी पसंदीदा भाषा help.github.com पर मान्यता प्राप्त क्यों नहीं है । डिस्क्लेमर: मैं गिटहब की सपोर्ट टीम पर काम करता हूं।
nuclearsandwich

@nuclearsandwich बहुत बढ़िया, मैंने आपका संपादन पूरा करते हुए उत्तर अपडेट कर दिया है। नोट: मैं GitHub मुख्यालय में शुक्रवार, 10 मई, जॉन ग्रीट और अन्य समर्थक सदस्यों के साथ बैठक करूंगा :)
VonC

मैं केवल यह जोड़ना चाहता हूं कि रिपॉजिटरी को चिह्नित नहीं करना या उपयोगकर्ता को मुख्य भाषा चुनने का तरीका स्वचालित रूप से अनुमान लगाने की तुलना में अधिक सुविधाजनक होगा, क्योंकि मेरा रिपॉजिटरी github.com/salda/file_scraper मुख्य रूप से C ++ में बिट के साथ सी है, लेकिन 70 के रूप में चिह्नित है। % उद्देश्य सी।
लुकास सालिच

13

वर्तमान में, गितुब की भाषाई परियोजना वह है जो भाषा के आँकड़ों को निर्धारित करने के लिए प्रयोग की जाती है, जैसा कि इस गितूब ब्लॉग पोस्ट में वर्णित है (जो मूल रूप से इस प्रश्न के पूछे जाने के कुछ महीने बाद सामने आया था)।


बहुत बढ़िया, मैंने अपने उत्तर के समय इसे नहीं देखा। +1
VONC

4

सबसे पहले, यह जान लें कि आप अपनी भाषा में फ़ाइलों का पता लगाने के लिए भाषा-भाषी ओवरराइड्स का उपयोग करके ओवरराइड कर सकते हैं

अब, संक्षेप में,

  1. प्रत्येक रिपॉजिटरी को भाषा के आंकड़ों से पहली भाषा के साथ टैग किया गया है ।
  2. भाषा आँकड़े प्रत्येक ज्ञात प्रोग्रामिंग या मार्कअप भाषा के लिए फ़ाइलों के कुल आकार की गणना करते हैं। वेंडर्ड, डॉक्यूमेंटेशन और जेनरेट की गई फाइल्स को काउंट नहीं किया जाता है।
  3. प्रत्येक फ़ाइल की भाषा का पता ओपन सोर्स प्रोजेक्ट लिंग्विस्ट द्वारा लगाया जाता है ।

भाषाविद् भाषाओं का पता कैसे लगाता है?

भाषाविद् क्रम में निम्नलिखित रणनीतियों पर निर्भर करता है , और जैसे ही यह एक परिपूर्ण मैच मिला (एक एकल लौटे हुए रणनीति के साथ) भाषा को वापस कर देता है।

  1. Emacs और विम मॉडल के लिए देखो ।
  2. ज्ञात नाम। कुछ फ़ाइलनाम विशिष्ट भाषाओं (विचार Makefile) से जुड़े हैं ।
  3. एक चरवाहे के लिए देखो। #!/bin/bashशेलबैंग वाली फाइल को शेल के रूप में वर्गीकृत किया जाएगा।
  4. ज्ञात फ़ाइल एक्सटेंशन। भाषाओं में उनसे जुड़े एक्सटेंशन का एक समूह होता है। हालांकि, इस रणनीति के साथ बहुत सारे संघर्ष हैं। परस्पर विरोधी परिणाम (सोचते हैं कि सी ++, सी और ऑब्जेक्टिव-सी के लिए .h) बाद की रणनीतियों द्वारा परिष्कृत किए जाते हैं।
  5. हेयूरिस्टिक नियमों का एक सेट । वे आमतौर पर भाषा की कोशिश करने और पहचानने के लिए फाइलों की सामग्री पर नियमित अभिव्यक्तियों पर निर्भर होते हैं (उदाहरण के लिए, ^[^#]+:-प्रोलॉग के लिए )।
  6. एक भोले बेसेसियन क्लासिफायर नमूना फ़ाइलों पर प्रशिक्षित । अंतिम रणनीति, न्यूनतम सटीकता। बायेसियन क्लासिफायरियर हमेशा इनपुट के रूप में भाषाओं का सबसेट लेता है; यह सभी भाषाओं के बीच वर्गीकृत करने के लिए नहीं है। क्लासिफायर द्वारा पाया गया सबसे अच्छा मैच वापस आ गया है।

अनवेंडेड और डॉक्यूमेंटेशन फाइल क्या हैं?

भाषाविद् कुछ फाइलों को वंचित मानते हैं , जिसका अर्थ है कि वे भाषा के आँकड़ों में शामिल नहीं हैं। इनमें jQuery जैसे तृतीय-पक्ष लाइब्रेरी शामिल हैं और vendor.ymlकॉन्फ़िगरेशन फ़ाइल में परिभाषित हैं । आप भाषाई ओवरराइड्स का उपयोग करके अपनी रिपॉजिटरी में वेंडर या अनवेंडर फाइल भी कर सकते हैं

इसी तरह, प्रलेखन फ़ाइलों को परिभाषित किया जाता है documentation.ymlऔर लिंग्विस्ट ओवरराइड्स का उपयोग करके बदला जा सकता है ।

उत्पन्न फ़ाइलों का पता कैसे लगाया जाता है?

भाषाविद् उत्पन्न फ़ाइलों का पता लगाने के लिए सरल नियमों पर निर्भर करते हैं , दोनों पथ और फ़ाइलों की सामग्री का उपयोग करते हुए। जनरेट की गई फ़ाइलों को भाषा के आँकड़ों में नहीं गिना जाता है और github.com पर अलग-अलग प्रदर्शित नहीं किया जाता है।

प्रोग्रामिंग और मार्कअप भाषाओं के बारे में क्या?

भाषाविज्ञान में, प्रत्येक भाषा को एक प्रकार दिया जाता है। इन प्रकार, मुख्य विन्यास फाइल में पाया जा सकता languages.yml। केवल प्रोग्रामिंग और मार्कअप भाषा आँकड़ों में गिनी जाती है।


0

भाषाविद् के साथ कुछ छेड़छाड़ के बाद मैंने इस पर ध्यान दिया है।

एक शेबांग के साथ फाइल के लिए , शेबंग को भाषा का निर्धारण करते समय माना जाता है, लेकिन अन्य टोकन के मुकाबले समान रूप से भारित लगता है । यह एक बड़ी त्रुटि प्रतीत होती है क्योंकि शेबंग को फ़ाइल की भाषा को निश्चित रूप से परिभाषित करना चाहिए।

यह हाइलाइटिंग के साथ समस्याएँ पैदा कर सकता है ।


इस उत्तर में कई टूटे हुए लिंक हैं। यह इस जवाब के बारे में भी सच है क्योंकि यह स्टैक एक्सचेंज पर दिखाई देता है: webapps.stackexchange.com/a/40110 । एक शर्म की बात है, जैसा कि मैं उन लिंक को देखना चाहूंगा!
शमीम

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.