ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [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