গিথুব কীভাবে কোনও প্রকল্পের ভাষা বের করে?


84

আমি সম্প্রতি জাভাস্ক্রিপ্ট এবং সি ++ উভয় ক্ষেত্রেই গিথুব প্রকল্পে কাজ করছি এবং লক্ষ্য করেছি যে গিথুব প্রকল্পটি সি ++ হিসাবে ট্যাগ করেছে। যদি আপনাকে একটি ভাষা বাছাই করতে হয়, তবে এটি সম্ভবত সঠিক নামকরণ যেহেতু সি ++ কোডটি একটি জাভাস্ক্রিপ্ট লাইব্রেরি হিসাবে সংকলিত হয়েছে, তবে এটি আমাকে অবাক করে দিয়েছে ... প্রতিটি প্রকল্পকে কী ভাষা ট্যাগ করতে হবে তা গিথুব কীভাবে আবিষ্কার করবেন?


14
আপনি নিজেকে ভাগ্যবান বিবেচনা করতে পারেন। আমি রেল প্রকল্পে একটি রুবি লিখছি তবে যেহেতু আমি টুইটার বুটস্ট্র্যাপ ব্যবহার করছি, তাই গিথুব মনে করেন যে আমার প্রকল্পটি রুবিকে উদ্দেশ্য করে পরিবর্তে জাভাস্ক্রিপ্ট বলে

4
@ ডাডব্লায়েন আমার মনে হয় github.com/github/linguist/blob/master/lib/linguist/vendor.yml আপনার সমস্যার সমাধান করবে। বুটস্ট্র্যাপের জন্য সিডিএন ব্যবহার করাও কাজ করবে।
এরিক উইলসন

4
এই প্রশ্নটি অফ-টপিক হিসাবে উপস্থিত বলে মনে হচ্ছে কারণ এটি প্রোগ্রামিং সম্পর্কিত নয়। সহায়তা কেন্দ্রে আমি এখানে কোন বিষয় সম্পর্কে জিজ্ঞাসা করতে পারি তা দেখুন । সম্ভবত ওয়েব অ্যাপস স্ট্যাক এক্সচেঞ্জ জিজ্ঞাসা করার জন্য আরও ভাল জায়গা হবে।
jww


4
আপনি ফলাফলটি রোধ করতে স্ট্যাটাস ইঞ্জিনকে ফাইলের প্রকারের বিষয়ে মিথ্যা বলতে পারেন। স্ট্যাকওভারফ্লো.com
সিএডি ব্লক

উত্তর:


81

নিউক্লিয়ারস্যান্ডউইচ দ্বারা এপ্রিল 2013 আপডেট করুন (গিটহাব সমর্থনকারী দল বা "সাপোর্টোক্যাট"):

যদি আপনার পছন্দসই ভাষা হাইলাইট করে সিনট্যাক্স গ্রহণ না করে তবে আপনি এটি যুক্ত করতে ভাষাতত্ত্ববিদ লাইব্রেরিতে অবদান রাখতে পারেন।


(আসল উত্তর, অক্টোবর ২০১২)

গিটহাব সমর্থনের এই থ্রেডটি এটি ব্যাখ্যা করে:

এটি প্রতিটি এক্সটেনশনের জন্য কেবল ফাইলের আকারের সমষ্টি করে। বৃহত্তম এক "জয়"।

আমরা ফাইলগুলি খুলতে এবং তাদের বিষয়বস্তুগুলিকে পার্স করা এড়াতে চাই, কারণ উভয়ই প্রক্রিয়াটি ধীর করবে ... তবে এ জাতীয় মতবিরোধ সমাধানের একমাত্র পদ্ধতি এটি হতে পারে।

যেহেতু এটি ১০০% সঠিক নয়, এর ফলে কিছু লোক যুক্ত হয়েছিল:

অনুমানটি যেসব ক্ষেত্রে ভুল রয়েছে আমি তার জন্যও একটি সাধারণ ম্যানুয়াল-ওভাররাইড স্যুইচকে ভোট দেব।


দ্রষ্টব্য: মার্ক রুশাকফ তাঁর উত্তরে যেমন উল্লেখ করেছেন (উর্ধ্বলিত), ভাষাগত প্রকল্পের (জুন ২০১১ থেকে উন্মুক্ত উত্সর্গা) মাধ্যমে অনুমান করা তখন থেকে আরও ভাল হয়েছে ।
আপনি দেখতে পাচ্ছেন যে এখনও সমস্যা আছে: গিটহাব ভাষাবিদ ইস্যু
বিস্তারিত জানতে এখানে দেখুন :

ভাষাটি শনাক্ত হয়ে গেলে এটি অ্যালবিনো , পিগমেন্টের মোড়কে দেওয়া হয় যা প্রকৃত বাক্য গঠনটি হাইলাইট করে।

