Github thay đổi kho lưu trữ thành ngôn ngữ sai


106

Tôi biết đây không phải là một vấn đề lớn nhưng tôi thích Github của mình được đa dạng hóa về mặt ngôn ngữ. Tôi đã viết một dự án bằng Swift và khi tôi cam kết nó nói rằng nó nằm trong Objective C.

Tôi nghĩ có thể là do các khung phân tích cú pháp được viết bằng Objective C và nó phát hiện ra điều đó, nhưng có cách nào để thay đổi ngôn ngữ hiển thị trên trang kho lưu trữ chính không?


Câu trả lời:


126

Tôi thấy điều đơn giản nhất là tạo một tệp có tên .gitattributestrong thư mục gốc của kho lưu trữ của tôi và cung cấp cho nó những nội dung sau:

* linguist-vendored
*.js linguist-vendored=false

Ví dụ này yêu cầu github / linguist bỏ qua tất cả các tệp, sau đó chỉ cần xem các tệp .js. Dự án của tôi https://github.com/aim12340/jQuery-Before-Ready được liệt kê là HTML vì tệp ví dụ HTML lớn hơn tệp JS. Tệp này đã sửa nó cho tôi và bây giờ nó được liệt kê là JavaScript


5
chỉ cần tạo một tệp .gitattributes mới trong thư mục gốc repo với nội dung ở trên, khắc phục ngay lập tức!
Gob00st

Xuất sắc nhất. Tôi đã có một dự án Scala được gắn nhãn là một dự án CSS. Không tốt;)
Objektwerks

5
Có thể là một nhận xét giả, nhưng trong trường hợp bạn tự hỏi chính xác thì phải làm gì, 1. Làm theo hướng dẫn của @ Gob00st trong nhận xét của anh ấy và 2. Thay ".js" bằng phần mở rộng của tệp ngôn ngữ chính của bạn.
Elisabeth

Cảm ơn rất nhiều. Tôi đã xem qua rất nhiều bài báo nhưng không bài nào phù hợp với tôi ngoại trừ bài này.
Modo

Tôi đã gặp sự cố tương tự đối với dự án cốt lõi ASP.NET của mình. Github cho rằng đó là một repo javascript vì số lượng tệp js trong thư mục www. Thêm tệp .gitattributes với [webprojectfolder] / wwwroot / * nhà cung cấp ngôn ngữ đã sửa lỗi đó. Cảm ơn bạn.
Mustafa

63

Như đã đề cập trong trang trợ giúp GitHub

GitHub sử dụng thư viện Linguist mã nguồn mở để xác định ngôn ngữ tệp để làm nổi bật cú pháp và thống kê kho lưu trữ.
Một số tệp khó xác định và đôi khi các dự án chứa nhiều tệp thư viện và nhà cung cấp hơn mã chính của chúng.

Vì vậy, bạn cần phải kiểm tra github/linguist#troubleshootingđể khắc phục tình trạng này.

Tỷ lệ phần trăm được tính toán dựa trên byte mã cho mỗi ngôn ngữ như được API ngôn ngữ danh sách báo cáo .
Nếu thanh báo cáo một ngôn ngữ mà bạn không mong đợi:

  • Nhấp vào tên của ngôn ngữ trong thanh thống kê để xem danh sách các tệp được xác định là ngôn ngữ đó.
  • Nếu bạn thấy các tệp mà bạn không ghi, hãy xem xét việc chuyển các tệp vào một trong các đường dẫn cho mã được cung cấp hoặc sử dụng tính năng ghi đè thủ công để bỏ qua chúng.
  • Nếu các tệp đang bị phân loại sai, hãy tìm kiếm các vấn đề mở để xem có ai khác đã báo cáo vấn đề hay không. Bất kỳ thông tin nào bạn có thể thêm, đặc biệt là các liên kết đến các kho lưu trữ công khai, đều hữu ích.
  • Nếu không có vấn đề nào được báo cáo về phân loại sai này, hãy mở vấn đề và bao gồm liên kết đến kho lưu trữ hoặc mẫu mã đang bị phân loại sai.

Cập nhật tháng 2 năm 2017 (một năm sau):

Bài viết " Cách thay đổi ngôn ngữ Repo trong GitHub " từ Monica Powell

Khi nghiên cứu cách giải quyết việc GitHub phân loại sai ngôn ngữ trong các dự án của bạn, tôi phát hiện ra giải pháp đơn giản như nói với GitHub những tệp nào cần bỏ qua.

