* [devel] Git: как правильно избавиться от патча в виде бранча ?
@ 2015-09-08 6:58 Sergey Afonin
2015-09-11 11:50 ` Aleksey Avdeev
0 siblings, 2 replies; 7+ messages in thread
From: Sergey Afonin @ 2015-09-08 6:58 UTC (permalink / raw)
To: devel
Приветствую.
В некоторых репозитариях патчи оформлены в виде отдельных
бранчей. Например, Cyrus-IMAP:
* master
patches/alt/003-cyradm
patches/alt/004-configs
patches/alt/011-rehash_fix_pathes
patches/alt/012-getline
patches/debian/007-fix_docs
patches/debian/008-clean_socket_closes
patches/debian/010-update_perlcalling.sh
patches/other/001-flock
patches/other/005-autocreate
upstream
Пришло время избавиться от "patches/other/005-autocreate".
Он мерджится в patches/debian/007-fix_docs (.gear/merge):
merge: upstream patches/other/001-flock
merge: patches/other/001-flock patches/alt/003-cyradm
merge: patches/alt/003-cyradm patches/alt/004-configs
merge: patches/alt/004-configs patches/other/005-autocreate
merge: patches/other/005-autocreate patches/debian/007-fix_docs
merge: patches/debian/007-fix_docs patches/debian/008-clean_socket_closes
merge: patches/debian/008-clean_socket_closes patches/debian/010-update_perlcalling.sh
merge: patches/debian/010-update_perlcalling.sh patches/alt/011-rehash_fix_pathes
merge: patches/alt/011-rehash_fix_pathes patches/alt/012-getline
merge: patches/alt/012-getline master
Попытка его пропустить приводит к лишним конфликтам при попытке
смерджить patches/alt/004-configs напрямую в patches/debian/007-fix_docs,
что, в общем-то, понятно.
Вопрос: есть ли какой-то способ удалить бранч просто, или надо,
действительно, конфликт руками разбирать ?
--
С уважением, Сергей Афонин.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] Git: как правильно избавиться от патча в виде бранча ?
@ 2015-09-08 12:15 ` Sergey Afonin
0 siblings, 0 replies; 7+ messages in thread
From: Sergey Afonin @ 2015-09-08 12:15 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Tuesday 08 September 2015, akv@altlinux.org wrote:
>> Попытка его пропустить приводит к лишним конфликтам при попытке
>> смерджить patches/alt/004-configs напрямую в patches/debian/007-fix_docs,
>> что, в общем-то, понятно.
> Простите , я не совсем понял вопрос.
> А чем не устраивает git branch -d/-D ?
Тем, что отквочено. Удалить-то его можно, но старая версия уже
смерджена в следующий. Честно говоря, я не понял смысл этой
структуры, как таковой. Может быть, изначально предполагалось,
что эти бранчи мерджатся только с upstream, а между собой и в
master только в момент сборки ?
--
С уважением, Сергей Афонин.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] Git: как правильно избавиться от патча в виде бранча ?
2015-09-08 6:58 [devel] Git: как правильно избавиться от патча в виде бранча ? Sergey Afonin
@ 2015-09-11 11:50 ` Aleksey Avdeev
2015-09-22 7:08 ` Sergey Afonin
1 sibling, 1 reply; 7+ messages in thread
From: Aleksey Avdeev @ 2015-09-11 11:50 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 431 bytes --]
08.09.2015 09:58, Sergey Afonin пишет:
> Приветствую.
>
> В некоторых репозитариях патчи оформлены в виде отдельных
> бранчей. Например, Cyrus-IMAP:
>
...
> Вопрос: есть ли какой-то способ удалить бранч просто, или надо,
> действительно, конфликт руками разбирать ?
Если патч не сильно большой, то как правило помогает git revert его
коммитов (+ решение конфликтов от наслоений).
--
С уважением. Алексей.
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 278 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] Git: как правильно избавиться от патча в виде бранча ?
2015-09-11 11:50 ` Aleksey Avdeev
@ 2015-09-22 7:08 ` Sergey Afonin
2015-09-22 10:12 ` Aleksey Avdeev
2015-09-22 10:39 ` Michael Shigorin
0 siblings, 2 replies; 7+ messages in thread
From: Sergey Afonin @ 2015-09-22 7:08 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Friday 11 September 2015, Aleksey Avdeev wrote:
> Если патч не сильно большой, то как правило помогает git revert
> его коммитов (+ решение конфликтов от наслоений).
А есть способ их легко найти ? Или только лог смотреть и искать по
описанию ?
--
С уважением, Сергей Афонин.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] Git: как правильно избавиться от патча в виде бранча ?
2015-09-22 7:08 ` Sergey Afonin
@ 2015-09-22 10:12 ` Aleksey Avdeev
2015-10-13 13:47 ` Sergey Afonin
2015-09-22 10:39 ` Michael Shigorin
1 sibling, 1 reply; 7+ messages in thread
From: Aleksey Avdeev @ 2015-09-22 10:12 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 1493 bytes --]
22.09.2015 10:08, Sergey Afonin пишет:
> On Friday 11 September 2015, Aleksey Avdeev wrote:
>
>> Если патч не сильно большой, то как правило помогает git revert
>> его коммитов (+ решение конфликтов от наслоений).
>
> А есть способ их легко найти ? Или только лог смотреть и искать по
> описанию ?
Я обычно использую 2 способа:
1. Если удаляемый патч выделен в отдельный бранч
(patches/other/005-autocreate в вашем случаи), то помогает запуск gitk
--all и проход по истории бранча, содержащий удаляемый патч. Часто так
можно быстро найти все существенные коммиты бранча.
2. Несколько более муторый способ (но и более надёжный):
а) Отобразить фактические изменения происходящие при мерже бранча с патчем:
$ git diff <merge_commit>{^,}
б) Отображаем коммиты, в которых происходят похожие изменения:
$ git log -S '<подстрока>' <бранч> -- <файл>
где:
<подстрока> -- подстрока нового варианта одной из изменённых строк;
<бранч> -- бранч с патчем (patches/other/005-autocreate);
<файл> -- изменённый файл.
в) Просмотр полученных коммитов в gitk -- высока вероятность что один из
них тот, что нужен для git revert (или он находится в их окрестностях).
Примечания:
1. Помимо поиска по подстроке git log позволяет искать и по регулярному
выражению.
2. gitk позволяет простым образом выделить коммиты где:
а) изменялся заданный файл;
б) добавлялась/удалялась строка, содержащая заданную подстроку.
--
С уважением. Алексей.
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 278 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] Git: как правильно избавиться от патча в виде бранча ?
2015-09-22 7:08 ` Sergey Afonin
2015-09-22 10:12 ` Aleksey Avdeev
@ 2015-09-22 10:39 ` Michael Shigorin
1 sibling, 0 replies; 7+ messages in thread
From: Michael Shigorin @ 2015-09-22 10:39 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Tue, Sep 22, 2015 at 11:08:26AM +0400, Sergey Afonin wrote:
> > Если патч не сильно большой, то как правило помогает git
> > revert его коммитов (+ решение конфликтов от наслоений).
> А есть способ их легко найти ? Или только лог смотреть и искать
> по описанию ?
Помнится, в Etersoft делали gitum, даже рассказывали в Обнинске;
где живёт и чем закончилось, не помню.
--
---- WBR, Michael Shigorin / http://altlinux.org
------ http://opennet.ru / http://anna-news.info
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] Git: как правильно избавиться от патча в виде бранча ?
2015-09-22 10:12 ` Aleksey Avdeev
@ 2015-10-13 13:47 ` Sergey Afonin
0 siblings, 0 replies; 7+ messages in thread
From: Sergey Afonin @ 2015-10-13 13:47 UTC (permalink / raw)
To: ALT Linux Team development discussions
On Tuesday 22 September 2015, Aleksey Avdeev wrote:
> а) Отобразить фактические изменения происходящие при мерже бранча
> с патчем:
>
> $ git diff <merge_commit>{^,}
>
> б) Отображаем коммиты, в которых происходят похожие изменения:
>
> $ git log -S '<подстрока>' <бранч> -- <файл>
Так оказалось проще. На всякий случай, напишу запишу тут
последовательность после нахождения коммита, вдруг пригодится.
1. Нашёлся коммит 627ccbb6e09bbcbabace38ec6d3a0b8dbd613186
2. Задействованная последовательность мерджей (избавляемся от autocreate):
patches/alt/004-configs -> patches/other/005-autocreate
patches/other/005-autocreate -> patches/debian/007-fix_docs
$ git checkout patches/debian/007-fix_docs
$ git revert 627ccbb6e09bbcbabace38ec6d3a0b8dbd613186
error: could not revert 627ccbb... Apply autocreate and autosieve patches for Cyrus IMAP Server 2.4.4
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
Тут случилась засада с конфликтом. На всякий случай, сверился с
аналогичным файлом (найден по наличию <<<<) из patches/alt/004-configs.
Фактически, можно было файл скопировать. Но это при условии,
что в patches/alt/004-configs ещё не смерджено ничего нового
после предыдущего раза, или известно, что этот файл не затронут.
$ git commit -a
В общем-то, всё, при очередном обновлении можно мерджить
patches/alt/004-configs -> patches/debian/007-fix_docs
Ну и, чтобы не мешался:
$ git branch -d patches/other/005-autocreate
--
С уважением, Сергей Афонин.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-10-13 13:47 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-08 6:58 [devel] Git: как правильно избавиться от патча в виде бранча ? Sergey Afonin
2015-09-08 12:15 ` Sergey Afonin
2015-09-11 11:50 ` Aleksey Avdeev
2015-09-22 7:08 ` Sergey Afonin
2015-09-22 10:12 ` Aleksey Avdeev
2015-10-13 13:47 ` Sergey Afonin
2015-09-22 10:39 ` Michael Shigorin
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git