2010-01-07 4 views
2

가벼운 태그와 주석이 달린 태그가있는 저장소가있는 경우 git-for-each-ref은 세트 중 하나만 정렬하는 것으로 보입니다. for-each-ref에 대한 호출을 수정하여 모든 태그를 정렬하고 출력에서 ​​이들을 혼합하는 출력을 얻고 싶습니다. 예를 들어git-for-each-ref가 태그를 올바르게 정렬하지 못하는 이유는 무엇입니까?

:

 

bash-3.2$ git tag | 
> xargs -I T git log -n 1 --format='%at T' T | 
> sort -rn | 
> awk '{print $2}' 
lwt3 
at3 
lwt2 
at2 
lwt1 
at1 
bash-3.2$ git for-each-ref --sort=-authordate refs/tags | awk '{print $3}' 
refs/tags/lwt3 
refs/tags/lwt2 
refs/tags/lwt1 
refs/tags/at1 
refs/tags/at2 
refs/tags/at3 
bash-3.2$ git --version 
git version 1.6.6.80.g2df32 

-committerdate 또는 -taggerdate을 사용하여 비슷한 출력을 생성하고, 태그가 제대로 분류되지 않습니다. -*authordate 또는 -*committerdate을 사용하는 경우 정렬 된 그룹이 반전되고 -*taggerdate은 정렬되지 않습니다.

내가 모르는 다른 옵션이 있습니까? 그리고 이것은 올바른 행동입니까? 나는 committerdate 나 taggerdate가 커밋이나 태그를 각각 분류하는 이유를 알 수있다.하지만 authordate는 내가 원하는 것을해야한다.

+0

'-'는 정렬을 뒤집을 것을 나타내지 않습니까? 태그 문제의 경우 태그에 주석 태그가 추가되어 있습니까? 그들이 그렇지 않다면, 나는 거기에 날짜를 기입 할 것이라고 생각하지 않습니다. – Cascabel

+0

태그의 절반이 주석을 달았습니다 (at1, at2, at3). 태그 lw1, lw2 및 lw3은 경량 (비 주석) 태그입니다. –

답변

3

좋아, 앞서 가서 내 의견에 말을 확인 :

만 주석 태그 무엇보다도 당신이 여기에 정렬하려는 taggerdate 필드가 포함 된 저장소에 탭 개체를 만듭니다. 태그는 대부분 가벼운 태그이므로 그러한 정보가 없습니다.

나머지 절반은 committerdate와 authordate가 태그에서 올바르게 작동하는 것처럼 보입니다. 태그 작성 시점에 대한 정보가 없기 때문에 태그가 가리키는 커밋을 정렬하는 것입니다. (당신이를 넣어 경우에만 경우 그리고 그들은 일종의 역 - 앞)

3

태그를 주석 한과 경량 태그 커밋 날짜를 기준으로, 모두 분류, 내가 사용하고 있습니다 :

git for-each-ref --format='%(*committerdate:raw)%(committerdate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \ 
    sort -n | awk '{ print $4, $3; }' 

이를 명령은 모든 태그와 연관된 커밋 객체 ID를 시간순으로 나열합니다.

관련 문제