Recientemente estuve trabajando en un proyecto de github tanto en JavaScript como en C ++, y noté que github etiquetó el proyecto como C ++. Si tiene que elegir un solo idioma, esta es probablemente la designación correcta ya que el código C ++ está compilado como una biblioteca de JavaScript, pero esto me hizo preguntarme ... ¿cómo averigua github en qué idioma etiquetar cada proyecto?
github
github-linguist
Justin Ethier
fuente
fuente
Respuestas:
Actualización de abril de 2013, por nuclearsandwich (equipo de soporte de GitHub o "supportocat"):
la página de ayuda " Mi repositorio está marcado como el idioma incorrecto " menciona el uso ahora de la biblioteca de lingüistas para determinar el idioma del archivo para el resaltado de sintaxis y las estadísticas del repositorio. Linguist excluirá ciertos nombres de archivo y rutas de las estadísticas, excluyendo ciertos archivos y directorios de proveedores .
la página de ayuda " ¿Por qué no se reconoce mi idioma favorito? " agrega:
(Respuesta original, octubre de 2012)
Este hilo sobre el soporte de GitHub lo explica:
Dado que esto no es 100% exacto, eso llevó a algunos a agregar:
Nota: como menciona Mark Rushakoff en su respuesta (votada a favor), las conjeturas mejoraron desde entonces con el proyecto lingüista (de código abierto desde junio de 2011).
Sin embargo, puede ver que todavía hay problemas: Problemas de lingüistas de GitHub .
Vea aquí para más detalles :
Y puede agregar directivas lingüísticas en un archivo .gitattributes .
fuente
Actualmente, el proyecto lingüístico de Github es lo que se utiliza para determinar las estadísticas del idioma, como se describe en esta publicación del blog de Github (que salió unos meses después de que se planteó originalmente esta pregunta).
fuente
Primero, sepa que puede anular el idioma detectado para los archivos en su repositorio utilizando anulaciones de Linguist .
Ahora, en pocas palabras,
¿Cómo detecta Linguist los idiomas?
Linguist se basa en las siguientes estrategias , en orden, y devuelve el idioma tan pronto como encuentra una combinación perfecta (estrategia con un solo idioma devuelto).
Makefile
).#!/bin/bash
shebang se clasificará como Shell..h
) son refinados por las estrategias posteriores.^[^#]+:-
para Prolog ).¿Qué son los archivos no revelados y de documentación?
Linguist considera algunos archivos como vendidos , lo que significa que no se incluyen en las estadísticas del idioma. Estos incluyen bibliotecas de terceros como jQuery y se definen en el
vendor.yml
archivo de configuración. También puede vender o desvelar archivos en su repositorio usando anulaciones de Linguist .De manera similar, los archivos de documentación se definen en
documentation.yml
y se pueden cambiar usando anulaciones de Linguist .¿Cómo se detectan los archivos generados?
Linguist se basa en reglas simples para detectar archivos generados, utilizando tanto las rutas como el contenido de los archivos. Los archivos generados no se cuentan en las estadísticas de idioma y no se muestran en diffs en github.com.
¿Qué pasa con los lenguajes de programación y de marcado?
En lingüista, a cada idioma se le asigna un tipo. Estos tipos se pueden encontrar en el archivo de configuración,
languages.yml
. Solo los lenguajes de programación y de marcado se cuentan en las estadísticas.fuente
Después de algunos retoques con el lingüista, me he dado cuenta de esto.
Para archivos con un Shebang , el Shebang se considera al determinar el idioma, pero parece estar ponderado de manera uniforme frente a otros tokens . Esto parece ser un gran error porque Shebang debería definir definitivamente el idioma del archivo.
Esto puede causar problemas con el resaltado.
fuente
Las extensiones de archivo son lo primero que me viene a la mente.
fuente
.js
y.cc
, entre otras extensiones.