2014-07-21 4 views
4

나는 현재 내 자신의 AOSP 프로젝트 미러를 가지고있다. 몇 개의 리포지토리를 수동으로 분기 할 수는 있지만 릴리스를 저장하려면 미러의 모든 리포지토리에 태그를 지정하는 방법을 모르겠습니다. 모든 것을 태그 지정하는 특별한 "repo"명령입니까?안드로이드 릴리스에 태그 달기

답변

4

내 지식 repo 아무 태그 명령이 없습니다,하지만 당신은 repo forall 명령을 사용할 수 있습니다

repo forall -c 'git tag TAGNAME' 

작동합니다 : 같은

뭔가. 당신은 아마 모든 자식과 @ouah에 의해 대답에 태그를 하시겠습니까 귀하의 경우에는

https://source.android.com/source/using-repo.html#forall

+0

주석 태그를 만드는 데'git tag -a TAGNAME'을 선호합니다.이 경우 수백 개의 태그 메시지 프롬프트가 표시되지 않도록 태그 주석을'-m' 또는'-F'를 통해 설정하려고합니다. –

+0

Gerrit에 태그를 어떻게 든 푸시합니까? "리포 업로드"가 내 태그를 내 미러에 푸시합니까? –

+1

@ ross.squires'repo forall'을 사용하여 태그를 푸시 할 수도 있지만 Android Gerrit ACL은 특정 그룹의 사용자 만 태그를 푸시 할 수 있다고 생각합니다. – ouah

0

는 방법에 대해 설명하지만, 주석 태그를 만드는 방법에 대해 내 의견을 참조하십시오. 태그가 그 git에서 어떤 커밋이 릴리스의 일부인지 알려주지 만, 어떤 gits에 태그가 들어 있는지는 아직 알 수 없습니다. 릴리스의 전체 작업 공간을 동기화하려면 해당 태그가 문제가되는 경우 (git ls-remote이 도움이 됨) 모든 가능한 릿지를 확인하고 해당 정보를 기반으로 매니페스트를 작성해야합니다. 또는 매니페스트 git에서 커밋을 만들고 거기에있는 모든 릿을 나열합니다 (커밋 된 태그도 포함).

이제 수천 개의 태그를 만들려는 경우 (예 : 모든 것을 빌드하는 빈번히 실행되는 CI 작업이 있고 각 빌드의 상태를 기록하기 때문에) Git이 해당 양만큼 비효율적이라고 생각해야합니다 참조. 대신 각 자식에 대해 체크 아웃 된 커밋을 포함하는 정적 매니페스트 (repo manifest -r -o manifest.xml)를 만드는 것이 현명 할 수 있습니다.

단점은 당신이 말할 수 없다는 것입니다. git diff your-release-1.0..HEAD하지만 정적 매니페스트를 가져와 거기에서 비교할 SHA-1을 선택해야합니다 (쉽게 자동화 된 작업 임). 단점은 특히 전체 매니페스트 파일을 매니페스트 git에 저장하는 경우 전체 작업 영역을 쉽게 동기화 할 수 있다는 것입니다. 예를 들어, 마스터 브랜치 (manifest 브랜치가 무엇인지에 관계없이)에 master 브랜치를 저장하면 repo init -u ... -m your-release-1.0.xml을 사용하여 작업 영역을 준비 할 수 있습니다.

관련 문제