git 2.7 (Q4 2015) запровадить сортування гілок, використовуючи безпосередньо git branch
:
Див. виконувати aa3bc55 , здійснювати aedcb7d , здійснювати 1511b22 , здійснювати f65f139 , ... (23 вересня 2015 р.), виконувати aedcb7d , виконувати 1511b22 , виконувати ca41799 (24 вересня 2015 р.) та фіксувати f65f139 , ... (23 вересня 2015 р.) від Картика Наяка ( KarthikNayak
) .
(Об’єднав Хуніо С Хамано - gitster
- у комітеті 7f11b48 , 15 жовтня 2015 р.)
Зокрема, зробити aedcb7d :
branch.c
: використовувати ref-filter
API ' '
Створіть API ' branch.c
' використовувати ' ref-filter
' для ітерації за допомогою сортування реф. Це видаляє більшу частину коду, який використовується при branch.c
заміні його викликами до ref-filter
бібліотеки.
Він додає опцію--sort=<key>
:
Сортувати на основі даного ключа.
Префікс -
для сортування у порядку зменшення значення.
Ви можете використовувати цю --sort=<key>
опцію кілька разів, і тоді останній ключ стає первинним ключем.
Підтримувані клавіші такі ж, як і вgit for-each-ref
.
Сортувати за замовчуванням порядок сортування на основі повного імені (включаючи refs/...
префікс). У цьому списку перераховано спочатку відокремлену HEAD (якщо вона присутня), потім локальні відділення та нарешті гілки дистанційного відстеження.
Тут:
git branch --sort=-committerdate
Або (див. Нижче з Git 2.19)
# if you are sure to /always/ want to see branches ordered by commits:
git config --global branch.sort -committerdate
git branch
Дивіться також зобов’язання 9e46833 (30 жовтня 2015 р.) Від Картика Наяка ( KarthikNayak
) .
Допомагає: Хуніо С Хамано ( gitster
) .
(Об’єднано Хуніо С Хамано - gitster
- у комітеті 415095f , 03 листопада 2015 р.)
При сортуванні за числовими значеннями (наприклад --sort=objectsize
) немає порівняльного резервного порівняння, коли обидва запису мають одне значення. Це може призвести до несподіваних результатів (тобто порядок лістингу рефінансування з рівними значеннями не може бути визначений заздалегідь), як вказував Йоханнес Сікст ( $ gmane / 280117 ).
Отже, повернення до алфавітного порівняння на основі імені, коли інший критерій є рівним .
$ git branch --sort=objectsize
* (HEAD detached from fromtag)
branch-two
branch-one
master
З Git 2.19 порядок сортування можна встановити за замовчуванням.
git branch
підтримує конфігурацію branch.sort
, наприклад git tag
, у якій вже було налаштовано tag.sort
.
Див. Комісію 560ae1c (16 серпня 2018 р.) Семюеля Мафтуля (``) .
(Об’єднав Хуніо С Хамано - gitster
- в комітеті d89db6f , 27 серпня 2018 р.)
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
" обробки та переривання зв'язків із іменем, які були виправлені.
Див. Команду 7c5045f , виконайте 76f9e56 (03 травня 2020 р.) Джеффа Кінга ( peff
) .
(Об'єднав Хуніо С Хамано - gitster
- у комітеті 6de1630 , 08 травня 2020 р.)
ref-filter
: застосувати сортування резервного перейменування лише після всіх типів користувачів
Підписався: Джефф Кінг
Фіксувати 9e468334b4 ( « ref-filter
: Відкат за алфавітом порівняння», 2015-10-30, Git v2.7.0-RC0 - злиття перерахованого в партії # 10 ) Сортувати Викладав реф-фільтр для відкоту до порівнює refnames.
Але це було зроблено на неправильному рівні, замінивши результат порівняння для одного " --sort
" ключа від користувача, а не після того, як усі ключі сортування вичерпані.
Це працювало правильно для одного " --sort
" варіанта, але не для декількох.
Ми розірвемо будь-які зв’язки в першому ключі з іменем і взагалі ніколи не будемо оцінювати другий ключ.
Щоб зробити речі ще цікавішими, ми застосовуємо цю резервну віддачу лише іноді!
Для поля типу " taggeremail
", яке вимагає порівняння рядків, ми справді повернемо результат strcmp()
, навіть якщо він був 0.
Але для числових " value
" полів на зразок " taggerdate
" ми застосували резервний запас. І тому наш тест на кілька сортування пропустив це: він використовується taggeremail
як основне порівняння.
Тож почнемо з додавання набагато більш жорсткого тесту. У нас буде набір комісій, що виражають кожну комбінацію двох тегерів електронної пошти, дат та імен. Тоді ми можемо підтвердити, що наш сортування застосовується з правильним пріоритетом, і ми будемо вражати як порівняння рядків, так і значень.
Це показує помилку, і виправлення просте: переміщення резервної системи до зовнішньої compare_refs()
функції, після того, як всі ref_sorting
клавіші вичерпані.
Зауважте, що у зовнішній функції у нас немає "ignore_case"
прапора, оскільки він є частиною кожного окремого ref_sorting
елемента. Дискусійним є те, що повинен робити такий резервний запас, оскільки ми не використовували ключі користувача для відповідності.
Але до цього часу ми намагалися поважати цей прапор, тому найменш інвазивна річ - намагатися продовжувати це робити.
Оскільки всі абоненти в поточному коді або встановлюють прапор для всіх клавіш, або для жодного, ми можемо просто витягнути прапор із першого ключа. У гіпотетичному світі, коли користувач дійсно може перевернути нечутливість клавіш окремо, ми можемо захотіти розширити код, щоб відрізнити цей випадок від ковдри " --ignore-case
".