এবং আপনি .gitattributes ফাইলে ভাষাবিদ নির্দেশিকা যুক্ত করতে পারেন ।


4
তথ্যের জন্য ধন্যবাদ। আমার ধারণা, ভাষা ম্যানুয়ালি পরিবর্তনের কোনও উপায় এখনও নেই।
নুব

এই এখন আর তা নেই! ভাষাতত্ত্ববিদ সম্পর্কে নীচের উত্তরগুলি চিহ্নের কাছাকাছি। পরীক্ষা করে দেখুন আমার সংগ্রহস্থলের ভুল ভাষা হিসেবে চিহ্নিত করা হয় এবং কেন আমার প্রিয় স্বীকৃত ভাষা নয় উপর help.github.com । দাবি অস্বীকার: আমি গিটহাবের সহায়তা দলে কাজ করি।
নিউক্লিয়ারসান্ডউইচ

@ নিউক্লিয়ারস্যান্ডউইচ অসাধারণ, আমি আপনার সম্পাদনা শেষ করে উত্তরটি আপডেট করেছি। দ্রষ্টব্য: আমি 10 ই মে শুক্রবার গিটহাবের সদর দফতরে থাকব, জন গ্রেট এবং অন্যান্য
সমর্থকগণের সাথে সাক্ষাত করছি

আমি কেবল এটি যুক্ত করতে চাই যে সংগ্রহস্থলটি চিহ্নিত না করা বা ব্যবহারকারীকে প্রধান ভাষা বেছে নেওয়া স্বয়ংক্রিয়ভাবে অনুমান করার চেয়ে আরও সুবিধাজনক হবে কারণ আমার সংগ্রহস্থল github.com/salda/file_scraper মূলত সি ++ তে কিছুটা সি সহ, তবে 70০ হিসাবে চিহ্নিত % উদ্দেশ্য গ.
লুকাস সালিচ

13

এই গিথুব ব্লগ পোস্টে বর্ণিত (বর্তমানে এই প্রশ্নটি মূলত জিজ্ঞাসা করার কয়েক মাস পরে প্রকাশিত হয়েছিল) বর্ণিত ভাষাগুলি নির্ধারণ করতে বর্তমানে গিথুবের ভাষাতাত্ত্বিক প্রকল্পটি ব্যবহার করা হয় ।


দুর্দান্ত, আমার উত্তরের সময় আমি এটি দেখিনি। +1
ভনসি

4

প্রথমে জেনে রাখুন যে আপনি ভাষাগুলি ওভাররাইড ব্যবহার করে আপনার সংগ্রহস্থলের ফাইলগুলির জন্য সনাক্ত করা ভাষাটিকে ওভাররাইড করতে পারেন

এখন, সংক্ষেপে,

  1. প্রতিটি সংগ্রহস্থল ভাষার পরিসংখ্যান থেকে প্রথম ভাষার সাথে ট্যাগ করা হয় ।
  2. ভাষার পরিসংখ্যান প্রতিটি সনাক্ত করা প্রোগ্রামিং বা মার্কআপ ভাষার জন্য ফাইলগুলির মোট আকার গণনা করে । বিক্রেিত, ডকুমেন্টেশন এবং উত্পন্ন ফাইলগুলি গণনা করা হয় না।
  3. ওপেন সোর্স প্রকল্প ভাষাতত্ত্ববিদ দ্বারা প্রতিটি ফাইলের ভাষা সনাক্ত করা হয় ।

ভাষাবিদ কীভাবে ভাষাগুলি সনাক্ত করতে পারে?

