URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 118180
[ Назад ]

Исходное сообщение
"Выпуск распределенной системы управления исходными текстами ..."

Отправлено opennews , 17-Авг-19 07:56 
Представлен (https://lkml.org/lkml/2019/8/16/877) выпуск распределенной системы управления исходными текстами Git 2.23.0 (http://git-scm.com/). Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов.


По сравнению с прошлым выпуском в новую версию принято 505 изменений, подготовленных при участии 77 разработчиков, из которых 26 впервые приняли участие в разработке. Основные новшества (https://github.blog/2019-08-16-highlights-from-git-2-23/):


-  Представлены экспериментальные команды "git switch" и "git restore", призванные разделить между собой малосвязанные возможности "git checkout", такие как манипуляция веток (переключение и создание) и восстановление файлов в рабочей директории ("git checkout $commit -- $filename") или сразу в staging area ("--staging", не имеет аналога в "git checkout"). Стоит отметить, что, в отличие от "git checkout", "git restore" удаляет неотслеживаемые файлы из восстанавливаемых директорий ("--no-overlay" по умолчанию).

-  Добавлена опция "git merge --quit", которая, аналогично "--abort", останавливает процесс слияния веток, но оставляет при этом рабочую директорию нетронутой. Данная опция может оказаться полезной в случае, если некоторые из уже внесённых изменений, внесённых в результате ручного слияния, предпочтительнее оформить в виде отдельного коммита.

-  Команды "git clone", "git fetch" и "git push" теперь учитывают наличие коммитов в связанных репозиториях (alternates (https://git-scm.com/docs/gitrepository-layout#Documentation/...));

-  Добавлены (https://github.com/git/git/commit/ae3f36dea16e51041c56ba9ed6...) опции "git blame --ignore-rev" и "--ignore-revs-file", позволяющие пропустить коммиты, в которых внесены незначимые правки (например, исправления форматирования);

-  Добавлена опция "git cherry-pick --skip" для пропуска конфликтного коммита (запоминаемый аналог последовательности "git reset && git cherry-pick --continue");

-  Добавлена настройка status.aheadBehind, фиксирующая опцию "git status --[no-]ahead-behind" на постоянной основе;

-  С данного выпуска "git log" по умолчанию учитывает изменения, внесённые mailmap, аналогично тому, как это уже происходит в git shortlog;

-  Существенно ускорена операция обновления представленного в 2.18 экспериментального кеша графа коммитов (core.commitGraph). Также ускорен git for-each-ref в случае использования нескольких шаблонов и сокращено количество вызовов auto-gc в "git fetch --multiple";

-  "git branch --list" теперь всегда показывает detached HEAD в самом начале списка независимо от локали.

URL: https://github.blog/2019-08-16-highlights-from-git-2-23/
Новость: https://www.opennet.ru/opennews/art.shtml?num=51300


Содержание

Сообщения в этом обсуждении
"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Doctor , 17-Авг-19 07:56 
Свитчинга веток, кстати говоря, довольно нужная вещь.
Если не про топику, хотелось бы иметь апи по получению инфы по задачам и пулл реквестам, ну тут уже надо к сервисам обращаться, ибо, насколько я знаю, у чистого гита эти полномочия всё

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Ydro , 17-Авг-19 11:12 
Тот случай, когда ИИ не справилось с грамматикой.

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Аноним , 17-Авг-19 15:22 
Чувак у тебя каша в голове

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Петкун , 17-Авг-19 16:40 
А кто такой Заболотный?

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Линус Торвальдс , 19-Авг-19 09:59 
Я

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено kravich , 17-Авг-19 15:17 
>"git switch" и "git restore", призванные разделить между собой малосвязанные возможности "git checkout"

Что делается-то, а...


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено хотел спросить , 17-Авг-19 18:09 
мало делается.. git давно надо было причесать и унифицировать между платформами

попробуй сделать реврайт автора без скрипта с гитхаба


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Crazy Alex , 17-Авг-19 20:30 
а что там делать? Создал патч, ресетнул, выставил в конфиге правильного автора, наложил дифф, закоммитил. Задача одноразовая, так что логично, что в одно действие не делается. Но заскриптовать при нужде - пять минут.

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Аноним , 17-Авг-19 21:11 
> попробуй сделать реврайт автора без скрипта с гитхаба

Если речь о послеледнем коммите, то commit --amend. Если речь обо всей истории, то filter-tree --env-filter. Зачем какой-то скрипт?


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено хотел спросить , 17-Авг-19 23:02 
>> попробуй сделать реврайт автора без скрипта с гитхаба
> Если речь о послеледнем коммите, то commit --amend. Если речь обо всей
> истории, то filter-tree --env-filter. Зачем какой-то скрипт?

как раз filter-tree --env-filter и используется
но почему нельзя сделать максимально удобным это всё?
намутили параметров ни разу не user-friendly
иногда ffmpeg проще, чем в гит


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Crazy Alex , 18-Авг-19 00:24 
Потому что экзотических задач - миллион, все удобными не сделаешь. Для экзотики есть базовый инструментарий, который комбинируешь и получаешь то, что надо

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Аноним , 18-Авг-19 09:04 
> как раз filter-tree --env-filter и используется
> но почему нельзя сделать максимально удобным это всё?

Оно достаточно удобно для такой редко встающей задачи и достаточно гибко, чтобы решать множество других редко встающих задач. И я хоть убей не понимаю, на кой тебе понадобился какой-то скрипт с гитхаба. Ты не в состоянии проверить значение переменной и изменить его?


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Аноним , 19-Авг-19 13:05 
> но почему нельзя сделать максимально удобным это всё?

Потому что нефиг вообще переписывать историю. Это так, если концептуально и глобально. А если локально, то вот тут вам правильно ответили, что есть специфические команды для специфических задач. Другое дело, что и базовые - весьма ... м.... своеобразны.


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено хотел спросить , 20-Авг-19 23:50 
>> но почему нельзя сделать максимально удобным это всё?
> Потому что нефиг вообще переписывать историю. Это так, если концептуально и глобально.
> А если локально, то вот тут вам правильно ответили, что есть
> специфические команды для специфических задач. Другое дело, что и базовые -
> весьма ... м.... своеобразны.

ну да давайте расскажите нам что нужно делать, а мы скажем вам куда вам идти


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Crazy Alex , 18-Авг-19 00:21 
amend тут не поможет. Точнее, надо ещё --reset-author

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Crazy Alex , 17-Авг-19 20:27 
Концептуально красиво, но на практике - совершенно один хрен. Утешает только то, что это не питонщики, совместимость ломать не станут.

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Аноним , 17-Авг-19 18:32 
Git - Самый убогий bloatware интерфейс командной строки.

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Линус Торвальдс , 19-Авг-19 09:58 
А мне нравится.

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Аноним , 17-Авг-19 19:40 
Долой git, даёшь Subversion.

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Аноним , 19-Авг-19 09:57 
Долой Subversion, даёшь ФинальнаяВерсия_ИсправленияОт311219_исправлено_доработать_ДляВаси_v079_проект.ZIP

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Аноним , 17-Авг-19 23:11 
Гит норм. Ни разу не подводил. Правда, пару раз перезатирал историю ребейзом, и

Но кто никогда не чудил с ребейзом - пусть первый бросит в меня камень


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Michael Shigorin , 18-Авг-19 02:58 
https://tomayko.com/writings/the-thing-about-git :-)

Ну и да, git rebase -i -- это такая бензопила, у меня привычка уже на всякий сперва затарить копию репозитория в сторонку, хоть и про git reflog в курсе...


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено имя , 18-Авг-19 03:10 
Подождите, *интерактивный* rebase — бензопила как раз более простая, тупо исполняет инструкции «положить в стопку» и «смешать, но не взбалтывать» как написано. С ним-то вы как умудряетесь довести дело до cp -R?

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Michael Shigorin , 19-Авг-19 16:14 
> С ним-то вы как умудряетесь довести дело до cp -R?

Например, перестраивая порядок конфликтующих патчей и выравнивая к тому, как оно должно было быть.  Когда шло несколько параллельных изменений (или разработка и срочные мелочи там же), но в итоге лучше не мегапатч, а логическая цепочка преобразований.


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено пох. , 19-Авг-19 16:53 
а ведь у hg _этих_ проблем давным-давно нет...


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено хоп , 20-Авг-19 04:34 
современные погромисты за редким исключением не знают про существование hg

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено myhand , 18-Авг-19 09:07 
> https://tomayko.com/writings/the-thing-about-git :-)

Мда, в гит почитай каждая команда сделана по типу "сделай мне
зашибись".  Пару раз вляпывался в ситуацию, когда хочется закоммитить
только часть патча в рабочей копии, а до почитать man git-add
руки так и не дошли.  

> git rebase -i -- это такая бензопила, у меня привычка уже на всякий сперва затарить копию репозитория в сторонку

Что-то вы делаете сильно не так.  --abort никогда не вызывал проблем, если хочется
"все взад".  Если жалко работы по разрешению конфликтов - есть git-rerere.


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Michael Shigorin , 19-Авг-19 16:13 
>> git rebase -i -- это такая бензопила, у меня привычка уже на всякий сперва
>> затарить копию репозитория в сторонку
> Что-то вы делаете сильно не так.  --abort никогда не вызывал проблем,
> если хочется "все взад".

Возможно, десятилетием раньше его ещё просто не было, не помню...

> Если жалко работы по разрешению конфликтов - есть git-rerere.

А вот про эту зюку слышал, но так и не читал; спасибо за наводку, порой бы выручило, похоже.


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Аноним , 19-Авг-19 15:37 
> у меня привычка уже на всякий сперва затарить копию репозитория в сторонку

неужели простого
git tag before_terrible_rebase branch/to/rebase
не хватает?

Или эти действия сродни "посмотреть в зеркало", "плюнуть через плечо", "по дереву постучать"?


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Michael Shigorin , 19-Авг-19 16:09 
>> у меня привычка уже на всякий сперва затарить копию репозитория в сторонку
> git tag before_terrible_rebase branch/to/rebase

Это _другое_ действие -- после которого надо ещё этот временный мусор не забыть убрать, иначе затерявшийся тег на чём-то не том может неприятно цапнуть некоторое время спустя, особенно (не) попутешествовав по remote'ам; поэтому в таком плане предпочитаю не теги, а ветки.  Ну и лишний шум в reflog незачем, если буду откатываться -- у меня бывает по нескольку десятков таких налопаченных, но ещё не разобранных и не описанных как положено коммитов порой.

> Или эти действия сродни

Скорее про "некоторые ещё не делают бэкапы", если уж очень хочется сострить.


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Andrey Mitrofanov_N0 , 19-Авг-19 16:26 
>> git tag before_terrible_rebase branch/to/rebase
> Это _другое_ действие -- после которого надо ещё этот временный мусор не
> забыть убрать, иначе затерявшийся тег на чём-то не том может неприятно
>> Или эти действия сродни
> Скорее про "некоторые ещё не делают бэкапы", если уж очень хочется сострить.

Ну-дк, https://xkcd.com/1597/ как завещал Вкликий Линус .


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Аноним , 19-Авг-19 17:16 
> иначе затерявшийся тег на чём-то не том может неприятно цапнуть некоторое время спустя

Ты шутишь так чтоль?

После того как успешно rebase сделал кто тебе запрещает "git tag -d before_terrible_rebase"?
Тегов боишься - сделай ветку "git branch copy_before_rebase branch/to/rebase".

Но бэкап перед rebase. Вот уж действительно - "Заставь ****** молиться, он и лоб разобьет".

Перед "git clone" бэкап ещё не делаешь?


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Michael Shigorin , 19-Авг-19 17:18 
> Ты шутишь так чтоль?

Дело не в запретах, а в контекстах (можно "щёлкнуть" ими и забыть).  Впрочем, Ваш бисеровалютный лимит на сегодня исчерпан.


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено KonstantinB , 19-Авг-19 18:27 
Нормальная бензопила, удобная, если осилить.

Чтобы не доставать в случае приступа рукозадости из рефлога, сложные ребейзы делаю в отдельной веточке. :)


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Аноним , 21-Авг-19 10:42 
Точно так же отдельную ветку для ребейза делаю.

И после ребейза сравниваю старую и ребейзнутую ветки. Должны быть одинаковы, если не выкидывал коммиты.
git diff старая_ветка..ребейзнутая ветка -- $(git diff --name-only master...старая_ветка)


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Andrey Mitrofanov_N0 , 21-Авг-19 11:41 
> git diff старая_ветка..ребейзнутая ветка -- $(git diff --name-only master...старая_ветка)

Ну, ты, б!, давид блеин  и  гари потер.

git diff спасённая_ветка..


"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Аноним , 21-Авг-19 13:54 
А вот и нет.
Так Вы захватите файлы которые не меняли в своих ветках.

"Выпуск распределенной системы управления исходными текстами ..."
Отправлено Аноним , 21-Авг-19 10:37 
> и восстановление файлов в рабочей директории ("git checkout $commit -- $filename") или сразу в staging area

При checkout и было всегда "сразу в staging area", а уж потом в working directory.
И вообще checkout это синхронизация рабочей директории с индексом.