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-filterAPI ' '
Створіть 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".