Contributing.md 번역 - Tomorrowwww/elasticTomorrow GitHub Wiki
탄성 검색에 기여
Elasticsearch는 오픈 소스 프로젝트이며 우리는 지역 사회로부터 기여를 받고 싶습니다 - 당신! 튜토리얼 또는 블로그 게시물 작성, 문서 개선, 버그 보고서 및 기능 요청 제출 또는 Elasticsearch 자체에 통합 될 수있는 코드 작성 등 여러 가지 방법으로 기여할 수 있습니다.
버그 보고서
Elasticsearch에서 버그를 발견했다고 생각되면 먼저 최신버전의 Elasticsearch 에 대해 테스트하고 있는지 확인 하십시오. 문제는 이미 해결되었을 수 있습니다. 그렇지 않은 경우 비슷한 문제가 이미 발생한 경우 GitHub에서 문제목록 을 검색하십시오 .
버그 재현을 준비 할 수 있다면 매우 유용합니다. 다시 말해, 버그를 확인하기 위해 실행할 수있는 작은 테스트 케이스를 제공하십시오. 이를 통해 문제를 쉽게 찾고 수정할 수 있습니다. 테스트 케이스는 curl
터미널에 복사하여 붙여 넣을 수있는 명령 으로 제공되어야합니다 . 예를 들면 다음과 같습니다.
# delete the index
curl -XDELETE localhost:9200/test
# insert a document
curl -XPUT localhost:9200/test/test/1 -d '{
"title": "test document"
}'
# this should return XXXX but instead returns YYY
curl ....
최대한 많은 정보를 제공하십시오. 실제로 데이터가 색인되는 방식에 따라 문제가 쿼리에 있다고 생각할 수 있습니다. 문제를 쉽게 재현 할 수 있으면 빠를 확률이 높아집니다.
기능 요청
자신이 Elasticsearch에없는 기능을 원한다면 아마 혼자가 아닙니다. 비슷한 요구가있는 다른 사람들도있을 수 밖에 없습니다. Elasticsearch가 현재 보유하고있는 많은 기능은 사용자가 필요로하기 때문에 추가되었습니다. GitHub 의 문제목록 에서 문제를 열어 보고 싶은 기능, 필요한 이유 및 문제 해결 방법을 설명합니다.
기여한 코드 및 문서 변경
Elasticsearch에 기여하고 싶은 버그 수정이나 새로운 기능이 있으면 먼저 해당 문제를 찾거나 열어보십시오. 무엇을하고 싶은지 이야기하십시오. 누군가가 이미 작업 중이거나 변경을 구현하기 전에 알아야 할 특정 문제가있을 수 있습니다.
우리는 참여자들과 협력하여 코드 채택을 즐깁니다. 문제를 해결하는 데는 여러 가지 방법이 있으며 너무 많은 코드를 작성하기 전에 최선의 방법을 찾는 것이 중요합니다.
엘라스틱 저장소 에 기여하는 프로세스 는 비슷합니다. 개별 프로젝트에 대한 세부 사항은 아래에서 확인할 수 있습니다.
저장소 포크 및 복제
기본 Elasticsearch 코드 또는 문서 저장소를 포크하여 로컬 시스템에 복제해야합니다. 도움말 은 github 도움말 페이지 를 참조하십시오 .
특정 프로젝트에 대한 자세한 지침은 아래에 나와 있습니다.
변경 사항 제출
변경 및 테스트가 검토를 위해 제출할 준비가되면 다음을 수행하십시오.
-
변경 사항 테스트
테스트 스위트를 실행하여 아무 것도 손상되지 않았는지 확인하십시오. 테스트 실행에 대한 도움말 은 TESTING 파일을 참조하십시오 .
-
제공자 사용권 계약에 서명하십시오
참여자 사용권 계약에 서명했는지 확인하십시오. 우리는 당신에게 저작권을 양도하는 것이 아니라 제한없이 귀하의 코드를 배포 할 권리를 우리에게 부여하고자합니다. 우리는 사용자에게 코드의 기원과 코드의 존속을 보장하기 위해 모든 기여자에게이 것을 요청합니다. CLA에 한 번만 서명하면됩니다.
-
변경 사항을 Rebase하십시오. 주 Elasticsearch 저장소의 최신 코드로 로컬 저장소를 업데이트하고 최신 마스터 분기 맨 위에 분기를 리베이스하십시오. 초기 변경 사항을 단일 커밋으로 채우는 것이 좋습니다. 나중에 변경을 요청하면 별도 커밋으로 추가하십시오. 이렇게하면 검토하기가 더 쉽습니다. 병합하기 전에 마지막 단계로서 우리는 커밋을 모두 스쿼시하도록 요청하거나 직접 처리 할 것입니다.
-
끌어 오기 요청 제출
로컬 변경 사항을 포크 리포지토리 사본으로 푸시 하고 끌어 오기 요청을 제출하십시오. . 끌어 오기 요청에서 변경 한 내용을 요약 한 제목을 선택하고 본문에 변경 내용에 대한 자세한 정보를 제공하십시오. 또한 토론이 일어난 문제의 번호를 언급하십시오 (예 : "Closes # 123").
그럼 앉아서 기다려. 끌어 오기 요청에 대한 토론이있을 것이며 변경이 필요한 경우 끌어 오기 요청을 Elasticsearch에 병합하기 위해 함께 노력하고 싶습니다.
일반적인 지침에 따라 공개적으로 공유 된 지점으로 푸시하지 마시기 바랍니다. 끌어 오기 요청을 연 후에는 지사를 공개적으로 공유하는 것으로 간주해야합니다. 억지로 밀어 넣는 대신 증분 커밋을 추가 할 수 있습니다. 이것은 일반적으로 귀하의 리뷰어에 쉽게됩니다. 마스터에서 변경 사항을 가져와야하는 경우 마스터를 지점에 병합 할 수 있습니다. 평론가가 장기 실행 끌어 오기 요청을 리베이스 (rebase)하도록 요청할 수 있습니다.이 경우 해당 요청에 대해 강제 밀어 넣기가 가능합니다. GitHub을 통해 pull 요청이 통합 될 때 수행 할 수있는 검토 프로세스의 마지막에 스쿼시가 수행되지 않아야합니다 .integrated via GitHub.
Elasticsearch 코드베이스에 기여
저장소: https://github.com/elastic/elasticsearch
Elasticsearch를 빌드 시스템으로 사용하므로 Gradle이 설치되어 있는지 확인하십시오 . Gradle은 성공적으로 빌드하려면 버전 3.3 이상이어야합니다.
Eclipse 및 IntelliJ IDE에서 개발을 지원합니다. Eclipse의 경우 우리가 지원하는 최소 버전은 [Eclipse Oxygen][eclipse] (version 4.7)입니다. IntelliJ의 경우 우리가 지원하는 최소 버전은 [IntelliJ 2017.2][intellij] 입니다.
이클립스 사용자는 자동으로 IDE를 구성 할 수 있습니다. gradle eclipse
후 File: Import: Existing Projects into Workspace
. 옵션을 선택하십시오 Search for nested projects
. 또한 eclipse.ini
GC 오버 헤드 오류를 피하기 위해 Eclipse를 수정하여 2048m 힙을 사용하고 있는지 확인해야 합니다.
IntelliJ에 사용자는 자동으로 IDE를 구성 할 수 있습니다. gradle idea
후 File->New Project From Existing Sources
. 소스 디렉토리의 루트에 포인트를 선택 Import project from external model->Gradle
, 수 있습니다 Use auto-import
. 또한 IDEA 2017.2 이상에서 직접 테스트를 실행하려면 IDEA 실행 시작 프로그램을 사용하지 않도록 설정해야합니다.이 실행 프로그램은 JVM 옵션 을 추가하여 수행 할 수 있습니다 -Didea.no.launcher=true
JVM option
Elasticsearch 코드베이스는 Java를 많이 사용 assert하며 테스트 실행자는 JVM에서 어설 션을 활성화해야합니다. 이는 -ea시작할 때 플래그 를 JVM에 전달하여 수행 할 수 있습니다 .
IntelliJ의 경우 이동하여 Run->Edit Configurations...->Defaults->JUnit->VM options
로 이동하여, -ea
를 입력하십시오.
이클립스를 들어, Preferences->Java->Installed JREs
로 이동 및 VM Arguments
에 -ea
추가
Please follow these formatting guidelines:
- Java 들여 쓰기는 4 공백입니다.
- 선 너비는 140 자입니다.
- 나머지는 Java 코딩 표준에 맡겨져 있습니다.
- 불필요한 형식 변경을 방지하려면 "저장시 자동 포맷"을 비활성화하십시오. 이렇게하면 불필요한 형식이 변경되어 리뷰가 훨씬 어려워집니다. IDE가 수정 된 청크 만 포맷 할 수 있다면 괜찮습니다.
- 와일드 카드 가져 오기(
import foo.bar.baz.*
)는 금지되어 빌드가 실패합니다. 귀하의 IDE가 그것을 만들지 못하도록 길들이려 시도하십시오. 귀하의 IDE가 포함되지 않은 경우 귀하의 IDE에 대한 지침과 함께이 문서에 대한 PR을 보내주십시오. - Eclipse :
Preferences->Java->Code Style->Organize Imports
. "Number of (static )? imports needed for .*
" 레이블이 붙은 두 개의 상자가 있습니다 . 그들의 가치를 99999 또는 다른 어리석은 높은 가치에 놓으십시오. - IntelliJ :
Preferences->Editor->Code Style->Java->Imports
. 이 두 가지 구성 옵션은 다음과 같습니다Class count to use import with '*'
및Names count to use static import with '*'
. 그들의 가치를 99999 또는 다른 어리석은 높은 가치에 놓으십시오. - 수입 주문에 대해 너무 걱정하지 마십시오. 변경하지는 말고 IDE와의 싸움에 대해 걱정하지 마십시오.
소스에서 배포판을 만들려면 다음을 실행하십시오. :
cd elasticsearch/
gradle assemble
아래에서 새롭게 빌드 된 패키지를 찾을 수 있습니다: ./distribution/(deb|rpm|tar|zip)/build/distributions/
.
변경 사항을 제출하기 전에 테스트 스위트를 실행하여 아무 것도 손상되지 않았는지 확인하십시오.:
gradle check
수업의 일환으로 기고하기
일반적으로 Elasticsearch는 수업의 일환으로 만들어진 기부금을 기꺼이 받아 들일 만하지만 기부금을 수업의 일부로하지 말 것을 강력히 권고합니다. 따라서 수업을 위해 작성한 코드가 있으면 제출하십시오.
제발, 제발, 수업의 일환으로 Elasticsearch에 기여를 할당하지 마십시오. 정말로 Elasticsearch에 대한 쓰기 코드를 과제로 지정하려면 코드 복제물을 사설 복제물에 만들어야하며 기본 Elasticsearch 복제물에 대한 공개 PR은 선택적이어야하며, 자발적이어야하며, 학년을위한 것이 아니라 마감일이 없어야합니다.
때문에:
- 코드 검토 프로세스는 매우 교육적 일 수 있지만 사용 가능한 사람, 변경 내용 및 변경 내용에 따라 크게 달라질 수 있습니다. 서두르지 않으면 얼마나 오래 걸릴지 예측할 수있는 방법이 없습니다.
- 우리는 아주 좋은 이유없이 리뷰를 서두르지 않습니다. 수업 마감 시간은 리뷰를 서둘러야 할 충분한 이유가 아닙니다.
- 우리는 시간 낭비 때문에 전체 코드 검토 프로세스를 통해 작업하지 않으려는 PR을 열지 마십시오.
- 우리는 새로운 기여자들로 가득 찬 전체 수업을 흡수 할 수있는 역량이 없으며, 특히 오랜 시간 동안 기여하지 못했을 때 그렇습니다.
마지막으로 gradle check
문서가 아닌 항목을 제출하기 전에 실행해야합니다 . 위에서 언급 한 바와 같지만이 절에서 반복 할 가치가 있습니다.