기여자 라이선스 계약 (CLA)
Google에서 코드 패치를 수락하기 전에 또는 기업 기여자 라이선스 계약 (CLA)
- 원본 소스 코드를 작성하는 개인이며 귀하가 해당 지적 재산을 소유하고 있음을 증명하고 개별 콘텐츠 라이선스 계약
- 회사 직원인 경우 기업 CLA를 제출해야 합니다. 이 클라이언트 라이브러리에 작업을 제공할 수 있음을 나타냅니다.
위의 두 링크 중 하나를 클릭하여 적절한 CLA에 액세스한 다음 서명한 후 반환하는 방법에 대한 안내를 확인하세요. 요청이 접수되면 Google에서 추가할 수 있습니다. 공식 참여자 명단에 올라와 있습니다.
패치 제출 개요
이 프로젝트에 코드를 제공하려면 다음과 같은 일반적인 단계를 따르세요.
- 위에 설명된 대로 제공자 라이선스 계약에 서명합니다.
- 토론방에 참여하세요.
- 개발 환경을 설정합니다.
- 각 변경사항 집합을 문제 (버그 신고 또는 기능)와 연결합니다. GitHub Issue Tracker에서)를 확인할 수 있습니다. 아직 문제가 없다면 새 문제를 만들고 자신에게 할당합니다.
- 코드를 확인하고 codereview.appspot.com에서 새 문제를 생성한 다음 코드 검토 절차를 완료하세요. 다음은 모든 프로세스에 대한 자세한 설명입니다.
- 코드가 검토되고 승인을 받으면 코드를 커밋합니다. 공식 참여자가 아닌 경우 참여자는 변경사항 세트를 공식 저장소로 가져옵니다.
Fitbit에서는 다음과 같은 도구와 절차를 사용합니다.
- 버전 제어 시스템으로 Git을 사용합니다.
- Google에서는 빌드 시스템에 Maven을 사용하며 바이너리 배포 시스템입니다.
- 코드에는 codereview.appspot.com을 사용합니다. 리뷰. 하지만 codereview.appspot.com 도구에서 'issue'라는 용어가 코드 검토 요청을 의미하지만 GitHub Issue Tracker에서는 '문제'가 은 기능 요청 또는 버그 신고).
Eclipse 개발자인 경우 프로젝트별 코드 형식 사용 .settings 디렉터리에 지정되어 있으며 Eclipse에서 자동으로 처리됩니다.
개발 환경 설정
기본 요건
- 자바 6을 설치합니다.
JAVA_HOME
을 설정해야 할 수 있습니다. 변수의 값을 지정합니다. - Maven을 설치합니다. (이 문서는 Maven 명령어에 대한 기본 지식이 있다고 가정합니다.
- 선택사항: Android SDK 설치 ANDROID_HOME 변수를 Android의 설치 위치로 설정합니다.
- Git를 설치합니다.
Git 설정
git config
명령어를 사용하여 기본 표시 이름과 이메일 주소를 설정합니다.
git config --global user.name "YOUR NAME" git config --global user.email "YOUR EMAIL ADDRESS"
Git에서 GitHub로 인증
GitHub에서 코드를 체크아웃하려면 HTTP 또는 SSH를 사용하는 GitHub 계속 진행하기 전에 아래의 안내는 GitHub 읽기 안내에 따라 콘텐츠를 모든 캡션을 생성할 수 있습니다 Git에 관해 자세히 알아보려면 일반적으로 Pro Git은 좋은 리소스입니다.
코드 체크아웃
HTTPS 사용
개발용 '마스터'에서 라이브러리 저장소를 확인하려면 브랜치, 다음 명령어를 실행합니다.
git clone https://github.com/google/google-api-java-client.git
SSH 사용
개발용 '마스터'에서 라이브러리 저장소를 확인하려면 브랜치, make 확실히 GitHub 저장소에 대한 쓰기 액세스 권한이 있다면 다음 명령어를 실행하세요.
git clone git@github.com:google/google-api-java-client.git
대체 브랜치(예: 1.12)로 전환하려면 다음을 실행하세요.
git checkout --track origin/1.12
마스터 브랜치로 다시 전환하려면 다음을 실행합니다.
git checkout master
GitHub 저장소에서 최신 변경사항을 가져오고 로컬 최신 커밋으로 추가합니다.
git pull
Maven
Google Play 서비스 설치
프로젝트를 처음 설정할 때는 google-play-services.jar 파일에 추가해야 합니다. 방법은 다음과 같습니다.
- Eclipse를 실행하고 창 > Android SDK Manager를 실행하거나
android
를 실행합니다. gcloud 명령어입니다 - 패키지 목록 하단으로 스크롤하여 기타 > 추가 항목 > Google Play 서비스를 제공합니다.
mvn install:install-file \ -Dfile=$ANDROID_HOME/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar \ -DgroupId=com.google.android.google-play-services \ -DartifactId=google-play-services \ -Dversion=1 \ -Dpackaging=jar
프로젝트 컴파일
mvn clean install
Maven은 컴파일된 바이너리를 로컬 저장소에 설치합니다 (예: ~/.m2/repository)입니다. 가져오기 전에 해당 저장소에서 바이너리를 검색합니다. Maven 중앙 저장소에서 가져올 수 있습니다.
참고: 이 라이브러리는 google-http-java-client에 종속됩니다. 및 google-oauth-java-client입니다. 아직 출시되지 않은 세 라이브러리 모두의 새 버전 작업을 할 때 Maven Central에 연결하려면 다음 순서로 컴파일해야 합니다.
- google-http-java-client
- google-oauth-java-client
- google-api-java-client 이 순서로 컴파일하면 Maven이 종속 라이브러리 컴파일에 사용됩니다.
코드 검토 프로세스
upload.py 스크립트 다운로드
upload.py 스크립트 다운로드 선택적으로 PATH에 추가합니다.
upload.py
를 처음 실행하면
애플리케이션 비밀번호:
Email (login for uploading to codereview.appspot.com): your_email_address@yourdomain.com Password for your_email_address@yourdomain.com:
검토를 위한 코드 준비
검토를 위해 코드를 전송하기 전에 Clirr을 실행하여 역방향을 포착해야 합니다. 호환성 문제가 발생할 수 있습니다. 오류가 보고되면 이를 수정하거나 clirr-ignored-differences.xml 파일을 업데이트하세요.
mvn -q clirr:check
FindBugs 도구를 실행하여 코드의 버그를 잡아야 합니다. 오류가 있는 경우 보고되면 이를 수정하거나 findbugs-excluded.xml 파일에서 참조됩니다. FindBugs는 매우 느립니다.
mvn findbugs:check
변경사항이 모든 테스트를 통과하면 색인 (Git 스테이징)에 변경사항을 추가합니다. 영역):
git add .
추가, 수정 또는 삭제한 모든 파일이 반영되었는지 다시 한번 확인합니다. 포함되어 있습니다.
git status
git status
출력에서 '커밋할 변경사항' 섹션을 확인합니다.
코드 검토 시작
검토할 준비가 되면 codereview.appspot.com에서 새 문제를 만듭니다.
upload.py --rev=HEAD --base_url=https://github.com/google/google-api-java-client --send_mail -r reviewer@somedomain --cc ...
추가 변경사항을 적용한 후 새로운 변경사항을 스테이징합니다. 새 패치를 업로드하려면 예를 들어 123456을 발행하려면 다음 명령어를 실행합니다.
upload.py --rev=HEAD -i 123456
더 많은 옵션을 보려면 upload.py --help
를 실행하세요.
일반적인 GitHub를 선호하는 경우 워크플로에 따라 아마도 이 부분을 포크했을 것입니다 GitHub 저장소에 액세스하고 이 새로운 기능 또는 버그 수정을 위한 브랜치를 생성했습니다. 코드 전송 자체 포크의 요청을 검토하려면 포크가 업스트림 저장소에 저장합니다 자세한 내용은 GitHub 도움말을 참고하세요. 포크 동기화 방법을 참고하세요.
로컬에서 커밋된 변경 세트에도 upload.py를 사용할 수 있습니다.
upload.py --rev=upstream/master:HEAD --base_url=https://github.com/google/google-api-java-client --send_mail -r reviewer@somedomain --cc ...
코드 검토자
코드 검토자는 변경 집합을 승인하기 전에 가져와서 테스트합니다. 그런 다음 변경 세트를 커밋하고 원격 저장소에 푸시합니다.
변경 세트 가져오기
오류를 조기에 해결하려면 리모컨에서 최신 변경사항을 가져와야 합니다. 작업 트리에 추가합니다 작업 트리가 깨끗하고 색인이 비어 있습니다.
원격 저장소에서 최신 커밋을 가져오고 병합하려면 다음 안내를 따르세요.
git pull
작업 트리와 색인에 있는 항목을 확인하는 방법은 다음과 같습니다.
git status
패치를 로컬 Git 클론으로 가져오려면 다음 안내를 따르세요.
- codereview.appspot.com 내에서 문제를 엽니다.
- 문제가 되는 패치의 경우 'Download 원본'을 찾습니다. 우측 상단에 있는 패치 사양을
- '원시'를 클릭합니다. 가져올 파일의 URL을 가져옵니다.
- 원본 diff 파일을 다음과 같은 이름으로 로컬 머신에 저장합니다. issue123456.diff가 있습니다.
- 로컬 Git 작업 트리로 이동하고
patch
를 사용하여 diff를 적용합니다. 명령어:
patch -p1 < issue123456.diff
올바른 diff를 가져왔는지 다시 확인하려면 git diff
를 실행합니다.
살펴보겠습니다.
변경 세트 테스트
테스트를 실행하고 설치하려면 다음 명령어를 사용합니다.
mvn clean install checkstyle:check
codereview.appspot.com의 변경 집합 승인
일반적으로 코드 검토자가 코드를 작성할 때까지 GitHub 저장소에 푸시할 수 없습니다. 코드가 준비되었음을 나타냅니다. 이 시점에서, 관행은 'LGTM'이라는 메시지 (좋습니다.)
코드 커밋
중요: 코드를 커밋하기 전에 최신 변경사항을 작업 트리를 GitHub의 최신 커밋으로 업데이트합니다. 저장소:
git pull
충돌이 발생하면 해결한 다음 모든 테스트를 다시 통과합니다
코드를 로컬로 커밋하려면 다음 안내를 따르세요. <ph type="x-smartling-placeholder">
git commit</ph>
다음과 같은 메시지를 입력합니다 (수정 또는 구현 중이라고 가정). GitHub에 나열된 제123호 Issue Tracker):
#123: NullPointerException when passing null to processFoo() http://codereview.appspot.com/123456/
첫 번째 콜론과 설명 앞:
- Issue Tracker에서 문제가 해결되었다면 다음과 같이 문제 번호를 포함합니다.
- 특정 브랜치를 변경하려면 브랜치 번호를 포함하세요.
- 회원님은 이 커밋의
committer
역할을 맡지만, 변경사항의 작성자를author
(--author=<author>
)로 표시합니다.
설명에 따라 코드 검토 시 항상 문제에 대한 링크를 포함합니다. 사이트 이 링크가 없으면 커밋과 관련된 코드 검토를 파악할 수 있습니다. 이는 토론 기록 유지
GitHub 저장소에 변경사항을 푸시하려면 다음 안내를 따르세요.
git push
git push
중에 업데이트가 거부되었다는 오류 메시지가 표시되면 (예:
git pull
를 실행하는 것을 잊은 경우), 다음은 최신 변경사항과 병합하는 방법과
변경사항을 원격 저장소로 푸시합니다.
<ph type="x-smartling-placeholder">
git pull git commit git push</ph>
문제 종료
코드 검토 도구에서 문제를 종료해야 합니다. 방법은 다음과 같습니다.
- codereview.appspot.com에서 문제를 선택합니다.
- 'X'를 클릭합니다. 왼쪽 상단의 'Id' 앞에 있습니다.
변경 세트 패치 해제
어떤 이유로든 가져온 변경 집합을 커밋하지 않으려면 다음 명령어를 사용하여 삭제할 수 있습니다 주의: 로컬 변경사항이 문자 그대로 모든 변경사항을 삭제하므로 <ph type="x-smartling-placeholder">
git checkout -- .</ph>