종종 오픈 소스 소프트웨어 프로젝트에는 "contrib"라는 폴더가 있습니다. 예를 들어 Django에는 하나가 있습니다. 무엇입니까?
Contrib
프로젝트 에서이 폴더가 계속 표시됩니까?" - "왜, 왜 프로젝트에 없는가?" - "알아야 할 표준 규칙이 있습니까?"
종종 오픈 소스 소프트웨어 프로젝트에는 "contrib"라는 폴더가 있습니다. 예를 들어 Django에는 하나가 있습니다. 무엇입니까?
Contrib
프로젝트 에서이 폴더가 계속 표시됩니까?" - "왜, 왜 프로젝트에 없는가?" - "알아야 할 표준 규칙이 있습니까?"
답변:
그것은이었다 소프트웨어입니다 있는 contrib 프로젝트에 uted하지만, 이는 실제로 핵심 개발자가 유지되지 않을 수 있습니다. "contrib"또는 "Contrib"라는 이름은 오랫동안 정립 된 규칙이지만 실제로는 그 이름에 특별한 것이 없으며 일반적으로 상당히 큰 프로젝트에서만 사용됩니다.
떠오르는 인기있는 오픈 소스 프로젝트를 살펴보면 "contrib"폴더에 대한 언급이 없습니다.
"contrib"폴더가있는 유일한 것은 Django입니다. Django의 경우이 폴더의 역할은 설명서에 이미 설명되어 있습니다 .
Django는 Python의 "배터리 포함"철학을 따르고 자합니다. 일반적인 웹 개발 문제를 해결하는 다양한 추가 옵션 도구가 제공됩니다.
이 코드
django/contrib
는 Django 배포판에 있습니다. 이 문서는 패키지에 대한 의존성과 함께 패키지에 대한 개요를 제공합니다.
Django Book의 16 장 에는이 디렉토리의 역할과 목차에 대한 자세한 설명이 들어 있습니다.
또 다른 예는 Solr 입니다. 을 사용 gitstats
하면 기고자에 대한 통계를 얻을 수 있습니다.
Robert Muir 22.09%
Michael McCandless 13.60%
Mark Robert Miller 9.73%
Uwe Schindler 8.17%
Yonik Seeley 5.56%
Steven Rowe 5.55%
그런 다음 다음 contrib
을 실행 하여 디렉토리 만 선택할 수 있습니다 .
git filter-branch --subdirectory-filter solr/contrib --prune-empty
통계를 한 번 더 얻으십시오.
Robert Muir 19.62%
Steven Rowe 8.87%
Mark Robert Miller 8.33%
Uwe Schindler 8.06%
James Dyer 7.80%
따라서 최고 저자는 실질적으로 동일하므로 외부인의 기여가 아닙니다. contrib
폴더 내부의 디렉토리를 보면 장고에서와 마찬가지로“다양한 옵션 도구”인 것 같습니다. 예를 들어 Solr을 작동시키기 위해 데이터 가져 오기 요청 핸들러가 필요하지 않지만 데이터베이스 나 XML에서 데이터를 가져 오려면 contrib
폴더 에 저장하는 것이 좋습니다. map-reduce와 마찬가지로 반드시 필요하지는 않지만 필요한 경우가 있습니다.
그 플러그인이나 애드온입니까? 나는이 용어를 사용하지 않을 것이다. 플러그인 및 애드온은 기본 애플리케이션과 특정 통합됩니다. 예를 들어, 플러그인은 독립형으로 실행되지 않지만 기본 애플리케이션 내에서 호스팅됩니다. 반면에 contrib
독립형으로 실행할 수있는 도구가 포함되어 있습니다.
Contrib
(Akka.NET에서 또 다른 폴더를 보고 있습니다)! -폴더 이름이 왜 또는이 명명 규칙에 대한 규칙이 무엇인지 모르겠습니다. -지금까지 언급 한 것은 "contrib"이 사용한 모든 방식에 맞는 것 같지 않습니다. -모든 프로젝트가 완전히 다른 것처럼 보입니다 (Akka.Net은 Akka.Clustering, Logging, DI, Persistence, TestKits 등 코드베이스의 1/4을 넣는 것으로 보입니다).
그것은 라이브러리 또는 구성 요소가 의미있어 있는 contrib의 프로젝트에 UTE,하지만 소유하지 않은하거나 프로젝트 자체의 일부. 나는 항상 그것을 사용하는 타사 라이브러리를 배치하기 위해 공통 또는 공유 위치로 사용했습니다.
예를 들어 다음이있을 수 있습니다.
그런 다음 상대 경로를 사용하여 각 프로젝트 구성 요소에서 해당 구성 요소를 참조하므로 빌드하기 전에 설정이나 구성이 필요하지 않습니다. 로컬에서 체크 아웃 한 위치에 상관없이 리포지토리에서 바로 빌드됩니다.
vendor
하거나 thirdparty
.
Git은이 규칙을 사용하는 오픈 소스 소프트웨어의 훌륭한 예입니다.
https://github.com/git/git/tree/master/contrib
해당 README.md 파일에서 발췌 한 내용은 다음과 같습니다.
기여 소프트웨어
이러한 조각은 공식 자식 소스 트리의 일부로 제공되지만 다소 다른 상태입니다. 이 도구의 목적은 git 주변에 흥미로운 도구를, 심지어 실험적인 도구로 유지하고, 사용자에게 더 쉽게 액세스 할 수 있도록하고, 도구를 더 넓게 노출시켜 더 빠르게 개선 할 수 있도록하는 것입니다.
나는 이것들을 그렇게 많이 만질 것으로 기대하지 않습니다. 내 일상 작업과 관련하여 이러한 하위 디렉토리는 해당 기본 작성자가 소유합니다. 이러한 구성 요소 사용자와 contrib / subtree "소유자"사용자가 해결해야 할 기술적 / 디자인 문제가있는 경우 도움을 드리겠습니다. 그러나 문제를 해결 및 / 또는 개선하려는 시도 는 하위 트리 소유자의 측면에 있어야합니다 .