자식 2.7 (Q4 2015) 지점을 직접 사용하여 정렬 소개 git branch
:
참조가 aa3bc55 커밋 , aedcb7d 커밋 , 1511b22 커밋 , f65f139 커밋 , (2015 9월 23일), aedcb7d 커밋 , 1511b22 커밋 , ca41799 커밋 (2015년 9월 24일을)과 Karthik Nayak ( )에 의해 커밋 f65f139 , ... (2015 년 9 월 23 일 ) . (가 합병 - Junio C 하마노 - 에 7f11b48 커밋 2015 15 시월)KarthikNayak
gitster
특히 aedcb7d를 커밋하십시오 .
branch.c
: ' ref-filter
'API 사용
참조 정렬을 반복하기 위해 ' branch.c
'use ' ref-filter
'API를 작성하십시오. 이렇게하면 ' branch.c
'에 사용 된 대부분의 코드 가 'ref-filter
'라이브러리 .
이 옵션을 추가합니다--sort=<key>
:
주어진 키를 기준으로 정렬하십시오.
접두사-
값의 내림차순으로 정렬 할 입니다.
당신은 사용할 수 있습니다 --sort=<key>
옵션을 여러 번 ,이 경우 마지막 키가 기본 키가됩니다.
지원되는 키는의 키 와 동일git for-each-ref
합니다.
정렬 순서의 기본값은 전체 참조 이름 ( refs/...
접두사 포함 )을 기준으로 정렬하는 것입니다 . 분리 된 HEAD (있는 경우)를 먼저 표시 한 다음 로컬 브랜치 및 원격 추적 브랜치를 나열합니다.
여기:
git branch --sort=-committerdate
또는 (깃 2.19에서 아래 참조)
# if you are sure to /always/ want to see branches ordered by commits:
git config --global branch.sort -committerdate
git branch
Karthik Nayak ( )의 commit 9e46833 (2015 년 10 월 30 일) 도 참조하십시오 .
도움 : Junio C Hamano ( ) . (의해 병합 Junio C 하마노 - - 에 415095f 커밋KarthikNayak
gitster
gitster
2015 11월 3일)
숫자 값에 따라 정렬 할 때 (예 : --sort=objectsize
할 때 두 심판이 같은 값을 가질 때 폴백 비교가 없습니다. 이로 인해 Johannes Sixt ( $ gmane / 280117 )가 지적한 바와 같이 예기치 않은 결과가 발생할 수 있습니다 (즉, 동일한 값으로 참조 목록을 나열하는 순서를 미리 결정할 수 없음 ).
따라서 다른 기준이 같을 때마다 refname을 기반으로 알파벳 비교로 대체됩니다 .
$ git branch --sort=objectsize
* (HEAD detached from fromtag)
branch-two
branch-one
master
Git 2.19에서는 기본적으로 정렬 순서를 설정할 수 있습니다. 이미
git branch
설정이 branch.sort
되어있는 것과 같은 설정을 지원합니다 .
참조 560ae1c 커밋 에 의해 (2018 8월 16일) 사무엘 Maftoul를 (``) . (가 합병 Junio C 하마노 - - 에 d89db6f 커밋 , 2018년 8월 27일)git tag
tag.sort
gitster
branch.sort:
이 변수는로 표시 될 때 분기의 정렬 순서를 제어합니다 git-branch
.
"없이--sort=<value>
"옵션을 제공 이 변수의 값이 기본값으로 사용됩니다.
원격 브랜치를 나열하려면 git branch -r --sort=objectsize
. -r
플래그는 대신 현지 지사의 원격 지점을 나열됩니다.
Git 2.27 (Q2 2020), " git branch
"및 기타 "for-each-ref
"변형 --sort=<key>
은 우선 순위가 높은 순서대로 여러 옵션을 허용 했지만 "--ignore-case
"처리 및 refname과의 타이 브레이킹이 수정되었습니다.
Jeff King ( )의 commit 7c5045f , commit 76f9e56 (2020 년 5 월 3 일)을 참조하십시오 . (가 합병 - Junio C 하마노 - 에 6de1630 커밋 2020 08 월)peff
gitster
ref-filter
: 모든 사용자 정렬 후에 만 대체 참조 이름 정렬을 적용합니다.
서명자 : Jeff King
Commit 9e468334b4 ( " ref-filter
: 알파벳 비교에 대한 대체", 2015-10-30, Git v2.7.0-rc0- 배치 # 10에 나열된 병합 )는 ref-filter의 정렬을 참조 이름 비교와 비교하도록 가르쳤다.
그러나 모든 정렬 키가 소진 된 후가 아니라 사용자 의 단일 " "키에 대한 비교 결과를 무시하여 잘못된 레벨에서 수행했습니다 .
--sort
이것은 하나의 " --sort
"옵션에 대해서는 올바르게 작동 했지만 여러 옵션에 대해서는 작동하지 않았습니다.
refname과 첫 번째 키의 관계를 끊고 두 번째 키를 전혀 평가하지 않습니다.
더 흥미로운 일을하기 위해 때때로이 대체를 적용했습니다! 문자열 비교가 필요한
" taggeremail
" 와 같은 필드의 strcmp()
경우 0 인 경우에도 결과를 반환 합니다.
그러나 " value
"와 같은 숫자 " "필드의 taggerdate
경우 대체를 적용했습니다. 이것이 바로 다중 정렬 테스트에서이를 놓친 이유입니다.taggeremail
입니다. 주요 비교로 됩니다.
이제 더 엄격한 테스트를 추가하여 시작하겠습니다. 두 개의 태그 이메일, 날짜 및 참조 이름의 모든 조합을 표현하는 커밋 세트가 있습니다. 그런 다음 정렬이 올바른 우선 순위로 적용되었음을 확인할 수 있으며 문자열과 값 비교기를 모두칩니다.
그것은 버그를 보여 주며, 수정은 간단합니다 : 폴백을 외부 compare_refs()
함수 로 옮기십시오.ref_sorting
키가 소진 된 .
외부 함수 "ignore_case"
에는 각 개별 ref_sorting
요소 의 일부이므로 플래그 가 없습니다 . 사용자의 키를 일치시키기 위해 사용하지 않았기 때문에 이러한 폴 백이 수행해야 할 작업에 대해 논란의 여지가 있습니다.
그러나 지금까지 우리는 그 깃발을 존중하려고 노력해 왔으므로 가장 침략적인 것은 계속 그렇게 노력하는 것입니다.
현재 코드의 모든 호출자는 모든 키에 대해 플래그를 설정하거나 아무것도 설정하지 않기 때문에 첫 번째 키에서 플래그를 가져올 수 있습니다. 사용자가 키의 대소 문자 구분을 실제로 뒤집을 수있는 가상의 세계에서, 우리는이 케이스를 담요 " --ignore-case
" 와 구분하기 위해 코드를 확장 할 수 있습니다 .