Mặc dù bạn vẫn muốn cam kết các tệp này với GitHub và do đó không thể sử dụng tệp, .gitignore bạn có thể cho nhà ngôn ngữ học của GitHub biết tệp nào cần bỏ qua trong .gitattributestệp

static/* linguist-vendored

Tệp một dòng này yêu cầu GitHub bỏ qua tất cả các tệp của tôi trong static/thư mục của tôi , nơi lưu trữ CSS và các nội dung khác cho ứng dụng Flask

Phần "Sử dụng .gitattributes" minh họa cách đánh dấu các ngôn ngữ sai.
Ví dụ:

Kiểm tra mã bạn không viết, chẳng hạn như thư viện JavaScript, vào git repo của bạn là một thực tế phổ biến, nhưng điều này thường làm tăng số liệu thống kê về ngôn ngữ của dự án và thậm chí có thể khiến dự án của bạn bị gắn nhãn là ngôn ngữ khác .
Theo mặc định, Linguist xử lý tất cả các đường dẫn được xác định vendor.ymllà được cung cấp và do đó không đưa chúng vào thống kê ngôn ngữ cho một kho lưu trữ.

Sử dụng thuộc tính nhà cung cấp ngôn ngữ cho đường dẫn nhà cung cấp hoặc không nhà cung cấp.

$ cat .gitattributes
special-vendored-path/* linguist-vendored
jquery.js linguist-vendored=false

Làm việc cho tôi, mặc dù bây giờ tự hỏi thế nào điều này có thể vẫn làm việc trên GitHub nếu .gitattribute là trong .gitignore như GitHub rõ ràng là cần phải có file nhưng tôi không thực sự muốn nó trong repo của tôi nữa ...
Dave Everitt

1
.gitattributes chứ không phải .gitattribute
Derzu

không biết .gitattributes tồn tại. Cảm ơn +1
scipsycho

31

Để làm cho nó đơn giản, hãy để tôi chia sẻ các bước của tôi:

  1. Thay đổi thư mục thành thư mục gốc dự án của bạn;

  2. Tạo một tệp có tên .gitattributes bằng cách sử dụng các công cụ whaterver mà bạn chọn:

    chạm vào .gitattributes

  3. Chỉnh sửa tệp bằng cách làm theo hướng dẫn của thư viện Linguist để cho Github biết cách thực hiện, ví dụ:

    vi .gitattributes

    Sử dụng ngôn ngữ do nhà cung cấp có thể cho phép Github "bỏ qua" phát hiện thư mục này và các thư mục con:

    src/main/resources/static/* linguist-vendored

    Sử dụng thuộc tính tài liệu-ngôn ngữ để đánh dấu hoặc bỏ đánh dấu các đường dẫn làm tài liệu:

    project-docs/* linguist-documentation

    HOẶC đánh dấu một tệp riêng lẻ chứa tài liệu

    documented_code.rb linguist-documentation=true

    Điều này hơi kỳ lạ nhưng bạn cũng có thể làm - để yêu cầu Github xử lý một số tệp có phần mở rộng cụ thể (ví dụ: * .rb) là Java:

    *.rb linguist-language=Java

  4. Git thêm, cam kết và sau đó đẩy nó lên Github, nhãn sẽ được sửa gần như ngay lập tức.


Làm việc cho tôi, tôi đã thêm các dòng dưới đây vào tệp .gitattributes của mình *.java linguist-detectable=false *.dart linguist-language=Dart *.dart linguist-detectable=true android/* linguist-vendored build/* linguist-vendored
Chirag Savsani

15

Thay thế .gitattributes của bạn bằng cái này để phân loại lại tất cả các tệp dưới dạng Java.

 *.* linguist-language=Java

nhà ngôn ngữ học


8

Tạo tệp .gitattributes trong thư mục gốc của bạn. Giả sử bạn muốn ngôn ngữ là Java, chỉ cần sao chép-dán

*.java linguist-detectable=true *.js linguist-detectable=false *.html linguist-detectable=false *.xml linguist-detectable=false

trong tệp .gitattributes và đẩy tệp vào repo. Làm mới trang GitHub của bạn để xem thay đổi ngôn ngữ.

Lưu ý : Vì vậy, đối với ngôn ngữ mong muốn, hãy làm cho nó đúng và ngôn ngữ khác sai.


2

Tôi đã có một dự án được bắt đầu trong Objective-C và đã thay đổi hoàn toàn sang Swift (dự án mới nhưng trong cùng một kho lưu trữ). Github tiếp tục xác định nó là Objective-C bất kể tôi đã đưa gì vào gitattributes. (tất cả các giải pháp trên)

Vì vậy, nếu đồ gá đã lên và bạn chắc chắn rằng tất cả các dự án đều là một ngôn ngữ - bạn hoàn toàn đặt:

nhập mô tả hình ảnh ở đây

Chỉ điều đó đã khắc phục sự cố :)


2

Trong tệp .gitattributes chỉ cần nói với Linguist không xác định ngôn ngữ tệp mà bạn không muốn.

Ví dụ để bỏ qua các tệp Javascript.

*.js linguist-vendored

2

Bạn có thể tránh bị phát hiện ngôn ngữ không mong muốn (theo tiện ích mở rộng hoặc theo thư mục con của dự án, v.v.) bằng cách sử dụng tùy chọn có thể phát hiện ngôn ngữ github: trong tệp .gitattributes của bạn :

Chỉ các ngôn ngữ lập trình được đưa vào thống kê ngôn ngữ. Các ngôn ngữ thuộc một loại khác (như được định nghĩa trong languages.yml) không "có thể phát hiện được" khiến chúng không được đưa vào thống kê ngôn ngữ.

Sử dụng linguist-detectablethuộc tính để đánh dấu hoặc bỏ đánh dấu các đường dẫn là có thể phát hiện được:

*.kicad_pcb linguist-detectable=true
*.sch linguist-detectable=true
tools/export_bom.py linguist-detectable=false

2

Nếu bạn muốn thay đổi ngôn ngữ của kho lưu trữ Laravel, hãy thêm dòng sau vào .gitattributestệp của bạn :

*.blade.php linguist-vendored

GitHub định nghĩa các tệp phiến là html, nhưng *.html linguist-vendoredkhông hoạt động.


1

Giải pháp được cung cấp bởi chuyên gia EamonnM, người đã trả lời câu hỏi này ở trên đã hoạt động trong dự án của tôi, nhưng có hai điều quan trọng.

  1. Ngôn ngữ ở đầu dòng thứ hai trong mã của anh ấy là ngôn ngữ bạn muốn thay vì ngôn ngữ bạn không thích. Nhớ phân biệt nhé.

  2. Có vẻ như bạn không thể nhập bất kỳ khoảng trắng nào trước *. (Ví dụ: tôi nên nhập *.swift linguist-vendored=falsekhi tôi muốn thay đổi ngôn ngữ của mình thành nhanh chóng.)


0

Tạo một tệp có tên .gitattributes vào thư mục gốc dự án của bạn. Thêm {file_name} linguist-generated=truecó thể thực hiện thủ thuật. Trong trường hợp của tôi,

mvnw.cmd linguist-generated=true
mvnw linguist-generated=true

đã làm cho tôi.


0

Tôi cũng có vấn đề với điều này. Tôi đã tạo .gitattributes trong thư mục gốc của dự án của tôi. Tôi đã xóa .js và .cs, nhưng .html vẫn ở đó. Đây là .gitattributes của tôi:

*.cs linguist-detectable=true
*.js linguist-detectable=false`
*.html linguist-detectable=false
*.xml linguist-detectable=false

Khi tôi thêm * ngôn ngữ do nhà cung cấp, tôi không thấy gì trên GitHub.

Cảm ơn bạn đã giúp đỡ.

nhập mô tả hình ảnh ở đây

Câu trả lời:

Vẫn như vậy, .html vẫn được hiển thị


0

Câu trả lời là khá đơn giản:

chỉ cần thêm những dòng này vào thiết bị đầu cuối dự án của bạn

  1. touch .gitattributes Sau khi viết lệnh này, tệp này -.gitattributes- sẽ được tìm thấy, Nếu tệp này không xuất hiện, hãy thử hiển thị các tệp ẩn để tìm nó.
  2. *.* linguist-language=Java Thay đổi Java với ngôn ngữ đích của bạn -Swift trong trường hợp của bạn-
  3. git add .
  4. git commit -m "Change Tagged language from Java to Kotlin"
  5. git push Bây giờ sau khi làm mới trang Github, bạn sẽ tìm thấy bản cập nhật mới.

-1
# add this two lines 
*.* linguist-language=Swift

project-docs/* linguist-documentation

4
Bạn có thể thêm một số giải thích với câu lệnh mã của bạn ??
Stephan Hogenboom
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.