The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

05.08.2017 22:20  Выпуск распределенной системы управления исходными текстами Git 2.14.0

Состоялся выпуск распределенной системы управления исходными текстами Git 2.14.0. Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. Из проектов, разрабатываемых с использованием Git, можно отметить ядро Linux, Android, LibreOffice, Systemd, X.Org, Wayland, Mesa, GStreamer, Wine, Debian, DragonFly BSD, Perl, Eclipse, GNOME, KDE, Qt, Ruby on Rails, PostgreSQL, VideoLAN, PHP, Python, Xen, Minix.

По сравнению с прошлым выпуском в новую версию принято 727 изменений, подготовленных при участии 66 разработчиков, из которых 18 впервые приняли своё участие в разработке. Основные изменения:

  • В команде "git diff" по умолчанию задействован улучшенный алгоритм компоновки отступов, включающий дополнительную эвристику для корректного отображения логики изменений, в которых фигурируют повторяющиеся блоки. Для отключения эвристики в настройках следует указать "diff.indentHeuristic=false";
  • При обработке Perl-совместимых регулярных выражений добавлена поддержка JIT-компиляции и обеспечена возможность сборки с библиотекой PCRE v2, которая теперь рекомендована для применения (ранее в git поддерживалась только сборка с библиотекой PCRE v1, сопровождение которой теперь ограничивается исправлением проблем критического характера). Для сборки с PCRE v2 вместо "USE_LIBPCRE=Yes" следует указать "USE_LIBPCRE2=Yes";
  • Добавлена возможность настройки цветов имён текущей ветки и отслеживаемых внешних веток, отображаемых в выводе "git status --short --branch";
  • В команду "git clone" добавлена опция "--no-tags", позволяющая изначально не извлекать все теги и настроить tagopt, чтобы не следовать тегам при последующих выборках;
  • В "git archive --format=zip" обеспечена поддержка расширения zip64 для создания архивов, превышающих 4 Гб;
  • В "git reset" добавлена опция "--recurse-submodules" для рекурсивного обхода субмодулей;
  • В "git diff --submodule=diff" по умолчанию обеспечен рекурсивный обход вложенных субмодулей;
  • В "git repack" добавлена опция "--threads=n", указанное в которой число потоков также передаётся в pack-objects;
  • В "git send-email" задействован запуск обработчика sendemail-validate для проверки и при необходимости блокирования сообщений перед их отправкой;
  • Улучшено автоопределение путей, указанных при запуске команд вида "git cmdname --options" без их явного отделения от ревизий разделителем '--';
  • В "filter-branch" добавлен псевдофильтр "--setup" для определения функций и переменных, которые могут использоваться в других фильтрах;
  • В "git send-email" добавлены опции "--batch-size" и "--relogin-delay" для обхода ограничений почтовых серверов, лимитирующих число сообщений, которые можно отправить в рамках одного сеанса;
  • В "git pull --rebase --recurse-submodules" обеспечено выполнение операции rebase для ветки во всех привязанных субмодулях;
  • По аналогии с "git grep" в "git log" добавлена опция "-P" как синоним "--perl-regexp";
  • Добавленный в Git 2.13 код для выявления в Git-репозиториях известных коллизий в хэшах SHA-1 теперь интегрирован в git.git как субмодуль (это первый субмодуль в git.git). Для получения данного субмодуля следует клонировать git.git с опцией "--recurse-submodules".


  1. Главная ссылка к новости (https://lkml.org/lkml/2017/8/4...)
  2. OpenNews: Microsoft переводит разработку Windows на Git
  3. OpenNews: Выпуск распределенной системы управления исходными текстами Git 2.13.0
  4. OpenNews: GitLab запустил зеркало GNU Savannah
  5. OpenNews: Выпуск распределенной системы управления исходными текстами Git 2.12.0
Лицензия: CC-BY
Тип: Программы
Ключевые слова: git
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, Аноним, 06:09, 06/08/2017 [ответить] [смотреть все]
  • –2 +/
    Вот здорово, свежий гит выходит - и я уверен что никаких проблем с обновлением н... весь текст скрыт [показать]
     
     
  • 2.7, X4asd, 09:52, 08/08/2017 [^] [ответить] [смотреть все]  
  • +/
    > ...и я уверен что никаких проблем с обновлением не будет.

    это ты сходил на тренинг повышения чувства уверенности? :-D :-D

    я тебе по секрету скажу -- с обновлениями проблем не бывает почти всегда -- это штатная процедура.

    в независимости от твоей уверенности.

    особенно если читать release notes перед обновлением

     
  • 1.3, freehck, 11:17, 06/08/2017 [ответить] [смотреть все]  
  • +3 +/
    > В "git reset" добавлена опция "--recurse-submodules" для рекурсивного обхода субмодулей;

    Бомба.

    > По аналогии с "git grep" в "git log" добавлена опция "-P" как синоним "--perl-regexp";

    Отлично. Теперь ждём, когда обёртки подхватят. Было бы очень здорово отфильтровать в логе инфу сразу по нескольким багам.

     
     
  • 2.4, MadeInRussia, 21:24, 06/08/2017 [^] [ответить] [смотреть все]  
  • +4 +/
    >> По аналогии с "git grep" в "git log" добавлена опция "-P" как синоним "--perl-regexp";
    > Отлично. Теперь ждём, когда обёртки подхватят. Было бы очень здорово отфильтровать в логе инфу сразу по нескольким багам.

    Так это же уже раньше было, просто в виде "--perl-regexp", сейчас просто добавили сокращенный флаг "-P". Если обёртки хотели, они уже могли и раньше это использовать.

     
     
  • 3.5, freehck, 11:25, 07/08/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    > Так это же уже раньше было, просто в виде "--perl-regexp", сейчас просто
    > добавили сокращенный флаг "-P". Если обёртки хотели, они уже могли и
    > раньше это использовать.

    Увы, не везде ещё. Юзаю последний стабильный релиз (март 2017) magit 2.10.3, --perl-regexp ещё не завезли. Впрочем, есть интеграция с git log --grep, но я как-то не сообразил, как мне там "или" проставить: шаблоны типа "bug-1|bug-2" или "bug-(1|2)" не работают, увы.

    Но тем не менее радует внимание апстрима к этой фиче. Вообще, чем дожидаться её интеграции в обёртки, возможно, имеет смысл просто взять и написать. Но время, время... )

    UPD: Ваше сообщение сподвигло меня на ещё одну проверку magit. Оказывается, шаблон "bug-1\|bug-2" работает. В прошлый раз у меня как-то не возникло мысли о необходимости экранирования этого символа. Короче, спасибо!

     
     
  • 4.6, Led, 23:15, 07/08/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    > Оказывается, шаблон "bug-1\|bug-2" работает. В прошлый раз у меня как-то не возникло мысли
    > о необходимости экранирования этого символа. Короче, спасибо!

    Его и в grep(1), и в sed(1) надо экранировать, чтоб работало как ты хотел.
    Просто в grep(1) можно использовать '-E', а в sed(1) - '-r', чтоб не экранировать, но это уже так - "расширения"...

     
     
  • 5.10, freehck, 13:29, 08/08/2017 [^] [ответить] [смотреть все]  
  • +/
    > Просто в grep(1) можно использовать '-E', чтоб не экранировать, но это уже так - "расширения"...

    Во. Сколько нового узнаёшь порой из комментариев на OpenNet. )

    А я-то всегда, когда нужен был пайп, использовал egrep. Теперь внимательнее почитал man по части ERE. Спасибо. Буду знать.

     
  • 4.8, X4asd, 10:00, 08/08/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    > Увы, не везде ещё. Юзаю последний стабильный релиз (март 2017) magit 2.10.3, --perl-regexp ещё не завезли.

    тоже мне новость! любители IDE (в данном случае Emacs в качестве IDE) как обычно страдают от устаревших версий поведений своих IDE-компонентов!

    всегда так было, и всега IDE-шники ели свой кактус, производя попутно низкокачественный прогаммный код.

     
     
  • 5.9, freehck, 13:22, 08/08/2017 [^] [ответить] [смотреть все]  
  • +/
    Толсто. :/

    Во-первых, тот же Magit в "Emacs как IDE" имеет ряд фишек, которых нет в git cli. Например, в консольной версии git нет возможности оперировать кусками (hunk-ами). То бишь в magit ты можешь выбрать конкретный ханк конкретного коммита и ревертнуть только его. В консоли же -- либо весь коммит, либо руками ворочай.

    Во-вторых, задача IDE -- мелкая помощь в работе: подсветка синтаксиса и парных конструкций (типа скобок, if-ов и т.п.), автодополнение имён переменных, автоматическая расстановка отступов, подсветка ошибок на лету. Качество кода и скорость его написания от этого только выигрывают. Странно винить IDE в том, в чём по сути надо винить криворукую макаку, возомнившую себя программистом.

     
     
  • 6.11, Led, 21:48, 08/08/2017 [^] [ответить] [смотреть все]  
  • +/
    > Во-первых, тот же Magit в "Emacs как IDE" имеет ряд фишек, которых
    > нет в git cli. Например, в консольной версии git нет возможности
    > оперировать кусками (hunk-ами). То бишь в magit ты можешь выбрать конкретный
    > ханк конкретного коммита и ревертнуть только его. В консоли же --
    > либо весь коммит, либо руками ворочай.

    Что-то вроде такого?
    git revert --no-commit HEAD
    git reset
    git checkout -p
    git add ...
    git commit -m ...

    Или в Magit какая-то магия используется?:)

     
     
  • 7.12, freehck, 22:50, 08/08/2017 [^] [ответить] [смотреть все]  
  • +/
    > Что-то вроде такого?
    > git revert --no-commit HEAD
    > git reset
    > git checkout -p
    > git add ...
    > git commit -m ...
    > Или в Magit какая-то магия используется?:)

    Почти, только тут управление всё равно на уровне файла, а в magit, например, если у тебя в файле три изменения (ну допустим в 1й строчке, 100й и 200й), то ты можешь выбрать конкретный кусочек патча (ханк вокруг 100й строчки) и нажатием клавиши v его ревертнуть.

     
     
  • 8.13, Led, 23:41, 08/08/2017 [^] [ответить] [смотреть все]  
  • +/
    >[оверквотинг удален]
    >> git revert --no-commit HEAD
    >> git reset
    >> git checkout -p
    >> git add ...
    >> git commit -m ...
    >> Или в Magit какая-то магия используется?:)
    > Почти, только тут управление всё равно на уровне файла, а в magit,
    > например, если у тебя в файле три изменения (ну допустим в
    > 1й строчке, 100й и 200й), то ты можешь выбрать конкретный кусочек
    > патча (ханк вокруг 100й строчки) и нажатием клавиши v его ревертнуть.

    Так и здесь по "ханкам": "git checkout -p" как раз это и делает.

     
     
  • 9.15, freehck, 11:37, 09/08/2017 [^] [ответить] [смотреть все]  
  • +/
    > Так и здесь по "ханкам": "git checkout -p" как раз это и делает.

    Посмотрел. Здорово, не знал, что в консольном git есть такое. Да, пожалуй, это почти оно.

    Единственное что, всё-таки тут надо сначала ревертнуть целиком коммит, ресетнуть его, а потом выкинуть все ханки коммита, кроме того, который надо оставить... В magit же просто переходишь в описание коммита в логе, выбираешь конкретный ханк, и его обращаешь.

    Да что там. Вот гляньте лучше скринкаст:
    http://exchange.freehck.ru/share/magit-hunk-screencast.ogv

     
     
  • 10.16, Andrey Mitrofanov, 12:43, 09/08/2017 [^] [ответить] [смотреть все]  
  • +/
    >> Так и здесь по "ханкам": "git checkout -p" как раз это и делает.
    > Посмотрел. Здорово, не знал, что в консольном git есть такое. Да, пожалуй,
    > это почти оно.

    https://www.kernel.org/pub/software/scm/git/docs/git-rebase.html#_splitting_co
    +оттуда ссылка на
    https://www.kernel.org/pub/software/scm/git/docs/git-add.html#_interactive_mod
    , поминающий слово "split" в команде patch

    ...не то, чтобы это хоть зачем-нибудь кому-то надо было...

    > Единственное что, всё-таки тут надо сначала ревертнуть целиком коммит, ресетнуть его, а

    Как это страшно!

    > http://exchange.freehck.ru/share/magit-hunk-screencast.ogv

    Кстати, учиться pip-у и js-у настоящим https://asciinema.org/browse образом.

     
  • 6.14, anonymous, 00:15, 09/08/2017 [^] [ответить] [смотреть все]  
  • +/
    >Например, в консольной версии git нет возможности оперировать кусками (hunk-ами).

    Что за "консольная версия git"?
    Какой-то фронтенд для гита?

    В гите есть возможность оперировать кусками (hunk-ами)
    Например
    git help add
    ...
    -p, --patch
               Interactively choose hunks of patch between the index and the work
               tree and add them to the index. This gives the user a chance to
               review the difference before adding modified contents to the index.
    ...

    или
    git help checkout
    ...
    -p, --patch
               Interactively select hunks ...

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor