git 2.7 (Q4 2015) akan memperkenalkan pemilahan cabang menggunakan secara langsung git branch
:
Lihat commit aa3bc55 , commit aedcb7d , commit 1511b22 , commit f65f139 , ... (23 Sep 2015), commit aedcb7d , commit 1511b22 , commit ca41799 (24 Sep 2015), dan commit f65f139 , ... (23 Sep 2015) oleh Karthik Nayak ( KarthikNayak
) .
(Digabung oleh Junio C Hamano - gitster
- dalam komit 7f11b48 , 15 Okt 2015)
Secara khusus, lakukan aedcb7d :
branch.c
: gunakan ' ref-filter
' API
Buatlah ' branch.c
' gunakan ' ref-filter
' API untuk iterasi melalui penyortiran referensi. Ini menghapus sebagian besar kode yang digunakan di ' branch.c
' menggantikannya dengan panggilan ke ref-filter
perpustakaan ' '.
Itu menambahkan opsi--sort=<key>
:
Sortir berdasarkan kunci yang diberikan.
Awalan -
untuk mengurutkan dalam urutan nilai.
Anda dapat menggunakan --sort=<key>
opsi ini beberapa kali, dalam hal ini kunci terakhir menjadi kunci utama.
Kunci yang didukung sama dengan yang ada digit for-each-ref
.
Urutkan default pesanan ke pengurutan berdasarkan nama lengkap lengkap (termasuk refs/...
awalan). Daftar ini memisahkan HEAD (jika ada) terlebih dahulu, kemudian cabang lokal dan akhirnya cabang pelacakan jarak jauh.
Sini:
git branch --sort=-committerdate
Atau (lihat di bawah dengan Git 2.19)
# if you are sure to /always/ want to see branches ordered by commits:
git config --global branch.sort -committerdate
git branch
Lihat juga komit 9e46833 (30 Okt 2015) oleh Karthik Nayak ( KarthikNayak
) .
Dibantu-oleh: Junio C Hamano ( gitster
) .
(Digabung oleh Junio C Hamano - gitster
- dalam komit 415095f , 03 Nov 2015)
Ketika menyortir sesuai nilai numerik (mis. --sort=objectsize
) Tidak ada perbandingan mundur ketika kedua referensi memegang nilai yang sama. Ini dapat menyebabkan hasil yang tidak terduga (yaitu urutan daftar ref dengan nilai yang sama tidak dapat ditentukan sebelumnya) seperti yang ditunjukkan oleh Johannes Sixt ( $ gmane / 280117 ).
Oleh karena itu, mundur ke perbandingan alfabet berdasarkan refname setiap kali kriteria lainnya sama .
$ git branch --sort=objectsize
* (HEAD detached from fromtag)
branch-two
branch-one
master
Dengan Git 2.19, urutan pengurutan dapat diatur secara default.
git branch
mendukung konfigurasi branch.sort
, seperti git tag
, yang sudah memiliki konfigurasi tag.sort
.
Lihat commit 560ae1c (16 Agustus 2018) oleh Samuel Maftoul (``) .
(Digabung oleh Junio C Hamano - gitster
- di commit d89db6f , 27 Agu 2018)
branch.sort:
Variabel ini mengontrol pengurutan cabang-cabang ketika ditampilkan oleh git-branch
.
Tanpa opsi " --sort=<value>
" yang disediakan, nilai variabel ini akan digunakan sebagai default.
Untuk membuat daftar cabang jarak jauh, gunakan git branch -r --sort=objectsize
. The -r
flag menyebabkan untuk daftar cabang terpencil bukan cabang lokal.
Dengan Git 2.27 (Q2 2020), varian " git branch
" dan " for-each-ref
" lainnya menerima banyak --sort=<key>
opsi dalam urutan prioritas yang lebih tinggi, tetapi ada beberapa kerusakan di sekitar "--ignore-case
penanganan ", dan pemecahan ikatan dengan refname, yang telah diperbaiki.
Lihat komit 7c5045f , komit 76f9e56 (03 Mei 2020) oleh Jeff King ( peff
) .
(Digabung oleh Junio C Hamano - gitster
- dalam komit 6de1630 , 08 Mei 2020)
ref-filter
: terapkan sortir refname balik hanya setelah semua jenis pengguna
Ditandatangani oleh: Jeff King
Komit 9e468334b4 (" ref-filter
: fallback on alphabetical comparison", 2015-10-30, Git v2.7.0-rc0 - gabung yang tercantum dalam batch # 10 ) mengajarkan jenis filter ref untuk mundur untuk membandingkan refnames.
Tetapi ia melakukannya pada level yang salah, mengesampingkan hasil perbandingan untuk --sort
kunci " " tunggal dari pengguna, daripada setelah semua kunci sortir telah habis.
Ini bekerja dengan benar untuk satu " --sort
" opsi, tetapi tidak untuk beberapa opsi.
Kami akan memutuskan ikatan apa pun di kunci pertama dengan refname dan tidak pernah mengevaluasi kunci kedua sama sekali.
Untuk membuat masalah lebih menarik, kami hanya menerapkan fallback ini kadang-kadang!
Untuk bidang seperti " taggeremail
" yang membutuhkan perbandingan string, kami akan benar-benar mengembalikan hasil strcmp()
, bahkan jika itu adalah 0.
Tapi untuk value
bidang " " numerik seperti " taggerdate
", kami menerapkan fallback. Dan itulah mengapa uji multi-macam kami melewatkan ini: ini digunakan taggeremail
sebagai perbandingan utama.
Jadi mari kita mulai dengan menambahkan tes yang jauh lebih ketat. Kami akan memiliki seperangkat komit yang mengekspresikan setiap kombinasi dari dua email tagger, tanggal, dan nama ulang. Kemudian kami dapat mengonfirmasi bahwa pengurutan kami diterapkan dengan prioritas yang benar, dan kami akan mengenai pembanding string dan nilai.
Itu memang menunjukkan bug, dan perbaikannya sederhana: memindahkan fallback ke compare_refs()
fungsi luar , setelah semuaref_sorting
kunci telah habis.
Perhatikan bahwa dalam fungsi luar kita tidak memiliki "ignore_case"
bendera, karena itu adalah bagian dari setiap ref_sorting
elemen individu . Masih bisa diperdebatkan apa yang harus dilakukan mundur tersebut, karena kami tidak menggunakan kunci pengguna untuk mencocokkan.
Tetapi sampai sekarang kami telah berusaha untuk menghormati bendera itu, jadi hal yang paling tidak invasif adalah mencoba untuk terus melakukannya.
Karena semua penelepon dalam kode saat ini baik mengatur bendera untuk semua kunci atau tidak, kami hanya dapat menarik bendera dari kunci pertama. Di dunia hipotetis di mana pengguna benar-benar dapat membalik case-insensitivity kunci secara terpisah, kami mungkin ingin memperluas kode untuk membedakan case itu dari selimut " --ignore-case
".