ভাষাতত্ত্ববিদ নিম্নলিখিত কৌশলগুলি উপর নির্ভর করে , ক্রম করে এবং একটি নিখুঁত ম্যাচটি পাওয়ার সাথে সাথেই ভাষাটি ফিরিয়ে দেয় (একক ভাষার সাথে ফিরে আসা কৌশল)।

  1. দেখুন টিপে, Emacs এবং তেজ modelines
  2. পরিচিত নাম। কিছু ফাইলের নাম নির্দিষ্ট ভাষার সাথে সম্পর্কিত (ভাবেন Makefile) think
  3. একটি শেবাং দেখুন। একটি #!/bin/bashশেবাং সহ একটি ফাইল শেল হিসাবে শ্রেণিবদ্ধ করা হবে।
  4. পরিচিত ফাইল এক্সটেনশন। ভাষাগুলিতে তাদের সাথে সম্পর্কিত এক্সটেনশনের একটি সেট রয়েছে। তবে এই কৌশলটির সাথে প্রচুর দ্বন্দ্ব রয়েছে। পরস্পরবিরোধী ফলাফলগুলি (মনে করুন সি ++, সি এবং উদ্দেশ্যমূলক-সি .h) পরবর্তী কৌশলগুলি দ্বারা পরিমার্জন করা হয়েছে।
  5. একতাত্ত্বিক নিয়মের সেট । ভাষাটি সনাক্ত করতে এবং সনাক্ত করতে তারা সাধারণত ফাইলের সামগ্রীর উপর নিয়মিত মত প্রকাশের উপর নির্ভর করে (যেমন, ^[^#]+:-প্রোলোগের জন্য )।
  6. একটি সাদাসিধা Bayesian ক্লাসিফায়ার তালিম নমুনা ফাইল । সর্বশেষ কৌশল, সর্বনিম্ন নির্ভুলতা। বায়েশিয়ান শ্রেণিবদ্ধকারী সর্বদা ইনপুট হিসাবে ভাষার একটি উপসেট গ্রহণ করে; এটি সমস্ত ভাষার মধ্যে শ্রেণিবদ্ধকরণ বোঝানো হয় না। ক্লাসিফায়ারের সন্ধান পাওয়া সেরা ম্যাচটি ফিরে এসেছে।

অন্বেষণ এবং ডকুমেন্টেশন ফাইল কি?

ভাষাবিদ কিছু ফাইল বিক্রেতাদের হিসাবে বিবেচনা করে , এর অর্থ তারা ভাষার পরিসংখ্যানের অন্তর্ভুক্ত নয়। এর মধ্যে রয়েছে তৃতীয় পক্ষের লাইব্রেরি যেমন jQuery এবং vendor.ymlকনফিগারেশন ফাইলে সংজ্ঞায়িত করা হয় । আপনি ভাষাগুলি ওভাররাইড ব্যবহার করে আপনার ভাণ্ডারে ফাইল বিক্রেত বা আনভেন্ডর করতে পারেন ।

একইভাবে ডকুমেন্টেশন ফাইলগুলি সংজ্ঞায়িত করা হয়েছে documentation.ymlএবং ভাষাবিদ ওভাররাইড ব্যবহার করে পরিবর্তন করা যেতে পারে ।

উত্পন্ন ফাইলগুলি কীভাবে সনাক্ত করা যায়?

ভাষাতত্ত্ববিদ উত্পন্ন ফাইলগুলি সনাক্ত করার জন্য সরল নিয়মের উপর নির্ভর করে , উভয় পথ এবং ফাইলের সামগ্রী ব্যবহার করে। উত্পন্ন ফাইলগুলি ভাষা পরিসংখ্যানগুলিতে গণনা করা হয় না এবং গিথুব ডট কম-এ আলাদা হয় না।

প্রোগ্রামিং এবং মার্কআপ ভাষা সম্পর্কে কি?

ভাষাতত্ত্ববিদ, প্রতিটি ভাষা এক ধরণের দেওয়া হয়। এই ধরনেরগুলি মূল কনফিগারেশন ফাইলে পাওয়া যাবে languages.yml,। শুধুমাত্র প্রোগ্রামিং এবং মার্কআপ ভাষাগুলিতে পরিসংখ্যান গণনা করা হয়।


0

ভাষাবিদের সাথে কিছুটা ঝোঁক দেওয়ার পরে আমি এটি লক্ষ্য করেছি।

শেবাংযুক্ত ফাইলগুলির জন্য , ভাষা নির্ধারণের সময় শেবাং বিবেচনা করা হয় তবে অন্য টোকেনের বিপরীতে সমানভাবে ওজনযুক্ত বলে মনে হয় । এটি একটি বড় ত্রুটি বলে মনে হচ্ছে কারণ শেবাংকে অবশ্যই ফাইলটির ভাষা নির্ধারণ করতে হবে।

এটি হাইলাইট করার ক্ষেত্রে সমস্যা সৃষ্টি করতে পারে ।


এই উত্তরের বেশ কয়েকটি ভাঙা লিঙ্ক রয়েছে। এটি স্ট্যাক এক্সচেঞ্জে প্রদর্শিত হওয়ায় এটি এই উত্তরের ক্ষেত্রেও সত্য: ওয়েবঅ্যাপস.স্ট্যাকেক্সেঞ্জাওনাম / / 40110 । লজ্জাজনক, আমি যেমন লিঙ্কগুলি দেখতে চাই!
shmim

-1

ফাইল এক্সটেনশনগুলি আমার মনের মধ্যে আসে প্রথম জিনিস।


অবশ্যই, কিন্তু ... আমার প্রকল্প উভয় অন্তর্ভুক্ত .jsএবং .ccফাইল, অন্যান্য এক্সটেনশন মধ্যে।
জাস্টিন ইথিয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.